aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: # include "precompiled.hpp" aoqi@0: # include "utilities/macros.hpp" aoqi@0: #if INCLUDE_JVMTI aoqi@0: # include "prims/jvmtiEnter.hpp" aoqi@0: # include "prims/jvmtiRawMonitor.hpp" aoqi@0: # include "prims/jvmtiUtil.hpp" aoqi@0: aoqi@0: // There are known-bad format/arg pairings in the code generated by this file. aoqi@0: PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: #ifdef JVMTI_TRACE aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: // Error names aoqi@0: const char* JvmtiUtil::_error_names[] = { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: }; aoqi@0: aoqi@0: aoqi@0: // Event threaded aoqi@0: const bool JvmtiUtil::_event_threaded[] = { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: }; aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: jbyte JvmtiTrace::_event_trace_flags[ aoqi@0: aoqi@0: ]; aoqi@0: aoqi@0: jint JvmtiTrace::_max_event_index = aoqi@0: aoqi@0: ; aoqi@0: aoqi@0: // Event names aoqi@0: const char* JvmtiTrace::_event_names[] = { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: }; aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: #endif /*JVMTI_TRACE */ aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: // aoqi@0: aoqi@0: names aoqi@0: const char* aoqi@0: aoqi@0: ConstantNames[] = { aoqi@0: aoqi@0: aoqi@0: NULL aoqi@0: }; aoqi@0: aoqi@0: // aoqi@0: aoqi@0: value aoqi@0: jint aoqi@0: aoqi@0: ConstantValues[] = { aoqi@0: aoqi@0: aoqi@0: 0 aoqi@0: }; aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: " aoqi@0: aoqi@0: ", aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: // Check Event Capabilities aoqi@0: const bool JvmtiUtil::has_event_capability(jvmtiEvent event_type, const jvmtiCapabilities* capabilities_ptr) { aoqi@0: switch (event_type) { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: case aoqi@0: aoqi@0: : aoqi@0: return capabilities_ptr-> aoqi@0: aoqi@0: != 0; aoqi@0: aoqi@0: aoqi@0: aoqi@0: } aoqi@0: // if it does not have a capability it is required aoqi@0: return JNI_TRUE; aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: jbyte JvmtiTrace::_trace_flags[ aoqi@0: aoqi@0: ]; aoqi@0: aoqi@0: jint JvmtiTrace::_max_function_index = aoqi@0: aoqi@0: ; aoqi@0: aoqi@0: // Function names aoqi@0: const char* JvmtiTrace::_function_names[] = { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: }; aoqi@0: aoqi@0: // Exclude list aoqi@0: short JvmtiTrace::_exclude_functions[] = { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: 0 aoqi@0: }; aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: extern "C" { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: } /* end extern "C" */ aoqi@0: aoqi@0: // JVMTI API functions aoqi@0: struct jvmtiInterface_1_ jvmti aoqi@0: aoqi@0: _Interface = { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: }; aoqi@0: #endif // INCLUDE_JVMTI aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: jvmti aoqi@0: aoqi@0: _ aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: /* aoqi@0: aoqi@0: : aoqi@0: aoqi@0: aoqi@0: aoqi@0: */ aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: RESERVED */ aoqi@0: NULL aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: " aoqi@0: aoqi@0: " aoqi@0: aoqi@0: aoqi@0: NULL aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: false aoqi@0: aoqi@0: aoqi@0: true aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: false aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: // aoqi@0: // functions aoqi@0: // aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if (this_thread == NULL || !this_thread->is_Java_thread()) { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if (this_thread == NULL || (!this_thread->is_Java_thread() && !this_thread->is_VM_thread())) { aoqi@0: aoqi@0: aoqi@0: if (!this_thread->is_Java_thread()) { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if (trace_flags) { aoqi@0: aoqi@0: tty->print_cr("JVMTI [non-attached thread] %s %s", func_name, aoqi@0: aoqi@0: JvmtiUtil::error_name(JVMTI_ERROR_UNATTACHED_THREAD)); aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: return JVMTI_ERROR_UNATTACHED_THREAD; aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: JavaThread* current_thread = (JavaThread*)this_thread; aoqi@0: aoqi@0: ThreadInVMfromNative __tiv(current_thread); aoqi@0: aoqi@0: VM_ENTRY_BASE(jvmtiError, aoqi@0: aoqi@0: , current_thread) aoqi@0: aoqi@0: debug_only(VMNativeEntryWrapper __vew;) aoqi@0: aoqi@0: aoqi@0: CautiouslyPreserveExceptionMark __em(this_thread); aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if (jvmti_env->get_capabilities()-> aoqi@0: aoqi@0: == 0) { aoqi@0: aoqi@0: aoqi@0: if (trace_flags) { aoqi@0: tty->print_cr("JVMTI [%s] %s %s", curr_thread_name, func_name, aoqi@0: JvmtiUtil::error_name(JVMTI_ERROR_MUST_POSSESS_CAPABILITY)); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: return JVMTI_ERROR_MUST_POSSESS_CAPABILITY; aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: static jvmtiError JNICALL aoqi@0: aoqi@0: aoqi@0: (jvmtiEnv* env aoqi@0: aoqi@0: ) { aoqi@0: aoqi@0: aoqi@0: aoqi@0: #if !INCLUDE_JVMTI aoqi@0: return JVMTI_ERROR_NOT_AVAILABLE; aoqi@0: #else aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if(!JvmtiEnv::is_vm_live()) { aoqi@0: aoqi@0: aoqi@0: if (trace_flags) { aoqi@0: tty->print_cr("JVMTI [-] %s %s", func_name, aoqi@0: JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE)); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: return JVMTI_ERROR_WRONG_PHASE; aoqi@0: } aoqi@0: aoqi@0: aoqi@0: Thread* this_thread = (Thread*)ThreadLocalStorage::thread(); aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if(JvmtiEnv::get_phase()!=JVMTI_PHASE_ONLOAD aoqi@0: aoqi@0: && JvmtiEnv::get_phase()!=JVMTI_PHASE_LIVE aoqi@0: aoqi@0: ) { aoqi@0: aoqi@0: aoqi@0: if (trace_flags) { aoqi@0: tty->print_cr("JVMTI [-] %s %s", func_name, aoqi@0: JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE)); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: return JVMTI_ERROR_WRONG_PHASE; aoqi@0: } aoqi@0: aoqi@0: aoqi@0: if(JvmtiEnv::get_phase()!=JVMTI_PHASE_START && JvmtiEnv::get_phase()!=JVMTI_PHASE_LIVE) { aoqi@0: aoqi@0: aoqi@0: if (trace_flags) { aoqi@0: tty->print_cr("JVMTI [-] %s %s", func_name, aoqi@0: JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE)); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: return JVMTI_ERROR_WRONG_PHASE; aoqi@0: } aoqi@0: Thread* this_thread = (Thread*)ThreadLocalStorage::thread(); aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: JvmtiEnv* jvmti_env = JvmtiEnv::JvmtiEnv_from_jvmti_env(env); aoqi@0: if (!jvmti_env->is_valid()) { aoqi@0: aoqi@0: aoqi@0: if (trace_flags) { aoqi@0: tty->print_cr("JVMTI [%s] %s %s env=%d", curr_thread_name, func_name, aoqi@0: JvmtiUtil::error_name(JVMTI_ERROR_INVALID_ENVIRONMENT), env); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: return JVMTI_ERROR_INVALID_ENVIRONMENT; aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: jvmtiError err; aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if (Threads::number_of_threads() != 0) { aoqi@0: Thread* this_thread = (Thread*)ThreadLocalStorage::thread(); aoqi@0: aoqi@0: aoqi@0: aoqi@0: Thread* this_thread = NULL; aoqi@0: bool transition; aoqi@0: if (Threads::number_of_threads() == 0) { aoqi@0: transition = false; aoqi@0: } else { aoqi@0: this_thread = (Thread*)ThreadLocalStorage::thread(); aoqi@0: transition = ((this_thread != NULL) && !this_thread->is_VM_thread() && !this_thread->is_ConcurrentGC_thread()); aoqi@0: } aoqi@0: if (transition) { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: } else { aoqi@0: aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: return err; aoqi@0: aoqi@0: aoqi@0: aoqi@0: #endif // INCLUDE_JVMTI aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: err = jvmti_env-> aoqi@0: aoqi@0: ( aoqi@0: aoqi@0: ); aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: SafeResourceMark rm; aoqi@0: jint trace_flags = JvmtiTrace::trace_flags( aoqi@0: aoqi@0: ); aoqi@0: const char *func_name; aoqi@0: const char *curr_thread_name; aoqi@0: if (trace_flags) { aoqi@0: func_name = JvmtiTrace::function_name( aoqi@0: aoqi@0: ); aoqi@0: curr_thread_name = JvmtiTrace::safe_get_current_thread_name(); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if ((trace_flags & JvmtiTrace::SHOW_IN) != 0) { aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if ((trace_flags & JvmtiTrace::SHOW_ERROR) != 0) { aoqi@0: if ((trace_flags & JvmtiTrace::SHOW_IN) == 0) { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: } aoqi@0: tty->print_cr("JVMTI [%s] %s } %s - erroneous arg is aoqi@0: aoqi@0: aoqi@0: ", curr_thread_name, func_name, aoqi@0: JvmtiUtil::error_name( aoqi@0: aoqi@0: ) aoqi@0: aoqi@0: ); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: return aoqi@0: aoqi@0: ; aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if ( err != JVMTI_ERROR_NONE && (trace_flags & JvmtiTrace::SHOW_ERROR) != 0) { aoqi@0: if ((trace_flags & JvmtiTrace::SHOW_IN) == 0) { aoqi@0: aoqi@0: aoqi@0: } aoqi@0: tty->print_cr("JVMTI [%s] %s } %s", curr_thread_name, func_name, aoqi@0: JvmtiUtil::error_name(err)); aoqi@0: } else if ((trace_flags & JvmtiTrace::SHOW_OUT) != 0) { aoqi@0: tty->print_cr("JVMTI [%s] %s }", curr_thread_name, func_name); aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: tty->print_cr("JVMTI [%s] %s { aoqi@0: aoqi@0: aoqi@0: aoqi@0: ", curr_thread_name, func_name aoqi@0: aoqi@0: aoqi@0: aoqi@0: ); aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if ( aoqi@0: aoqi@0: == NULL) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_NULL_POINTER aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: JvmtiRawMonitor *rmonitor = (JvmtiRawMonitor *) aoqi@0: aoqi@0: ; aoqi@0: if (rmonitor == NULL) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_MONITOR aoqi@0: - raw monitor is NULL aoqi@0: aoqi@0: aoqi@0: } aoqi@0: if (!rmonitor->is_valid()) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_MONITOR aoqi@0: - not a raw monitor 0x%x aoqi@0: , rmonitor aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: oop thread_oop = JNIHandles::resolve_external_guard( aoqi@0: aoqi@0: ); aoqi@0: if (thread_oop == NULL) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_THREAD aoqi@0: - jthread resolved to NULL - jthread = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: if (!thread_oop->is_a(SystemDictionary::Thread_klass())) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_THREAD aoqi@0: - oop is not a thread - jthread = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: java_thread = java_lang_Thread::thread(thread_oop); aoqi@0: if (java_thread == NULL) { aoqi@0: aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_THREAD_NOT_ALIVE aoqi@0: aoqi@0: - not a Java thread - jthread = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: JavaThread* java_thread; aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if ( aoqi@0: aoqi@0: == NULL) { aoqi@0: java_thread = current_thread; aoqi@0: } else { aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if (depth < 0) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_ILLEGAL_ARGUMENT aoqi@0: - negative depth - jthread = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: oop k_mirror = JNIHandles::resolve_external_guard( aoqi@0: aoqi@0: ); aoqi@0: if (k_mirror == NULL) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_CLASS aoqi@0: - resolved to NULL - jclass = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: if (!k_mirror->is_a(SystemDictionary::Class_klass())) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_CLASS aoqi@0: - not a class - jclass = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: if (java_lang_Class::is_primitive(k_mirror)) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_CLASS aoqi@0: - is a primitive class - jclass = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: Klass* k_oop = java_lang_Class::as_Klass(k_mirror); aoqi@0: if (k_oop == NULL) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_CLASS aoqi@0: - no Klass* - jclass = 0x%x aoqi@0: , aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: Method* method_oop = Method::checked_resolve_jmethod_id( aoqi@0: aoqi@0: ); aoqi@0: if (method_oop == NULL) { aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_METHODID aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: if (method_oop->is_native()) { aoqi@0: return JVMTI_ERROR_NATIVE_METHOD; aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: ResourceMark rm_fdesc(current_thread); aoqi@0: fieldDescriptor fdesc; aoqi@0: if (!JvmtiEnv::get_field_descriptor(k_oop, aoqi@0: aoqi@0: , &fdesc)) { aoqi@0: aoqi@0: JVMTI_ERROR_INVALID_FIELDID aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: if ( aoqi@0: aoqi@0: < aoqi@0: aoqi@0: ) { aoqi@0: aoqi@0: aoqi@0: JVMTI_ERROR_ILLEGAL_ARGUMENT aoqi@0: aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: ='%s' aoqi@0: aoqi@0: aoqi@0: =0x%x aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =0x%x aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =0x%x aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%s aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%s aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , rmonitor->get_name() aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%s aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: JvmtiTrace::safe_get_thread_name(java_thread) aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: depth=%d aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: JvmtiTrace::get_class_name(k_mirror) aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%s.%s aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: method_oop == NULL? "NULL" : method_oop->klass_name()->as_C_string(), aoqi@0: method_oop == NULL? "NULL" : method_oop->name()->as_C_string() aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , fdesc.name()->as_C_string() aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%d:%s aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: JvmtiUtil::error_name( aoqi@0: aoqi@0: ) aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: JvmtiTrace::event_name( aoqi@0: aoqi@0: ) aoqi@0: aoqi@0: aoqi@0: aoqi@0: JvmtiTrace::enum_name( aoqi@0: aoqi@0: ConstantNames, aoqi@0: aoqi@0: ConstantValues, aoqi@0: aoqi@0: ) aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%d aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%ld aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =0x%zx aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%f aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%c aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =0x%x aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: =%s aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: , aoqi@0: aoqi@0: ? "true" : "false" aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: aoqi@0: