< prev index next >
src/cpu/aarch64/vm/templateTable_aarch64.cpp
Print this page
rev 12152 : [mq]: verification.patch
*** 3742,3751 ****
--- 3742,3752 ----
__ 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,3811 ****
--- 3803,3813 ----
// 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,3856 ****
--- 3849,3859 ----
__ 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 >