47 #include "prims/wbtestmethods/parserTests.hpp" |
47 #include "prims/wbtestmethods/parserTests.hpp" |
48 #include "prims/whitebox.hpp" |
48 #include "prims/whitebox.hpp" |
49 #include "runtime/arguments.hpp" |
49 #include "runtime/arguments.hpp" |
50 #include "runtime/compilationPolicy.hpp" |
50 #include "runtime/compilationPolicy.hpp" |
51 #include "runtime/deoptimization.hpp" |
51 #include "runtime/deoptimization.hpp" |
|
52 #include "runtime/handshake.hpp" |
52 #include "runtime/interfaceSupport.hpp" |
53 #include "runtime/interfaceSupport.hpp" |
53 #include "runtime/javaCalls.hpp" |
54 #include "runtime/javaCalls.hpp" |
54 #include "runtime/os.hpp" |
55 #include "runtime/os.hpp" |
55 #include "runtime/sweeper.hpp" |
56 #include "runtime/sweeper.hpp" |
56 #include "runtime/thread.hpp" |
57 #include "runtime/thread.hpp" |
1723 #if INCLUDE_CDS |
1724 #if INCLUDE_CDS |
1724 return true; |
1725 return true; |
1725 #else |
1726 #else |
1726 return false; |
1727 return false; |
1727 #endif |
1728 #endif |
|
1729 WB_END |
|
1730 |
|
1731 WB_ENTRY(jint, WB_HandshakeWalkStack(JNIEnv* env, jobject wb, jobject thread_handle, jboolean all_threads)) |
|
1732 class TraceSelfClosure : public ThreadClosure { |
|
1733 jint _num_threads_completed; |
|
1734 |
|
1735 void do_thread(Thread* th) { |
|
1736 assert(th->is_Java_thread(), "sanity"); |
|
1737 JavaThread* jt = (JavaThread*)th; |
|
1738 ResourceMark rm; |
|
1739 |
|
1740 jt->print_on(tty); |
|
1741 jt->print_stack_on(tty); |
|
1742 tty->cr(); |
|
1743 Atomic::inc(&_num_threads_completed); |
|
1744 } |
|
1745 |
|
1746 public: |
|
1747 TraceSelfClosure() : _num_threads_completed(0) {} |
|
1748 |
|
1749 jint num_threads_completed() const { return _num_threads_completed; } |
|
1750 }; |
|
1751 TraceSelfClosure tsc; |
|
1752 |
|
1753 if (all_threads) { |
|
1754 Handshake::execute(&tsc); |
|
1755 } else { |
|
1756 oop thread_oop = JNIHandles::resolve(thread_handle); |
|
1757 if (thread_oop != NULL) { |
|
1758 JavaThread* target = java_lang_Thread::thread(thread_oop); |
|
1759 Handshake::execute(&tsc, target); |
|
1760 } |
|
1761 } |
|
1762 return tsc.num_threads_completed(); |
1728 WB_END |
1763 WB_END |
1729 |
1764 |
1730 //Some convenience methods to deal with objects from java |
1765 //Some convenience methods to deal with objects from java |
1731 int WhiteBox::offset_for_field(const char* field_name, oop object, |
1766 int WhiteBox::offset_for_field(const char* field_name, oop object, |
1732 Symbol* signature_symbol) { |
1767 Symbol* signature_symbol) { |
2036 {CC"areSharedStringsIgnored", CC"()Z", (void*)&WB_AreSharedStringsIgnored }, |
2071 {CC"areSharedStringsIgnored", CC"()Z", (void*)&WB_AreSharedStringsIgnored }, |
2037 {CC"getResolvedReferences", CC"(Ljava/lang/Class;)Ljava/lang/Object;", (void*)&WB_GetResolvedReferences}, |
2072 {CC"getResolvedReferences", CC"(Ljava/lang/Class;)Ljava/lang/Object;", (void*)&WB_GetResolvedReferences}, |
2038 {CC"areOpenArchiveHeapObjectsMapped", CC"()Z", (void*)&WB_AreOpenArchiveHeapObjectsMapped}, |
2073 {CC"areOpenArchiveHeapObjectsMapped", CC"()Z", (void*)&WB_AreOpenArchiveHeapObjectsMapped}, |
2039 {CC"isCDSIncludedInVmBuild", CC"()Z", (void*)&WB_IsCDSIncludedInVmBuild }, |
2074 {CC"isCDSIncludedInVmBuild", CC"()Z", (void*)&WB_IsCDSIncludedInVmBuild }, |
2040 {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches }, |
2075 {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches }, |
|
2076 {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack }, |
2041 {CC"addCompilerDirective", CC"(Ljava/lang/String;)I", |
2077 {CC"addCompilerDirective", CC"(Ljava/lang/String;)I", |
2042 (void*)&WB_AddCompilerDirective }, |
2078 (void*)&WB_AddCompilerDirective }, |
2043 {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective }, |
2079 {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective }, |
2044 {CC"currentGC", CC"()I", (void*)&WB_CurrentGC}, |
2080 {CC"currentGC", CC"()I", (void*)&WB_CurrentGC}, |
2045 {CC"allSupportedGC", CC"()I", (void*)&WB_AllSupportedGC}, |
2081 {CC"allSupportedGC", CC"()I", (void*)&WB_AllSupportedGC}, |