< prev index next >
src/hotspot/share/prims/jvmtiEnvBase.hpp
Print this page
rev 47674 : Port 09.17.Thread_SMR_logging_update from JDK9 to JDK10
rev 47676 : eosterlund, stefank CR - refactor code into threadSMR.cpp and threadSMR.hpp
rev 47677 : eosterlund CR - need more inline fixes.
*** 278,290 ****
// allocated into environment specific storage
jobject * new_jobjectArray(int length, Handle *handles);
jthread * new_jthreadArray(int length, Handle *handles);
jthreadGroup * new_jthreadGroupArray(int length, Handle *handles);
- // convert from JNIHandle to JavaThread *
- JavaThread * get_JavaThread(jthread jni_thread);
-
// convert to a jni jclass from a non-null Klass*
jclass get_jni_class_non_null(Klass* k);
jint count_locked_objects(JavaThread *java_thread, Handle hobj);
jvmtiError get_locked_objects_in_frame(JavaThread *calling_thread,
--- 278,287 ----
*** 295,310 ****
vframe* vframeFor(JavaThread* java_thread, jint depth);
public:
// get a field descriptor for the specified class and field
static bool get_field_descriptor(Klass* k, jfieldID field, fieldDescriptor* fd);
- // test for suspend - most (all?) of these should go away
- static bool is_thread_fully_suspended(JavaThread *thread,
- bool wait_for_suspend,
- uint32_t *bits);
-
// JVMTI API helper functions which are called at safepoint or thread is suspended.
jvmtiError get_frame_count(JvmtiThreadState *state, jint *count_ptr);
jvmtiError get_frame_location(JavaThread* java_thread, jint depth,
jmethodID* method_ptr, jlocation* location_ptr);
jvmtiError get_object_monitor_usage(JavaThread *calling_thread,
--- 292,302 ----
*** 358,375 ****
_state = state;
_result = JVMTI_ERROR_NONE;
}
VMOp_Type type() const { return VMOp_UpdateForPopTopFrame; }
jvmtiError result() { return _result; }
! void doit() {
! JavaThread* jt = _state->get_thread();
! if (Threads::includes(jt) && !jt->is_exiting() && jt->threadObj() != NULL) {
! _state->update_for_pop_top_frame();
! } else {
! _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
! }
! }
};
// VM operation to set frame pop.
class VM_SetFramePop : public VM_Operation {
private:
--- 350,360 ----
_state = state;
_result = JVMTI_ERROR_NONE;
}
VMOp_Type type() const { return VMOp_UpdateForPopTopFrame; }
jvmtiError result() { return _result; }
! void doit();
};
// VM operation to set frame pop.
class VM_SetFramePop : public VM_Operation {
private:
*** 388,406 ****
// Nested operation must be allowed for the VM_EnterInterpOnlyMode that is
// called from the JvmtiEventControllerPrivate::recompute_thread_enabled.
bool allow_nested_vm_operations() const { return true; }
VMOp_Type type() const { return VMOp_SetFramePop; }
jvmtiError result() { return _result; }
! void doit() {
! JavaThread* jt = _state->get_thread();
! if (Threads::includes(jt) && !jt->is_exiting() && jt->threadObj() != NULL) {
! int frame_number = _state->count_frames() - _depth;
! _state->env_thread_state((JvmtiEnvBase*)_env)->set_frame_pop(frame_number);
! } else {
! _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
! }
! }
};
// VM operation to get monitor information with stack depth.
class VM_GetOwnedMonitorInfo : public VM_Operation {
--- 373,383 ----
// Nested operation must be allowed for the VM_EnterInterpOnlyMode that is
// called from the JvmtiEventControllerPrivate::recompute_thread_enabled.
bool allow_nested_vm_operations() const { return true; }
VMOp_Type type() const { return VMOp_SetFramePop; }
jvmtiError result() { return _result; }
! void doit();
};
// VM operation to get monitor information with stack depth.
class VM_GetOwnedMonitorInfo : public VM_Operation {
*** 420,437 ****
_java_thread = java_thread;
_owned_monitors_list = owned_monitor_list;
_result = JVMTI_ERROR_NONE;
}
VMOp_Type type() const { return VMOp_GetOwnedMonitorInfo; }
! void doit() {
! _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
! if (Threads::includes(_java_thread) && !_java_thread->is_exiting()
! && _java_thread->threadObj() != NULL) {
! _result = ((JvmtiEnvBase *)_env)->get_owned_monitors(_calling_thread, _java_thread,
! _owned_monitors_list);
! }
! }
jvmtiError result() { return _result; }
};
// VM operation to get object monitor usage.
--- 397,407 ----
_java_thread = java_thread;
_owned_monitors_list = owned_monitor_list;
_result = JVMTI_ERROR_NONE;
}
VMOp_Type type() const { return VMOp_GetOwnedMonitorInfo; }
! void doit();
jvmtiError result() { return _result; }
};
// VM operation to get object monitor usage.
*** 474,490 ****
_java_thread = java_thread;
_owned_monitor_ptr = mon_ptr;
}
VMOp_Type type() const { return VMOp_GetCurrentContendedMonitor; }
jvmtiError result() { return _result; }
! void doit() {
! _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
! if (Threads::includes(_java_thread) && !_java_thread->is_exiting() &&
! _java_thread->threadObj() != NULL) {
! _result = ((JvmtiEnvBase *)_env)->get_current_contended_monitor(_calling_thread,_java_thread,_owned_monitor_ptr);
! }
! }
};
// VM operation to get stack trace at safepoint.
class VM_GetStackTrace : public VM_Operation {
private:
--- 444,454 ----
_java_thread = java_thread;
_owned_monitor_ptr = mon_ptr;
}
VMOp_Type type() const { return VMOp_GetCurrentContendedMonitor; }
jvmtiError result() { return _result; }
! void doit();
};
// VM operation to get stack trace at safepoint.
class VM_GetStackTrace : public VM_Operation {
private:
*** 507,525 ****
_frame_buffer = frame_buffer;
_count_ptr = count_ptr;
}
jvmtiError result() { return _result; }
VMOp_Type type() const { return VMOp_GetStackTrace; }
! void doit() {
! _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
! if (Threads::includes(_java_thread) && !_java_thread->is_exiting()
! && _java_thread->threadObj() != NULL) {
! _result = ((JvmtiEnvBase *)_env)->get_stack_trace(_java_thread,
! _start_depth, _max_count,
! _frame_buffer, _count_ptr);
! }
! }
};
// forward declaration
struct StackInfoNode;
--- 471,481 ----
_frame_buffer = frame_buffer;
_count_ptr = count_ptr;
}
jvmtiError result() { return _result; }
VMOp_Type type() const { return VMOp_GetStackTrace; }
! void doit();
};
// forward declaration
struct StackInfoNode;
*** 605,621 ****
_state = state;
_count_ptr = count_ptr;
}
VMOp_Type type() const { return VMOp_GetFrameCount; }
jvmtiError result() { return _result; }
! void doit() {
! _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
! JavaThread* jt = _state->get_thread();
! if (Threads::includes(jt) && !jt->is_exiting() && jt->threadObj() != NULL) {
! _result = ((JvmtiEnvBase*)_env)->get_frame_count(_state, _count_ptr);
! }
! }
};
// VM operation to frame location at safepoint.
class VM_GetFrameLocation : public VM_Operation {
private:
--- 561,571 ----
_state = state;
_count_ptr = count_ptr;
}
VMOp_Type type() const { return VMOp_GetFrameCount; }
jvmtiError result() { return _result; }
! void doit();
};
// VM operation to frame location at safepoint.
class VM_GetFrameLocation : public VM_Operation {
private:
*** 635,652 ****
_method_ptr = method_ptr;
_location_ptr = location_ptr;
}
VMOp_Type type() const { return VMOp_GetFrameLocation; }
jvmtiError result() { return _result; }
! void doit() {
! _result = JVMTI_ERROR_THREAD_NOT_ALIVE;
! if (Threads::includes(_java_thread) && !_java_thread->is_exiting() &&
! _java_thread->threadObj() != NULL) {
! _result = ((JvmtiEnvBase*)_env)->get_frame_location(_java_thread, _depth,
! _method_ptr, _location_ptr);
! }
! }
};
// ResourceTracker
//
--- 585,595 ----
_method_ptr = method_ptr;
_location_ptr = location_ptr;
}
VMOp_Type type() const { return VMOp_GetFrameLocation; }
jvmtiError result() { return _result; }
! void doit();
};
// ResourceTracker
//
< prev index next >