< 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 >