< prev index next >

src/cpu/aarch64/vm/templateTable_aarch64.cpp

Print this page
rev 12152 : [mq]: verification.patch

@@ -3742,10 +3742,11 @@
 
     __ bind(loop);
     // check if current entry is used
     // if not used then remember entry in c_rarg1
     __ ldr(rscratch1, Address(c_rarg3, BasicObjectLock::obj_offset_in_bytes()));
+    __ shenandoah_store_addr_check(rscratch1); // Invariant
     oopDesc::bs()->interpreter_read_barrier(_masm, rscratch1);
     __ cmp(zr, rscratch1);
     __ csel(c_rarg1, c_rarg3, c_rarg1, Assembler::EQ);
     // check if current entry is for same object
     __ cmp(r0, rscratch1);

@@ -3802,10 +3803,11 @@
   // The object has already been poped from the stack, so the
   // expression stack looks correct.
   __ increment(rbcp);
 
   // store object
+  __ shenandoah_store_addr_check(r0); // Invariant
   __ str(r0, Address(c_rarg1, BasicObjectLock::obj_offset_in_bytes()));
   __ lock_object(c_rarg1);
 
   // check to make sure this monitor doesn't cause stack overflow after locking
   __ save_bcp();  // in case of exception

@@ -3847,10 +3849,11 @@
     __ b(entry);
 
     __ bind(loop);
     // check if current entry is for same object
     __ ldr(rscratch1, Address(c_rarg1, BasicObjectLock::obj_offset_in_bytes()));
+    __ shenandoah_store_addr_check(rscratch1); // Invariant
     oopDesc::bs()->interpreter_read_barrier(_masm, rscratch1);
     __ cmp(r0, rscratch1);
     // if same object then stop searching
     __ br(Assembler::EQ, found);
     // otherwise advance to next entry
< prev index next >