diff -r cc19612c6b9f -r 91935236600e hotspot/src/share/vm/runtime/thread.cpp --- a/hotspot/src/share/vm/runtime/thread.cpp Mon Oct 10 21:01:36 2011 -0400 +++ b/hotspot/src/share/vm/runtime/thread.cpp Thu Oct 13 09:35:42 2011 -0700 @@ -110,6 +110,7 @@ // Only bother with this argument setup if dtrace is available +#ifndef USDT2 HS_DTRACE_PROBE_DECL(hotspot, vm__init__begin); HS_DTRACE_PROBE_DECL(hotspot, vm__init__end); HS_DTRACE_PROBE_DECL5(hotspot, thread__start, char*, intptr_t, @@ -130,6 +131,26 @@ java_lang_Thread::is_daemon((javathread)->threadObj())); \ } +#else /* USDT2 */ + +#define HOTSPOT_THREAD_PROBE_start HOTSPOT_THREAD_PROBE_START +#define HOTSPOT_THREAD_PROBE_stop HOTSPOT_THREAD_PROBE_STOP + +#define DTRACE_THREAD_PROBE(probe, javathread) \ + { \ + ResourceMark rm(this); \ + int len = 0; \ + const char* name = (javathread)->get_thread_name(); \ + len = strlen(name); \ + HOTSPOT_THREAD_PROBE_##probe( /* probe = start, stop */ \ + (char *) name, len, \ + java_lang_Thread::thread_id((javathread)->threadObj()), \ + (uintptr_t) (javathread)->osthread()->thread_id(), \ + java_lang_Thread::is_daemon((javathread)->threadObj())); \ + } + +#endif /* USDT2 */ + #else // ndef DTRACE_ENABLED #define DTRACE_THREAD_PROBE(probe, javathread) @@ -1327,7 +1348,7 @@ DirtyCardQueueSet JavaThread::_dirty_card_queue_set; #endif // !SERIALGC -JavaThread::JavaThread(bool is_attaching) : +JavaThread::JavaThread(bool is_attaching_via_jni) : Thread() #ifndef SERIALGC , _satb_mark_queue(&_satb_mark_queue_set), @@ -1335,7 +1356,11 @@ #endif // !SERIALGC { initialize(); - _is_attaching = is_attaching; + if (is_attaching_via_jni) { + _jni_attach_state = _attaching_via_jni; + } else { + _jni_attach_state = _not_attaching_via_jni; + } assert(_deferred_card_mark.is_empty(), "Default MemRegion ctor"); } @@ -1391,7 +1416,7 @@ tty->print_cr("creating thread %p", this); } initialize(); - _is_attaching = false; + _jni_attach_state = _not_attaching_via_jni; set_entry_point(entry_point); // Create the native thread itself. // %note runtime_23 @@ -1503,6 +1528,10 @@ // Note: Due to JVM_StopThread we can have pending exceptions already! if (!this->has_pending_exception() && !java_lang_Thread::is_stillborn(this->threadObj())) { + { + ResourceMark rm(this); + this->set_native_thread_name(this->get_thread_name()); + } HandleMark hm(this); this->entry_point()(this, this); } @@ -2682,7 +2711,7 @@ name_str = UNICODE::as_utf8((jchar*) name->base(T_CHAR), name->length(), buf, buflen); } } - else if (is_attaching()) { // workaround for 6412693 - see 6404306 + else if (is_attaching_via_jni()) { // workaround for 6412693 - see 6404306 name_str = ""; } else { @@ -3078,7 +3107,11 @@ os::pause(); } +#ifndef USDT2 HS_DTRACE_PROBE(hotspot, vm__init__begin); +#else /* USDT2 */ + HOTSPOT_VM_INIT_BEGIN(); +#endif /* USDT2 */ // Record VM creation timing statistics TraceVmCreationTime create_vm_timer; @@ -3333,7 +3366,11 @@ // debug stuff, that does not work until all basic classes have been initialized. set_init_completed(); +#ifndef USDT2 HS_DTRACE_PROBE(hotspot, vm__init__end); +#else /* USDT2 */ + HOTSPOT_VM_INIT_END(); +#endif /* USDT2 */ // record VM initialization completion time Management::record_vm_init_completed();