< prev index next >
src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp
Print this page
rev 54190 : [mq]: 8221083_c1_oop_cmp.patch
@@ -1453,17 +1453,15 @@
default:
ShouldNotReachHere();
break;
}
} else {
- if (opr2->is_address()) {
- DEBUG_ONLY( Unimplemented(); ) // Seems to be unused at the moment.
- LIR_Address *addr = opr2->as_address_ptr();
- BasicType type = addr->type();
- if (type == T_OBJECT) { __ ld(R0, index_or_disp(addr), addr->base()->as_register()); }
- else { __ lwa(R0, index_or_disp(addr), addr->base()->as_register()); }
- __ cmpd(BOOL_RESULT, opr1->as_register(), R0);
+ assert(opr1->type() != T_ADDRESS && opr2->type() != T_ADDRESS, "currently unsupported");
+ if (opr1->type() == T_OBJECT || opr1->type() == T_ARRAY) {
+ // There are only equal/notequal comparisons on objects.
+ assert(condition == lir_cond_equal || condition == lir_cond_notEqual, "oops");
+ __ cmpd(BOOL_RESULT, opr1->as_register(), opr2->as_register());
} else {
if (unsigned_comp) {
__ cmplw(BOOL_RESULT, opr1->as_register(), opr2->as_register());
} else {
__ cmpw(BOOL_RESULT, opr1->as_register(), opr2->as_register());
@@ -1495,18 +1493,10 @@
__ cmpd(BOOL_RESULT, opr1->as_register_lo(), opr2->as_register_lo());
}
} else {
ShouldNotReachHere();
}
- } else if (opr1->is_address()) {
- DEBUG_ONLY( Unimplemented(); ) // Seems to be unused at the moment.
- LIR_Address * addr = opr1->as_address_ptr();
- BasicType type = addr->type();
- assert (opr2->is_constant(), "Checking");
- if (type == T_OBJECT) { __ ld(R0, index_or_disp(addr), addr->base()->as_register()); }
- else { __ lwa(R0, index_or_disp(addr), addr->base()->as_register()); }
- __ cmpdi(BOOL_RESULT, R0, opr2->as_constant_ptr()->as_jint());
} else {
ShouldNotReachHere();
}
}
< prev index next >