Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/macro.cpp @ 223:1dd146f17531
6716441: error in meet with +DoEscapeAnalysis
Summary: Set instance_id to InstanceBot for InstPtr->meet(AryPtr) when types are not related.
Reviewed-by: jrose, never
author | kvn |
---|---|
date | Thu, 26 Jun 2008 13:34:00 -0700 |
parents | 1e026f8da827 |
children | 9c2ecc2ffb12 fab5f738c515 |
comparison
equal
deleted
inserted
replaced
222:2a1a77d3458f | 223:1dd146f17531 |
---|---|
318 return phi; | 318 return phi; |
319 } | 319 } |
320 | 320 |
321 // Search the last value stored into the object's field. | 321 // Search the last value stored into the object's field. |
322 Node *PhaseMacroExpand::value_from_mem(Node *sfpt_mem, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, Node *alloc) { | 322 Node *PhaseMacroExpand::value_from_mem(Node *sfpt_mem, BasicType ft, const Type *ftype, const TypeOopPtr *adr_t, Node *alloc) { |
323 assert(adr_t->is_instance_field(), "instance required"); | 323 assert(adr_t->is_known_instance_field(), "instance required"); |
324 uint instance_id = adr_t->instance_id(); | 324 int instance_id = adr_t->instance_id(); |
325 assert(instance_id == alloc->_idx, "wrong allocation"); | 325 assert((uint)instance_id == alloc->_idx, "wrong allocation"); |
326 | 326 |
327 int alias_idx = C->get_alias_index(adr_t); | 327 int alias_idx = C->get_alias_index(adr_t); |
328 int offset = adr_t->offset(); | 328 int offset = adr_t->offset(); |
329 Node *start_mem = C->start()->proj_out(TypeFunc::Memory); | 329 Node *start_mem = C->start()->proj_out(TypeFunc::Memory); |
330 Node *alloc_ctrl = alloc->in(TypeFunc::Control); | 330 Node *alloc_ctrl = alloc->in(TypeFunc::Control); |
352 } | 352 } |
353 } else if (mem->is_Store()) { | 353 } else if (mem->is_Store()) { |
354 const TypeOopPtr* atype = mem->as_Store()->adr_type()->isa_oopptr(); | 354 const TypeOopPtr* atype = mem->as_Store()->adr_type()->isa_oopptr(); |
355 assert(atype != NULL, "address type must be oopptr"); | 355 assert(atype != NULL, "address type must be oopptr"); |
356 assert(C->get_alias_index(atype) == alias_idx && | 356 assert(C->get_alias_index(atype) == alias_idx && |
357 atype->is_instance_field() && atype->offset() == offset && | 357 atype->is_known_instance_field() && atype->offset() == offset && |
358 atype->instance_id() == instance_id, "store is correct memory slice"); | 358 atype->instance_id() == instance_id, "store is correct memory slice"); |
359 done = true; | 359 done = true; |
360 } else if (mem->is_Phi()) { | 360 } else if (mem->is_Phi()) { |
361 // try to find a phi's unique input | 361 // try to find a phi's unique input |
362 Node *unique_input = NULL; | 362 Node *unique_input = NULL; |