--- a/hotspot/src/share/vm/opto/memnode.cpp Wed Jul 16 10:08:57 2008 -0700
+++ b/hotspot/src/share/vm/opto/memnode.cpp Wed Jul 16 16:04:39 2008 -0700
@@ -135,7 +135,9 @@
const TypePtr *t = mphi->adr_type();
if (t == TypePtr::BOTTOM || t == TypeRawPtr::BOTTOM ||
t->isa_oopptr() && !t->is_oopptr()->is_known_instance() &&
- t->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop) {
+ t->is_oopptr()->cast_to_exactness(true)
+ ->is_oopptr()->cast_to_ptr_type(t_oop->ptr())
+ ->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop) {
// clone the Phi with our address type
result = mphi->split_out_instance(t_adr, igvn);
} else {