972 } 973 } 974 975 void 976 JvmtiEventController::set_extension_event_callback(JvmtiEnvBase *env, 977 jint extension_event_index, 978 jvmtiExtensionEvent callback) { 979 if (Threads::number_of_threads() == 0) { 980 JvmtiEventControllerPrivate::set_extension_event_callback(env, extension_event_index, callback); 981 } else { 982 MutexLocker mu(JvmtiThreadState_lock); 983 JvmtiEventControllerPrivate::set_extension_event_callback(env, extension_event_index, callback); 984 } 985 } 986 987 988 989 990 void 991 JvmtiEventController::set_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { 992 MutexLocker mu(JvmtiThreadState_lock); 993 JvmtiEventControllerPrivate::set_frame_pop(ets, fpop); 994 } 995 996 997 void 998 JvmtiEventController::clear_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { 999 MutexLocker mu(JvmtiThreadState_lock); 1000 JvmtiEventControllerPrivate::clear_frame_pop(ets, fpop); 1001 } 1002 1003 1004 void 1005 JvmtiEventController::clear_to_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { 1006 MutexLocker mu(JvmtiThreadState_lock); 1007 JvmtiEventControllerPrivate::clear_to_frame_pop(ets, fpop); 1008 } 1009 1010 void 1011 JvmtiEventController::change_field_watch(jvmtiEvent event_type, bool added) { 1012 MutexLocker mu(JvmtiThreadState_lock); 1013 JvmtiEventControllerPrivate::change_field_watch(event_type, added); 1014 } 1015 1016 void 1017 JvmtiEventController::thread_started(JavaThread *thread) { 1018 // operates only on the current thread 1019 // JvmtiThreadState_lock grabbed only if needed. 1020 JvmtiEventControllerPrivate::thread_started(thread); 1021 } 1022 1023 void 1024 JvmtiEventController::thread_ended(JavaThread *thread) { 1025 // operates only on the current thread 1026 // JvmtiThreadState_lock grabbed only if needed. | 972 } 973 } 974 975 void 976 JvmtiEventController::set_extension_event_callback(JvmtiEnvBase *env, 977 jint extension_event_index, 978 jvmtiExtensionEvent callback) { 979 if (Threads::number_of_threads() == 0) { 980 JvmtiEventControllerPrivate::set_extension_event_callback(env, extension_event_index, callback); 981 } else { 982 MutexLocker mu(JvmtiThreadState_lock); 983 JvmtiEventControllerPrivate::set_extension_event_callback(env, extension_event_index, callback); 984 } 985 } 986 987 988 989 990 void 991 JvmtiEventController::set_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { 992 JvmtiEventControllerPrivate::set_frame_pop(ets, fpop); 993 } 994 995 996 void 997 JvmtiEventController::clear_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { 998 JvmtiEventControllerPrivate::clear_frame_pop(ets, fpop); 999 } 1000 1001 1002 void 1003 JvmtiEventController::clear_to_frame_pop(JvmtiEnvThreadState *ets, JvmtiFramePop fpop) { 1004 JvmtiEventControllerPrivate::clear_to_frame_pop(ets, fpop); 1005 } 1006 1007 void 1008 JvmtiEventController::change_field_watch(jvmtiEvent event_type, bool added) { 1009 MutexLocker mu(JvmtiThreadState_lock); 1010 JvmtiEventControllerPrivate::change_field_watch(event_type, added); 1011 } 1012 1013 void 1014 JvmtiEventController::thread_started(JavaThread *thread) { 1015 // operates only on the current thread 1016 // JvmtiThreadState_lock grabbed only if needed. 1017 JvmtiEventControllerPrivate::thread_started(thread); 1018 } 1019 1020 void 1021 JvmtiEventController::thread_ended(JavaThread *thread) { 1022 // operates only on the current thread 1023 // JvmtiThreadState_lock grabbed only if needed. |