< 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 >