src/hotspot/share/prims/whitebox.cpp
changeset 47881 0ce0ac68ace7
parent 47805 506775a4f446
child 47908 d6d00f785f39
equal deleted inserted replaced
47824:cf127be65014 47881:0ce0ac68ace7
    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},