< prev index next >

src/hotspot/share/interpreter/interpreterRuntime.cpp

Print this page
@@ -740,15 +740,16 @@
    current->last_frame().interpreter_frame_verify_monitor(elem);
  #endif
    Handle h_obj(current, elem->obj());
    assert(Universe::heap()->is_in_or_null(h_obj()),
           "must be null or an object");
+   ThreadOnMonitorEnter tme(current);
    ObjectSynchronizer::enter(h_obj, elem->lock(), current);
    assert(Universe::heap()->is_in_or_null(elem->obj()),
           "must be null or an object");
  #ifdef ASSERT
-   current->last_frame().interpreter_frame_verify_monitor(elem);
+   if (!current->preempting()) current->last_frame().interpreter_frame_verify_monitor(elem);
  #endif
  JRT_END
  
  // NOTE: We provide a separate implementation for the new lightweight locking to workaround a limitation
  // of registers in x86_32. This entry point accepts an oop instead of a BasicObjectLock*.

@@ -761,10 +762,11 @@
  JRT_ENTRY_NO_ASYNC(void, InterpreterRuntime::monitorenter_obj(JavaThread* current, oopDesc* obj))
    assert(LockingMode == LM_LIGHTWEIGHT, "Should call monitorenter() when not using the new lightweight locking");
    Handle h_obj(current, cast_to_oop(obj));
    assert(Universe::heap()->is_in_or_null(h_obj()),
           "must be null or an object");
+   ThreadOnMonitorEnter tme(current);
    ObjectSynchronizer::enter(h_obj, nullptr, current);
    return;
  JRT_END
  
  JRT_LEAF(void, InterpreterRuntime::monitorexit(BasicObjectLock* elem))
< prev index next >