< prev index next >
src/cpu/x86/vm/templateTable_x86.cpp
Print this page
rev 12152 : [mq]: verification.patch
@@ -4300,23 +4300,20 @@
Label entry, loop, exit;
__ movptr(rtop, monitor_block_top); // points to current entry,
// starting with top-most entry
__ lea(rbot, monitor_block_bot); // points to word before bottom
// of monitor block
- if (UseShenandoahGC && ShenandoahVerifyReadsToFromSpace) {
- __ jmp(entry);
- } else {
- __ jmpb(entry);
- }
+ __ jmpb_if_possible(entry);
__ bind(loop);
// check if current entry is used
__ cmpptr(Address(rtop, BasicObjectLock::obj_offset_in_bytes()), (int32_t) NULL_WORD);
// if not used then remember entry in rmon
__ cmovptr(Assembler::equal, rmon, rtop); // cmov => cmovptr
// check if current entry is for same object
__ movptr(rscratch1, Address(rtop, BasicObjectLock::obj_offset_in_bytes()));
+ __ shenandoah_store_addr_check(rscratch1); // Invariant
oopDesc::bs()->interpreter_read_barrier(_masm, rscratch1);
__ cmpptr(rax, rscratch1);
// if same object then stop searching
__ jccb(Assembler::equal, exit);
// otherwise advance to next entry
@@ -4363,10 +4360,11 @@
// The object has already been poped from the stack, so the
// expression stack looks correct.
__ increment(rbcp);
// store object
+ __ shenandoah_store_addr_check(rax); // Invariant
__ movptr(Address(rmon, BasicObjectLock::obj_offset_in_bytes()), rax);
__ lock_object(rmon);
// check to make sure this monitor doesn't cause stack overflow after locking
__ save_bcp(); // in case of exception
@@ -4404,19 +4402,16 @@
Label entry, loop;
__ movptr(rtop, monitor_block_top); // points to current entry,
// starting with top-most entry
__ lea(rbot, monitor_block_bot); // points to word before bottom
// of monitor block
- if (UseShenandoahGC && ShenandoahVerifyReadsToFromSpace) {
- __ jmp(entry);
- } else {
- __ jmpb(entry);
- }
+ __ jmpb_if_possible(entry);
__ bind(loop);
// check if current entry is for same object
__ movptr(rscratch1, Address(rtop, BasicObjectLock::obj_offset_in_bytes()));
+ __ shenandoah_store_addr_check(rscratch1); // Invariant
oopDesc::bs()->interpreter_read_barrier(_masm, rscratch1);
__ cmpptr(rax, rscratch1);
// if same object then stop searching
__ jcc(Assembler::equal, found);
// otherwise advance to next entry
< prev index next >