612 |
612 |
613 // See if it is 2 unrelated classes. |
613 // See if it is 2 unrelated classes. |
614 const TypeOopPtr* p0 = r0->isa_oopptr(); |
614 const TypeOopPtr* p0 = r0->isa_oopptr(); |
615 const TypeOopPtr* p1 = r1->isa_oopptr(); |
615 const TypeOopPtr* p1 = r1->isa_oopptr(); |
616 if (p0 && p1) { |
616 if (p0 && p1) { |
|
617 Node* in1 = in(1)->uncast(); |
|
618 Node* in2 = in(2)->uncast(); |
|
619 AllocateNode* alloc1 = AllocateNode::Ideal_allocation(in1, NULL); |
|
620 AllocateNode* alloc2 = AllocateNode::Ideal_allocation(in2, NULL); |
|
621 if (MemNode::detect_ptr_independence(in1, alloc1, in2, alloc2, NULL)) { |
|
622 return TypeInt::CC_GT; // different pointers |
|
623 } |
617 ciKlass* klass0 = p0->klass(); |
624 ciKlass* klass0 = p0->klass(); |
618 bool xklass0 = p0->klass_is_exact(); |
625 bool xklass0 = p0->klass_is_exact(); |
619 ciKlass* klass1 = p1->klass(); |
626 ciKlass* klass1 = p1->klass(); |
620 bool xklass1 = p1->klass_is_exact(); |
627 bool xklass1 = p1->klass_is_exact(); |
621 int kps = (p0->isa_klassptr()?1:0) + (p1->isa_klassptr()?1:0); |
628 int kps = (p0->isa_klassptr()?1:0) + (p1->isa_klassptr()?1:0); |