1.1 --- a/src/share/vm/opto/subnode.cpp Thu Feb 28 15:40:09 2008 -0800 1.2 +++ b/src/share/vm/opto/subnode.cpp Fri Feb 29 09:57:18 2008 -0800 1.3 @@ -614,6 +614,13 @@ 1.4 const TypeOopPtr* p0 = r0->isa_oopptr(); 1.5 const TypeOopPtr* p1 = r1->isa_oopptr(); 1.6 if (p0 && p1) { 1.7 + Node* in1 = in(1)->uncast(); 1.8 + Node* in2 = in(2)->uncast(); 1.9 + AllocateNode* alloc1 = AllocateNode::Ideal_allocation(in1, NULL); 1.10 + AllocateNode* alloc2 = AllocateNode::Ideal_allocation(in2, NULL); 1.11 + if (MemNode::detect_ptr_independence(in1, alloc1, in2, alloc2, NULL)) { 1.12 + return TypeInt::CC_GT; // different pointers 1.13 + } 1.14 ciKlass* klass0 = p0->klass(); 1.15 bool xklass0 = p0->klass_is_exact(); 1.16 ciKlass* klass1 = p1->klass();