< prev index next >

src/hotspot/share/prims/jvmtiEnvBase.hpp

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -299,14 +299,13 @@
   jvmtiError get_object_monitor_usage(JavaThread *calling_thread,
                                                     jobject object, jvmtiMonitorUsage* info_ptr);
   jvmtiError get_stack_trace(JavaThread *java_thread,
                                            jint stack_depth, jint max_count,
                                            jvmtiFrameInfo* frame_buffer, jint* count_ptr);
-  jvmtiError get_current_contended_monitor(JavaThread *calling_thread,
-                                                         JavaThread *java_thread,
+  jvmtiError get_current_contended_monitor(JavaThread *java_thread,
                                                          jobject *monitor_ptr);
-  jvmtiError get_owned_monitors(JavaThread *calling_thread, JavaThread* java_thread,
+  jvmtiError get_owned_monitors(JavaThread* java_thread,
                           GrowableArray<jvmtiMonitorStackDepthInfo*> *owned_monitors_list);
   jvmtiError check_top_frame(JavaThread* current_thread, JavaThread* java_thread,
                              jvalue value, TosState tos, Handle* ret_ob_h);
   jvmtiError force_early_return(JavaThread* java_thread, jvalue value, TosState tos);
 };

@@ -374,31 +373,23 @@
   jvmtiError result() { return _result; }
   void doit();
 };
 
 
-// VM operation to get monitor information with stack depth.
-class VM_GetOwnedMonitorInfo : public VM_Operation {
+// HandshakeClosure to get monitor information with stack depth.
+class GetOwnedMonitorInfoClosure : public HandshakeClosure {
 private:
   JvmtiEnv *_env;
-  JavaThread* _calling_thread;
-  JavaThread *_java_thread;
   jvmtiError _result;
   GrowableArray<jvmtiMonitorStackDepthInfo*> *_owned_monitors_list;
 
 public:
-  VM_GetOwnedMonitorInfo(JvmtiEnv* env, JavaThread* calling_thread,
-                                   JavaThread* java_thread,
-                                   GrowableArray<jvmtiMonitorStackDepthInfo*>* owned_monitor_list) {
-    _env = env;
-    _calling_thread = calling_thread;
-    _java_thread = java_thread;
-    _owned_monitors_list = owned_monitor_list;
-    _result = JVMTI_ERROR_NONE;
-  }
-  VMOp_Type type() const { return VMOp_GetOwnedMonitorInfo; }
-  void doit();
+  GetOwnedMonitorInfoClosure(JvmtiEnv* env,
+                             GrowableArray<jvmtiMonitorStackDepthInfo*>* owned_monitor_list)
+    : HandshakeClosure("GetOwnedMonitorInfo"),
+      _env(env), _result(JVMTI_ERROR_NONE), _owned_monitors_list(owned_monitor_list) {}
+  void do_thread(Thread *target);
   jvmtiError result() { return _result; }
 };
 
 
 // VM operation to get object monitor usage.

@@ -423,29 +414,24 @@
     _result = ((JvmtiEnvBase*) _env)->get_object_monitor_usage(_calling_thread, _object, _info_ptr);
   }
 
 };
 
-// VM operation to get current contended monitor.
-class VM_GetCurrentContendedMonitor : public VM_Operation {
+// HandshakeClosure to get current contended monitor.
+class GetCurrentContendedMonitorClosure : public HandshakeClosure {
 private:
   JvmtiEnv *_env;
-  JavaThread *_calling_thread;
-  JavaThread *_java_thread;
   jobject *_owned_monitor_ptr;
   jvmtiError _result;
 
 public:
-  VM_GetCurrentContendedMonitor(JvmtiEnv *env, JavaThread *calling_thread, JavaThread *java_thread, jobject *mon_ptr) {
-    _env = env;
-    _calling_thread = calling_thread;
-    _java_thread = java_thread;
-    _owned_monitor_ptr = mon_ptr;
-  }
-  VMOp_Type type() const { return VMOp_GetCurrentContendedMonitor; }
+  GetCurrentContendedMonitorClosure(JvmtiEnv *env, jobject *mon_ptr)
+    : HandshakeClosure("GetOneCurrentContendedMonitor"),
+      _env(env), _owned_monitor_ptr(mon_ptr),
+      _result(JVMTI_ERROR_THREAD_NOT_ALIVE) {}
   jvmtiError result() { return _result; }
-  void doit();
+  void do_thread(Thread *target);
 };
 
 // VM operation to get stack trace at safepoint.
 class VM_GetStackTrace : public VM_Operation {
 private:
< prev index next >