< prev index next >

src/hotspot/share/prims/jvmtiEnv.cpp

Print this page

        

@@ -1712,17 +1712,17 @@
 
     // It's fine to update the thread state here because no JVMTI events
     // shall be posted for this PopFrame.
 
     // It is only safe to perform the direct operation on the current
-    // thread. All other usage needs to use a vm-safepoint-op for safety.
+    // thread. All other usage needs to use a handshake for safety.
     if (java_thread == JavaThread::current()) {
       state->update_for_pop_top_frame();
     } else {
-      VM_UpdateForPopTopFrame op(state);
-      VMThread::execute(&op);
-      jvmtiError err = op.result();
+      UpdateForPopTopFrameClosure op(state);
+      bool executed = Handshake::execute_direct(&op, java_thread);
+      jvmtiError err = executed ? op.result() : JVMTI_ERROR_THREAD_NOT_ALIVE;
       if (err != JVMTI_ERROR_NONE) {
         return err;
       }
     }
 

@@ -1798,13 +1798,13 @@
   // thread. All other usage needs to use a vm-safepoint-op for safety.
   if (java_thread == JavaThread::current()) {
     int frame_number = state->count_frames() - depth;
     state->env_thread_state(this)->set_frame_pop(frame_number);
   } else {
-    VM_SetFramePop op(this, state, depth);
-    VMThread::execute(&op);
-    err = op.result();
+    SetFramePopClosure op(this, state, depth);
+    bool executed = Handshake::execute_direct(&op, java_thread);
+    err = executed ? op.result() : JVMTI_ERROR_THREAD_NOT_ALIVE;
   }
   return err;
 } /* end NotifyFramePop */
 
 
< prev index next >