# HG changeset patch # User kvn # Date 1257374630 28800 # Node ID dcdcc8c16e20e43b37f9f683c948daefa57b58f8 # Parent 09572fede9d12bc3e7a7d05b50d948976552ec5f 6896352: CTW fails hotspot/src/share/vm/opto/escape.cpp:1155 Summary: Always call C->get_alias_index(phase->type(address)) during parsing. Reviewed-by: never diff -r 09572fede9d1 -r dcdcc8c16e20 src/share/vm/opto/escape.cpp --- a/src/share/vm/opto/escape.cpp Wed Nov 04 14:16:20 2009 -0800 +++ b/src/share/vm/opto/escape.cpp Wed Nov 04 14:43:50 2009 -0800 @@ -537,8 +537,9 @@ } const TypeOopPtr *tinst = base_t->add_offset(t->offset())->is_oopptr(); - // Do NOT remove the next call: ensure an new alias index is allocated - // for the instance type + // Do NOT remove the next line: ensure a new alias index is allocated + // for the instance type. Note: C++ will not remove it since the call + // has side effect. int alias_idx = _compile->get_alias_index(tinst); igvn->set_type(addp, tinst); // record the allocation in the node map diff -r 09572fede9d1 -r dcdcc8c16e20 src/share/vm/opto/memnode.cpp --- a/src/share/vm/opto/memnode.cpp Wed Nov 04 14:16:20 2009 -0800 +++ b/src/share/vm/opto/memnode.cpp Wed Nov 04 14:43:50 2009 -0800 @@ -255,6 +255,13 @@ return NodeSentinel; // caller will return NULL } + // Do NOT remove or optimize the next lines: ensure a new alias index + // is allocated for an oop pointer type before Escape Analysis. + // Note: C++ will not remove it since the call has side effect. + if ( t_adr->isa_oopptr() ) { + int alias_idx = phase->C->get_alias_index(t_adr->is_ptr()); + } + #ifdef ASSERT Node* base = NULL; if (address->is_AddP())