< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page
rev 54190 : [mq]: 8221083_c1_oop_cmp.patch

*** 1453,1469 **** 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); } else { if (unsigned_comp) { __ cmplw(BOOL_RESULT, opr1->as_register(), opr2->as_register()); } else { __ cmpw(BOOL_RESULT, opr1->as_register(), opr2->as_register()); --- 1453,1467 ---- default: ShouldNotReachHere(); break; } } else { ! 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,1512 **** __ 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(); } } --- 1493,1502 ----
< prev index next >