src/share/vm/prims/jvm.cpp
Print this page
@@ -516,10 +516,16 @@
JVMWrapper("JVM_MonitorWait");
Handle obj(THREAD, JNIHandles::resolve_non_null(handle));
JavaThreadInObjectWaitState jtiows(thread, ms != 0);
if (JvmtiExport::should_post_monitor_wait()) {
JvmtiExport::post_monitor_wait((JavaThread *)THREAD, (oop)obj(), ms);
+
+ // The current thread already owns the monitor and it has not yet
+ // been added to the wait queue so the current thread cannot be
+ // made the successor. This means that the JVMTI_EVENT_MONITOR_WAIT
+ // event handler cannot accidentally consume an unpark() meant for
+ // the ParkEvent associated with this ObjectMonitor.
}
ObjectSynchronizer::wait(obj, ms, CHECK);
JVM_END