src/hotspot/share/runtime/objectMonitor.cpp
changeset 59105 76ae9aa0e794
parent 58196 cea6839598e8
child 59156 14fa9e70ae71
--- a/src/hotspot/share/runtime/objectMonitor.cpp	Fri Nov 15 09:06:58 2019 +0800
+++ b/src/hotspot/share/runtime/objectMonitor.cpp	Thu Nov 14 22:36:40 2019 -0500
@@ -1267,6 +1267,10 @@
 
   int ret = OS_OK;
   int WasNotified = 0;
+
+  // Need to check interrupt state whilst still _thread_in_vm
+  bool interrupted = interruptible && jt->is_interrupted(false);
+
   { // State transition wrappers
     OSThread* osthread = Self->osthread();
     OSThreadWaitState osts(osthread, true);
@@ -1275,7 +1279,7 @@
       // Thread is in thread_blocked state and oop access is unsafe.
       jt->set_suspend_equivalent();
 
-      if (interruptible && (jt->is_interrupted(false) || HAS_PENDING_EXCEPTION)) {
+      if (interrupted || HAS_PENDING_EXCEPTION) {
         // Intentionally empty
       } else if (node._notified == 0) {
         if (millis <= 0) {