< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
rev 57137 : imported patch 8234796-v2


1994 WB_ENTRY(jboolean, WB_IsJFRIncludedInVmBuild(JNIEnv* env))
1995 #if INCLUDE_JFR
1996   return true;
1997 #else
1998   return false;
1999 #endif // INCLUDE_JFR
2000 WB_END
2001 
2002 #if INCLUDE_CDS
2003 
2004 WB_ENTRY(jint, WB_GetOffsetForName(JNIEnv* env, jobject o, jstring name))
2005   ResourceMark rm;
2006   char* c_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
2007   int result = CDSOffsets::find_offset(c_name);
2008   return (jint)result;
2009 WB_END
2010 
2011 #endif // INCLUDE_CDS
2012 
2013 WB_ENTRY(jint, WB_HandshakeWalkStack(JNIEnv* env, jobject wb, jobject thread_handle, jboolean all_threads))
2014   class TraceSelfClosure : public ThreadClosure {
2015     jint _num_threads_completed;
2016 
2017     void do_thread(Thread* th) {
2018       assert(th->is_Java_thread(), "sanity");
2019       JavaThread* jt = (JavaThread*)th;
2020       ResourceMark rm;
2021 
2022       jt->print_on(tty);
2023       jt->print_stack_on(tty);
2024       tty->cr();
2025       Atomic::inc(&_num_threads_completed);
2026     }
2027 
2028   public:
2029     TraceSelfClosure() : _num_threads_completed(0) {}
2030 
2031     jint num_threads_completed() const { return _num_threads_completed; }
2032   };
2033   TraceSelfClosure tsc;
2034 
2035   if (all_threads) {
2036     Handshake::execute(&tsc);
2037   } else {
2038     oop thread_oop = JNIHandles::resolve(thread_handle);
2039     if (thread_oop != NULL) {
2040       JavaThread* target = java_lang_Thread::thread(thread_oop);
2041       Handshake::execute(&tsc, target);
2042     }
2043   }
2044   return tsc.num_threads_completed();
2045 WB_END
2046 
2047 //Some convenience methods to deal with objects from java
2048 int WhiteBox::offset_for_field(const char* field_name, oop object,
2049     Symbol* signature_symbol) {




1994 WB_ENTRY(jboolean, WB_IsJFRIncludedInVmBuild(JNIEnv* env))
1995 #if INCLUDE_JFR
1996   return true;
1997 #else
1998   return false;
1999 #endif // INCLUDE_JFR
2000 WB_END
2001 
2002 #if INCLUDE_CDS
2003 
2004 WB_ENTRY(jint, WB_GetOffsetForName(JNIEnv* env, jobject o, jstring name))
2005   ResourceMark rm;
2006   char* c_name = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(name));
2007   int result = CDSOffsets::find_offset(c_name);
2008   return (jint)result;
2009 WB_END
2010 
2011 #endif // INCLUDE_CDS
2012 
2013 WB_ENTRY(jint, WB_HandshakeWalkStack(JNIEnv* env, jobject wb, jobject thread_handle, jboolean all_threads))
2014   class TraceSelfClosure : public HandshakeClosure {
2015     jint _num_threads_completed;
2016 
2017     void do_thread(Thread* th) {
2018       assert(th->is_Java_thread(), "sanity");
2019       JavaThread* jt = (JavaThread*)th;
2020       ResourceMark rm;
2021 
2022       jt->print_on(tty);
2023       jt->print_stack_on(tty);
2024       tty->cr();
2025       Atomic::inc(&_num_threads_completed);
2026     }
2027 
2028   public:
2029     TraceSelfClosure() : HandshakeClosure("WB_TraceSelf"), _num_threads_completed(0) {}
2030 
2031     jint num_threads_completed() const { return _num_threads_completed; }
2032   };
2033   TraceSelfClosure tsc;
2034 
2035   if (all_threads) {
2036     Handshake::execute(&tsc);
2037   } else {
2038     oop thread_oop = JNIHandles::resolve(thread_handle);
2039     if (thread_oop != NULL) {
2040       JavaThread* target = java_lang_Thread::thread(thread_oop);
2041       Handshake::execute(&tsc, target);
2042     }
2043   }
2044   return tsc.num_threads_completed();
2045 WB_END
2046 
2047 //Some convenience methods to deal with objects from java
2048 int WhiteBox::offset_for_field(const char* field_name, oop object,
2049     Symbol* signature_symbol) {


< prev index next >