< prev index next >

src/hotspot/share/prims/jvmtiEnvBase.hpp

Print this page

330   JvmtiTagMap* tag_map_acquire() {
331     return AtomicAccess::load_acquire(&_tag_map);
332   }
333 
334   void release_set_tag_map(JvmtiTagMap* tag_map) {
335     AtomicAccess::release_store(&_tag_map, tag_map);
336   }
337 
338   // return true if event is enabled globally or for any thread
339   // True only if there is a callback for it.
340   bool is_enabled(jvmtiEvent event_type) {
341     return _env_event_enable.is_enabled(event_type);
342   }
343 
344 // Random Utilities
345 
346  protected:
347   // helper methods for creating arrays of global JNI Handles from local Handles
348   // allocated into environment specific storage
349   jthread * new_jthreadArray(int length, Handle *handles);
350   jthreadGroup * new_jthreadGroupArray(int length, objArrayHandle groups);
351 
352   // convert to a jni jclass from a non-null Klass*
353   jclass get_jni_class_non_null(Klass* k);
354 
355   jint count_locked_objects(JavaThread *java_thread, Handle hobj);
356   jvmtiError get_locked_objects_in_frame(JavaThread *calling_thread,
357                                    JavaThread* java_thread,
358                                    javaVFrame *jvf,
359                                    GrowableArray<jvmtiMonitorStackDepthInfo*>* owned_monitors_list,
360                                    jint depth, oop vthread = nullptr);
361  public:
362   static javaVFrame* jvf_for_thread_and_depth(JavaThread* java_thread, jint depth);
363 
364   // get a field descriptor for the specified class and field
365   static bool get_field_descriptor(Klass* k, jfieldID field, fieldDescriptor* fd);
366 
367   // check and skip frames hidden in mount/unmount transitions
368   static javaVFrame* skip_yield_frames_for_unmounted_vthread(oop vthread, javaVFrame* jvf);
369   static javaVFrame* check_and_skip_hidden_frames(bool is_in_VTMS_transition, javaVFrame* jvf);
370   static javaVFrame* check_and_skip_hidden_frames(JavaThread* jt, javaVFrame* jvf);

378   // get virtual thread last java vframe
379   static javaVFrame* get_vthread_jvf(oop vthread);
380 
381   // get carrier thread last java vframe
382   static javaVFrame* get_cthread_last_java_vframe(JavaThread* jt, RegisterMap* reg_map);
383 
384   // get platform thread state
385   static jint get_thread_state_base(oop thread_oop, JavaThread* jt);
386   static jint get_thread_state(oop thread_oop, JavaThread* jt);
387 
388   // get virtual thread state
389   static jint get_vthread_state(oop thread_oop, JavaThread* jt);
390 
391   // get platform or virtual thread state
392   static jint get_thread_or_vthread_state(oop thread_oop, JavaThread* jt);
393 
394   // enumerates the live threads in the given thread group
395   static jvmtiError get_live_threads(JavaThread* current_thread, Handle group_hdl, jint *count_ptr, Handle **thread_objs_p);
396 
397   // enumerates the subgroups in the given thread group
398   static jvmtiError get_subgroups(JavaThread* current_thread, Handle group_hdl, jint *count_ptr, objArrayHandle *group_objs_p);
399 
400   // JVMTI API helper functions which are called when target thread is suspended
401   // or at safepoint / thread local handshake.
402   static jint get_frame_count(javaVFrame* jvf);
403   jvmtiError get_frame_count(JavaThread* java_thread, jint *count_ptr);
404   jvmtiError get_frame_count(oop frame_oop, jint *count_ptr);
405   jvmtiError get_frame_location(javaVFrame* jvf, jint depth,
406                                 jmethodID* method_ptr, jlocation* location_ptr);
407   jvmtiError get_frame_location(JavaThread* java_thread, jint depth,
408                                 jmethodID* method_ptr, jlocation* location_ptr);
409   jvmtiError get_frame_location(oop vthread_oop, jint depth,
410                                 jmethodID* method_ptr, jlocation* location_ptr);
411   jvmtiError set_frame_pop(JvmtiThreadState* state, javaVFrame* jvf, jint depth);
412   jvmtiError clear_all_frame_pops(JvmtiThreadState* state);
413   jvmtiError get_object_monitor_usage(JavaThread* calling_thread,
414                                       jobject object, jvmtiMonitorUsage* info_ptr);
415   jvmtiError get_stack_trace(javaVFrame* jvf,
416                              jint stack_depth, jint max_count,
417                              jvmtiFrameInfo* frame_buffer, jint* count_ptr);
418   jvmtiError get_stack_trace(JavaThread* java_thread,

330   JvmtiTagMap* tag_map_acquire() {
331     return AtomicAccess::load_acquire(&_tag_map);
332   }
333 
334   void release_set_tag_map(JvmtiTagMap* tag_map) {
335     AtomicAccess::release_store(&_tag_map, tag_map);
336   }
337 
338   // return true if event is enabled globally or for any thread
339   // True only if there is a callback for it.
340   bool is_enabled(jvmtiEvent event_type) {
341     return _env_event_enable.is_enabled(event_type);
342   }
343 
344 // Random Utilities
345 
346  protected:
347   // helper methods for creating arrays of global JNI Handles from local Handles
348   // allocated into environment specific storage
349   jthread * new_jthreadArray(int length, Handle *handles);
350   jthreadGroup * new_jthreadGroupArray(int length, refArrayHandle groups);
351 
352   // convert to a jni jclass from a non-null Klass*
353   jclass get_jni_class_non_null(Klass* k);
354 
355   jint count_locked_objects(JavaThread *java_thread, Handle hobj);
356   jvmtiError get_locked_objects_in_frame(JavaThread *calling_thread,
357                                    JavaThread* java_thread,
358                                    javaVFrame *jvf,
359                                    GrowableArray<jvmtiMonitorStackDepthInfo*>* owned_monitors_list,
360                                    jint depth, oop vthread = nullptr);
361  public:
362   static javaVFrame* jvf_for_thread_and_depth(JavaThread* java_thread, jint depth);
363 
364   // get a field descriptor for the specified class and field
365   static bool get_field_descriptor(Klass* k, jfieldID field, fieldDescriptor* fd);
366 
367   // check and skip frames hidden in mount/unmount transitions
368   static javaVFrame* skip_yield_frames_for_unmounted_vthread(oop vthread, javaVFrame* jvf);
369   static javaVFrame* check_and_skip_hidden_frames(bool is_in_VTMS_transition, javaVFrame* jvf);
370   static javaVFrame* check_and_skip_hidden_frames(JavaThread* jt, javaVFrame* jvf);

378   // get virtual thread last java vframe
379   static javaVFrame* get_vthread_jvf(oop vthread);
380 
381   // get carrier thread last java vframe
382   static javaVFrame* get_cthread_last_java_vframe(JavaThread* jt, RegisterMap* reg_map);
383 
384   // get platform thread state
385   static jint get_thread_state_base(oop thread_oop, JavaThread* jt);
386   static jint get_thread_state(oop thread_oop, JavaThread* jt);
387 
388   // get virtual thread state
389   static jint get_vthread_state(oop thread_oop, JavaThread* jt);
390 
391   // get platform or virtual thread state
392   static jint get_thread_or_vthread_state(oop thread_oop, JavaThread* jt);
393 
394   // enumerates the live threads in the given thread group
395   static jvmtiError get_live_threads(JavaThread* current_thread, Handle group_hdl, jint *count_ptr, Handle **thread_objs_p);
396 
397   // enumerates the subgroups in the given thread group
398   static jvmtiError get_subgroups(JavaThread* current_thread, Handle group_hdl, jint *count_ptr, refArrayHandle *group_objs_p);
399 
400   // JVMTI API helper functions which are called when target thread is suspended
401   // or at safepoint / thread local handshake.
402   static jint get_frame_count(javaVFrame* jvf);
403   jvmtiError get_frame_count(JavaThread* java_thread, jint *count_ptr);
404   jvmtiError get_frame_count(oop frame_oop, jint *count_ptr);
405   jvmtiError get_frame_location(javaVFrame* jvf, jint depth,
406                                 jmethodID* method_ptr, jlocation* location_ptr);
407   jvmtiError get_frame_location(JavaThread* java_thread, jint depth,
408                                 jmethodID* method_ptr, jlocation* location_ptr);
409   jvmtiError get_frame_location(oop vthread_oop, jint depth,
410                                 jmethodID* method_ptr, jlocation* location_ptr);
411   jvmtiError set_frame_pop(JvmtiThreadState* state, javaVFrame* jvf, jint depth);
412   jvmtiError clear_all_frame_pops(JvmtiThreadState* state);
413   jvmtiError get_object_monitor_usage(JavaThread* calling_thread,
414                                       jobject object, jvmtiMonitorUsage* info_ptr);
415   jvmtiError get_stack_trace(javaVFrame* jvf,
416                              jint stack_depth, jint max_count,
417                              jvmtiFrameInfo* frame_buffer, jint* count_ptr);
418   jvmtiError get_stack_trace(JavaThread* java_thread,
< prev index next >