--- a/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp Wed Jun 13 06:35:04 2018 +0200
+++ b/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp Wed Jun 13 10:01:53 2018 +0200
@@ -1880,7 +1880,7 @@
// cpu register - cpu register
Register reg2 = opr2->as_register();
if (opr1->type() == T_OBJECT || opr1->type() == T_ARRAY) {
- __ cmp(reg1, reg2);
+ __ cmpoop(reg1, reg2);
} else {
assert(opr2->type() != T_OBJECT && opr2->type() != T_ARRAY, "cmp int, oop?");
__ cmpw(reg1, reg2);
@@ -1911,8 +1911,9 @@
break;
case T_OBJECT:
case T_ARRAY:
- imm = jlong(opr2->as_constant_ptr()->as_jobject());
- break;
+ jobject2reg(opr2->as_constant_ptr()->as_jobject(), rscratch1);
+ __ cmpoop(reg1, rscratch1);
+ return;
default:
ShouldNotReachHere();
imm = 0; // unreachable