< prev index next >

src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp

Print this page
rev 10699 : [backport] Several AArch64 cleanups
rev 10703 : [backport] More AArch64 assembler cleanups
rev 10719 : [backport] Fix up superfluous changes against upstream

@@ -968,10 +968,11 @@
 
   stack2reg(src, temp, src->type());
   reg2stack(temp, dest, dest->type(), false);
 }
 
+
 void LIR_Assembler::mem2reg(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool wide, bool /* unaligned */) {
   LIR_Address* addr = src->as_address_ptr();
   LIR_Address* from_addr = src->as_address_ptr();
 
   if (addr->base()->type() == T_OBJECT) {

@@ -1066,10 +1067,11 @@
     }
 #endif
   }
 }
 
+
 void LIR_Assembler::prefetchr(LIR_Opr src) { Unimplemented(); }
 
 
 void LIR_Assembler::prefetchw(LIR_Opr src) { Unimplemented(); }
 

@@ -1152,10 +1154,12 @@
     }
     __ br(acond,*(op->label()));
   }
 }
 
+
+
 #if INCLUDE_ALL_GCS
 void LIR_Assembler::emit_opShenandoahWriteBarrier(LIR_OpShenandoahWriteBarrier* op) {
 
   Register obj = op->in_opr()->as_register();
   Register res = op->result_opr()->as_register();

@@ -1676,16 +1680,18 @@
     __ bind(nope);
   }
   __ membar(__ AnyAny);
 }
 
+
 // Return 1 in rscratch1 if the CAS fails.
 void LIR_Assembler::emit_compare_and_swap(LIR_OpCompareAndSwap* op) {
   assert(VM_Version::supports_cx8(), "wrong machine");
   Register addr = as_reg(op->addr());
   Register newval = as_reg(op->new_value());
   Register cmpval = as_reg(op->cmp_value());
+  Label succeed, fail, around;
   Register res = op->result_opr()->as_register();
 
   if (op->code() == lir_cas_obj) {
     assert(op->tmp1()->is_valid(), "must be");
     Register t1 = op->tmp1()->as_register();

@@ -2023,12 +2029,10 @@
         __ cmpw(reg1, reg2);
       }
       return;
     }
     if (opr2->is_double_cpu()) {
-      guarantee(opr2->type() != T_OBJECT && opr2->type() != T_ARRAY, "need acmp barrier?");
-      guarantee(opr1->type() != T_OBJECT && opr1->type() != T_ARRAY, "need acmp barrier?");
       // cpu register - cpu register
       Register reg2 = opr2->as_register_lo();
       __ cmp(reg1, reg2);
       return;
     }

@@ -2055,16 +2059,10 @@
       default:
         ShouldNotReachHere();
         break;
       }
 
-      if (opr2->type() == T_OBJECT || opr2->type() == T_ARRAY) {
-        jobject2reg(opr2->as_constant_ptr()->as_jobject(), rscratch1);
-        __ cmpoops(reg1, rscratch1);
-        return;
-      }
-
       if (Assembler::operand_valid_for_add_sub_immediate(imm)) {
         if (is_32bit)
           __ cmpw(reg1, imm);
         else
           __ cmp(reg1, imm);
< prev index next >