< prev index next >
src/hotspot/share/opto/subnode.cpp
Print this page
*** 832,844 ****
//=============================================================================
//------------------------------sub--------------------------------------------
// Simplify an CmpP (compare 2 pointers) node, based on local information.
// If both inputs are constants, compare them.
const Type *CmpPNode::sub( const Type *t1, const Type *t2 ) const {
! if (t1->isa_valuetype() || t2->isa_valuetype() ||
((t1->is_valuetypeptr() || t2->is_valuetypeptr()) &&
! (!t1->maybe_null() || !t2->maybe_null()))) {
// One operand is a value type and one operand is never null, fold to constant false
return TypeInt::CC_GT;
}
const TypePtr *r0 = t1->is_ptr(); // Handy access
--- 832,845 ----
//=============================================================================
//------------------------------sub--------------------------------------------
// Simplify an CmpP (compare 2 pointers) node, based on local information.
// If both inputs are constants, compare them.
const Type *CmpPNode::sub( const Type *t1, const Type *t2 ) const {
! if (ACmpOnValues != 3 &&
! (t1->isa_valuetype() || t2->isa_valuetype() ||
((t1->is_valuetypeptr() || t2->is_valuetypeptr()) &&
! (!t1->maybe_null() || !t2->maybe_null())))) {
// One operand is a value type and one operand is never null, fold to constant false
return TypeInt::CC_GT;
}
const TypePtr *r0 = t1->is_ptr(); // Handy access
*** 1104,1114 ****
Node* base = addP->in(AddPNode::Base);
if (base->is_top()) {
// RawPtr comparison
return NULL;
}
! assert(EnableValhalla && UsePointerPerturbation, "unexpected perturbed oop");
return in(1);
}
return NULL;
}
--- 1105,1115 ----
Node* base = addP->in(AddPNode::Base);
if (base->is_top()) {
// RawPtr comparison
return NULL;
}
! assert(EnableValhalla && ACmpOnValues == 1, "unexpected perturbed oop");
return in(1);
}
return NULL;
}
< prev index next >