Mercurial > hg > graal-compiler
comparison src/share/vm/opto/subnode.cpp @ 33:3288958bf319
6667580: Optimize CmpP for allocations
Summary: CmpP could be optimized out if it compares new allocated objects.
Reviewed-by: jrose, never, rasbold
author | kvn |
---|---|
date | Fri, 29 Feb 2008 09:57:18 -0800 |
parents | a61af66fc99e |
children | ba764ed4b6f2 |
comparison
equal
deleted
inserted
replaced
32:4d428c5b4cb3 | 33:3288958bf319 |
---|---|
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); |