< prev index next >

src/cpu/x86/vm/templateTable_x86.cpp

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

*** 4300,4322 **** 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); ! } __ 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())); 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 --- 4300,4319 ---- 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 ! __ 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,4372 **** --- 4360,4370 ---- // 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,4422 **** 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); ! } __ bind(loop); // check if current entry is for same object __ movptr(rscratch1, Address(rtop, BasicObjectLock::obj_offset_in_bytes())); 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 --- 4402,4417 ---- 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 ! __ 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 >