comparison src/share/vm/opto/memnode.cpp @ 1815:5867d89c129b

6982537: Crash in Node*step_through_mergemem Reviewed-by: kvn
author never
date Wed, 22 Sep 2010 13:01:12 -0700
parents 02f0a9b6f654
children 56601ef83436
comparison
equal deleted inserted replaced
1814:fd5d4527cdf5 1815:5867d89c129b
191 print_alias_types(); 191 print_alias_types();
192 assert(consistent, "adr_check must match alias idx"); 192 assert(consistent, "adr_check must match alias idx");
193 } 193 }
194 } 194 }
195 #endif 195 #endif
196 // TypeInstPtr::NOTNULL+any is an OOP with unknown offset - generally 196 // TypeOopPtr::NOTNULL+any is an OOP with unknown offset - generally
197 // means an array I have not precisely typed yet. Do not do any 197 // means an array I have not precisely typed yet. Do not do any
198 // alias stuff with it any time soon. 198 // alias stuff with it any time soon.
199 const TypeOopPtr *tinst = tp->isa_oopptr(); 199 const TypeOopPtr *toop = tp->isa_oopptr();
200 if( tp->base() != Type::AnyPtr && 200 if( tp->base() != Type::AnyPtr &&
201 !(tinst && 201 !(toop &&
202 tinst->klass()->is_java_lang_Object() && 202 toop->klass() != NULL &&
203 tinst->offset() == Type::OffsetBot) ) { 203 toop->klass()->is_java_lang_Object() &&
204 toop->offset() == Type::OffsetBot) ) {
204 // compress paths and change unreachable cycles to TOP 205 // compress paths and change unreachable cycles to TOP
205 // If not, we can update the input infinitely along a MergeMem cycle 206 // If not, we can update the input infinitely along a MergeMem cycle
206 // Equivalent code in PhiNode::Ideal 207 // Equivalent code in PhiNode::Ideal
207 Node* m = phase->transform(mmem); 208 Node* m = phase->transform(mmem);
208 // If transformed to a MergeMem, get the desired slice 209 // If transformed to a MergeMem, get the desired slice