Mercurial > hg > truffle
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 |