< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
rev 57079 : [mq]: handshake-logs

*** 1993,2033 **** WB_END #endif // INCLUDE_CDS WB_ENTRY(jint, WB_HandshakeWalkStack(JNIEnv* env, jobject wb, jobject thread_handle, jboolean all_threads)) ! class TraceSelfClosure : public ThreadClosure { jint _num_threads_completed; ! void do_thread(Thread* th) { ! assert(th->is_Java_thread(), "sanity"); ! JavaThread* jt = (JavaThread*)th; ResourceMark rm; jt->print_on(tty); jt->print_stack_on(tty); tty->cr(); Atomic::inc(&_num_threads_completed); } ! public: ! TraceSelfClosure() : _num_threads_completed(0) {} jint num_threads_completed() const { return _num_threads_completed; } }; ! TraceSelfClosure tsc; if (all_threads) { ! Handshake::execute(&tsc); } else { oop thread_oop = JNIHandles::resolve(thread_handle); if (thread_oop != NULL) { JavaThread* target = java_lang_Thread::thread(thread_oop); ! Handshake::execute(&tsc, target); } } ! return tsc.num_threads_completed(); WB_END //Some convenience methods to deal with objects from java int WhiteBox::offset_for_field(const char* field_name, oop object, Symbol* signature_symbol) { --- 1993,2032 ---- WB_END #endif // INCLUDE_CDS WB_ENTRY(jint, WB_HandshakeWalkStack(JNIEnv* env, jobject wb, jobject thread_handle, jboolean all_threads)) ! class TraceSelfHandshake : public HandshakeOperation { jint _num_threads_completed; ! public: ! const char* name() { return "WB_TraceSelf"; } ! void do_thread(JavaThread* jt) { ResourceMark rm; jt->print_on(tty); jt->print_stack_on(tty); tty->cr(); Atomic::inc(&_num_threads_completed); } ! TraceSelfHandshake() : _num_threads_completed(0) {} jint num_threads_completed() const { return _num_threads_completed; } }; ! TraceSelfHandshake ts_hs; if (all_threads) { ! Handshake::execute(&ts_hs); } else { oop thread_oop = JNIHandles::resolve(thread_handle); if (thread_oop != NULL) { JavaThread* target = java_lang_Thread::thread(thread_oop); ! Handshake::execute(&ts_hs, target); } } ! return ts_hs.num_threads_completed(); WB_END //Some convenience methods to deal with objects from java int WhiteBox::offset_for_field(const char* field_name, oop object, Symbol* signature_symbol) {
< prev index next >