< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
rev 56101 : 8227745: Enable Escape Analysis for better performance when debugging
Reviewed-by: ???


  55 #include "oops/oop.inline.hpp"
  56 #include "oops/typeArrayOop.inline.hpp"
  57 #include "prims/resolvedMethodTable.hpp"
  58 #include "prims/wbtestmethods/parserTests.hpp"
  59 #include "prims/whitebox.inline.hpp"
  60 #include "runtime/arguments.hpp"
  61 #include "runtime/compilationPolicy.hpp"
  62 #include "runtime/deoptimization.hpp"
  63 #include "runtime/fieldDescriptor.inline.hpp"
  64 #include "runtime/flags/jvmFlag.hpp"
  65 #include "runtime/frame.inline.hpp"
  66 #include "runtime/handles.inline.hpp"
  67 #include "runtime/handshake.hpp"
  68 #include "runtime/interfaceSupport.inline.hpp"
  69 #include "runtime/javaCalls.hpp"
  70 #include "runtime/jniHandles.inline.hpp"
  71 #include "runtime/os.hpp"
  72 #include "runtime/sweeper.hpp"
  73 #include "runtime/thread.hpp"
  74 #include "runtime/threadSMR.hpp"

  75 #include "runtime/vm_version.hpp"
  76 #include "services/memoryService.hpp"
  77 #include "utilities/align.hpp"
  78 #include "utilities/debug.hpp"
  79 #include "utilities/elfFile.hpp"
  80 #include "utilities/exceptions.hpp"
  81 #include "utilities/macros.hpp"
  82 #if INCLUDE_CDS
  83 #include "prims/cdsoffsets.hpp"
  84 #endif // INCLUDE_CDS
  85 #if INCLUDE_G1GC
  86 #include "gc/g1/g1Arguments.hpp"
  87 #include "gc/g1/g1CollectedHeap.inline.hpp"
  88 #include "gc/g1/g1ConcurrentMark.hpp"
  89 #include "gc/g1/g1ConcurrentMarkThread.hpp"
  90 #include "gc/g1/heapRegionRemSet.hpp"
  91 #include "gc/g1/heterogeneousHeapRegionManager.hpp"
  92 #endif // INCLUDE_G1GC
  93 #if INCLUDE_PARALLELGC
  94 #include "gc/parallel/parallelScavengeHeap.inline.hpp"


 802             Deoptimization::deoptimize(t, *f, reg_map);
 803             if (_make_not_entrant) {
 804                 CompiledMethod* cm = CodeCache::find_compiled(f->pc());
 805                 assert(cm != NULL, "sanity check");
 806                 cm->make_not_entrant();
 807             }
 808             ++_result;
 809           }
 810         }
 811       }
 812     }
 813   }
 814 };
 815 
 816 WB_ENTRY(jint, WB_DeoptimizeFrames(JNIEnv* env, jobject o, jboolean make_not_entrant))
 817   VM_WhiteBoxDeoptimizeFrames op(make_not_entrant == JNI_TRUE);
 818   VMThread::execute(&op);
 819   return op.result();
 820 WB_END
 821 














 822 WB_ENTRY(void, WB_DeoptimizeAll(JNIEnv* env, jobject o))
 823   MutexLocker mu(Compile_lock);
 824   CodeCache::mark_all_nmethods_for_deoptimization();
 825   VM_Deoptimize op;
 826   VMThread::execute(&op);
 827 WB_END
 828 
 829 WB_ENTRY(jint, WB_DeoptimizeMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 830   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 831   int result = 0;
 832   CHECK_JNI_EXCEPTION_(env, result);
 833   MutexLocker mu(Compile_lock);
 834   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 835   if (is_osr) {
 836     result += mh->mark_osr_nmethods();
 837   } else if (mh->code() != NULL) {
 838     mh->code()->mark_for_deoptimization();
 839     ++result;
 840   }
 841   result += CodeCache::mark_for_deoptimization(mh());


2197   {CC"nvdimmReservedEnd",   CC"()J",                  (void*)&WB_NvdimmReservedEnd },
2198 #endif // INCLUDE_G1GC || INCLUDE_PARALLELGC
2199 #if INCLUDE_PARALLELGC
2200   {CC"psVirtualSpaceAlignment",CC"()J",               (void*)&WB_PSVirtualSpaceAlignment},
2201   {CC"psHeapGenerationAlignment",CC"()J",             (void*)&WB_PSHeapGenerationAlignment},
2202 #endif
2203 #if INCLUDE_NMT
2204   {CC"NMTMalloc",           CC"(J)J",                 (void*)&WB_NMTMalloc          },
2205   {CC"NMTMallocWithPseudoStack", CC"(JI)J",           (void*)&WB_NMTMallocWithPseudoStack},
2206   {CC"NMTMallocWithPseudoStackAndType", CC"(JII)J",   (void*)&WB_NMTMallocWithPseudoStackAndType},
2207   {CC"NMTFree",             CC"(J)V",                 (void*)&WB_NMTFree            },
2208   {CC"NMTReserveMemory",    CC"(J)J",                 (void*)&WB_NMTReserveMemory   },
2209   {CC"NMTAttemptReserveMemoryAt",    CC"(JJ)J",       (void*)&WB_NMTAttemptReserveMemoryAt },
2210   {CC"NMTCommitMemory",     CC"(JJ)V",                (void*)&WB_NMTCommitMemory    },
2211   {CC"NMTUncommitMemory",   CC"(JJ)V",                (void*)&WB_NMTUncommitMemory  },
2212   {CC"NMTReleaseMemory",    CC"(JJ)V",                (void*)&WB_NMTReleaseMemory   },
2213   {CC"NMTChangeTrackingLevel", CC"()Z",               (void*)&WB_NMTChangeTrackingLevel},
2214   {CC"NMTGetHashSize",      CC"()I",                  (void*)&WB_NMTGetHashSize     },
2215 #endif // INCLUDE_NMT
2216   {CC"deoptimizeFrames",   CC"(Z)I",                  (void*)&WB_DeoptimizeFrames  },

2217   {CC"deoptimizeAll",      CC"()V",                   (void*)&WB_DeoptimizeAll     },
2218   {CC"deoptimizeMethod0",   CC"(Ljava/lang/reflect/Executable;Z)I",
2219                                                       (void*)&WB_DeoptimizeMethod  },
2220   {CC"isMethodCompiled0",   CC"(Ljava/lang/reflect/Executable;Z)Z",
2221                                                       (void*)&WB_IsMethodCompiled  },
2222   {CC"isMethodCompilable0", CC"(Ljava/lang/reflect/Executable;IZ)Z",
2223                                                       (void*)&WB_IsMethodCompilable},
2224   {CC"isMethodQueuedForCompilation0",
2225       CC"(Ljava/lang/reflect/Executable;)Z",          (void*)&WB_IsMethodQueuedForCompilation},
2226   {CC"isIntrinsicAvailable0",
2227       CC"(Ljava/lang/reflect/Executable;Ljava/lang/reflect/Executable;I)Z",
2228                                                       (void*)&WB_IsIntrinsicAvailable},
2229   {CC"makeMethodNotCompilable0",
2230       CC"(Ljava/lang/reflect/Executable;IZ)V",        (void*)&WB_MakeMethodNotCompilable},
2231   {CC"testSetDontInlineMethod0",
2232       CC"(Ljava/lang/reflect/Executable;Z)Z",         (void*)&WB_TestSetDontInlineMethod},
2233   {CC"getMethodCompilationLevel0",
2234       CC"(Ljava/lang/reflect/Executable;Z)I",         (void*)&WB_GetMethodCompilationLevel},
2235   {CC"getMethodEntryBci0",
2236       CC"(Ljava/lang/reflect/Executable;)I",          (void*)&WB_GetMethodEntryBci},




  55 #include "oops/oop.inline.hpp"
  56 #include "oops/typeArrayOop.inline.hpp"
  57 #include "prims/resolvedMethodTable.hpp"
  58 #include "prims/wbtestmethods/parserTests.hpp"
  59 #include "prims/whitebox.inline.hpp"
  60 #include "runtime/arguments.hpp"
  61 #include "runtime/compilationPolicy.hpp"
  62 #include "runtime/deoptimization.hpp"
  63 #include "runtime/fieldDescriptor.inline.hpp"
  64 #include "runtime/flags/jvmFlag.hpp"
  65 #include "runtime/frame.inline.hpp"
  66 #include "runtime/handles.inline.hpp"
  67 #include "runtime/handshake.hpp"
  68 #include "runtime/interfaceSupport.inline.hpp"
  69 #include "runtime/javaCalls.hpp"
  70 #include "runtime/jniHandles.inline.hpp"
  71 #include "runtime/os.hpp"
  72 #include "runtime/sweeper.hpp"
  73 #include "runtime/thread.hpp"
  74 #include "runtime/threadSMR.hpp"
  75 #include "runtime/vframe.hpp"
  76 #include "runtime/vm_version.hpp"
  77 #include "services/memoryService.hpp"
  78 #include "utilities/align.hpp"
  79 #include "utilities/debug.hpp"
  80 #include "utilities/elfFile.hpp"
  81 #include "utilities/exceptions.hpp"
  82 #include "utilities/macros.hpp"
  83 #if INCLUDE_CDS
  84 #include "prims/cdsoffsets.hpp"
  85 #endif // INCLUDE_CDS
  86 #if INCLUDE_G1GC
  87 #include "gc/g1/g1Arguments.hpp"
  88 #include "gc/g1/g1CollectedHeap.inline.hpp"
  89 #include "gc/g1/g1ConcurrentMark.hpp"
  90 #include "gc/g1/g1ConcurrentMarkThread.hpp"
  91 #include "gc/g1/heapRegionRemSet.hpp"
  92 #include "gc/g1/heterogeneousHeapRegionManager.hpp"
  93 #endif // INCLUDE_G1GC
  94 #if INCLUDE_PARALLELGC
  95 #include "gc/parallel/parallelScavengeHeap.inline.hpp"


 803             Deoptimization::deoptimize(t, *f, reg_map);
 804             if (_make_not_entrant) {
 805                 CompiledMethod* cm = CodeCache::find_compiled(f->pc());
 806                 assert(cm != NULL, "sanity check");
 807                 cm->make_not_entrant();
 808             }
 809             ++_result;
 810           }
 811         }
 812       }
 813     }
 814   }
 815 };
 816 
 817 WB_ENTRY(jint, WB_DeoptimizeFrames(JNIEnv* env, jobject o, jboolean make_not_entrant))
 818   VM_WhiteBoxDeoptimizeFrames op(make_not_entrant == JNI_TRUE);
 819   VMThread::execute(&op);
 820   return op.result();
 821 WB_END
 822 
 823 WB_ENTRY(jboolean, WB_IsFrameDeoptimized(JNIEnv* env, jobject o, jint depth))
 824   JavaThread* t = JavaThread::current();
 825   bool result = false;
 826   if (t->has_last_Java_frame()) {
 827     RegisterMap reg_map(t);
 828     javaVFrame *jvf = t->last_java_vframe(&reg_map);
 829     for (jint d = 0; d < depth && jvf != NULL; d++ ) {
 830       jvf = jvf->java_sender();
 831     }
 832     result = jvf != NULL && jvf->fr().is_deoptimized_frame();
 833   }
 834   return result;
 835 WB_END
 836 
 837 WB_ENTRY(void, WB_DeoptimizeAll(JNIEnv* env, jobject o))
 838   MutexLocker mu(Compile_lock);
 839   CodeCache::mark_all_nmethods_for_deoptimization();
 840   VM_Deoptimize op;
 841   VMThread::execute(&op);
 842 WB_END
 843 
 844 WB_ENTRY(jint, WB_DeoptimizeMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 845   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 846   int result = 0;
 847   CHECK_JNI_EXCEPTION_(env, result);
 848   MutexLocker mu(Compile_lock);
 849   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 850   if (is_osr) {
 851     result += mh->mark_osr_nmethods();
 852   } else if (mh->code() != NULL) {
 853     mh->code()->mark_for_deoptimization();
 854     ++result;
 855   }
 856   result += CodeCache::mark_for_deoptimization(mh());


2212   {CC"nvdimmReservedEnd",   CC"()J",                  (void*)&WB_NvdimmReservedEnd },
2213 #endif // INCLUDE_G1GC || INCLUDE_PARALLELGC
2214 #if INCLUDE_PARALLELGC
2215   {CC"psVirtualSpaceAlignment",CC"()J",               (void*)&WB_PSVirtualSpaceAlignment},
2216   {CC"psHeapGenerationAlignment",CC"()J",             (void*)&WB_PSHeapGenerationAlignment},
2217 #endif
2218 #if INCLUDE_NMT
2219   {CC"NMTMalloc",           CC"(J)J",                 (void*)&WB_NMTMalloc          },
2220   {CC"NMTMallocWithPseudoStack", CC"(JI)J",           (void*)&WB_NMTMallocWithPseudoStack},
2221   {CC"NMTMallocWithPseudoStackAndType", CC"(JII)J",   (void*)&WB_NMTMallocWithPseudoStackAndType},
2222   {CC"NMTFree",             CC"(J)V",                 (void*)&WB_NMTFree            },
2223   {CC"NMTReserveMemory",    CC"(J)J",                 (void*)&WB_NMTReserveMemory   },
2224   {CC"NMTAttemptReserveMemoryAt",    CC"(JJ)J",       (void*)&WB_NMTAttemptReserveMemoryAt },
2225   {CC"NMTCommitMemory",     CC"(JJ)V",                (void*)&WB_NMTCommitMemory    },
2226   {CC"NMTUncommitMemory",   CC"(JJ)V",                (void*)&WB_NMTUncommitMemory  },
2227   {CC"NMTReleaseMemory",    CC"(JJ)V",                (void*)&WB_NMTReleaseMemory   },
2228   {CC"NMTChangeTrackingLevel", CC"()Z",               (void*)&WB_NMTChangeTrackingLevel},
2229   {CC"NMTGetHashSize",      CC"()I",                  (void*)&WB_NMTGetHashSize     },
2230 #endif // INCLUDE_NMT
2231   {CC"deoptimizeFrames",   CC"(Z)I",                  (void*)&WB_DeoptimizeFrames  },
2232   {CC"isFrameDeoptimized", CC"(I)Z",                  (void*)&WB_IsFrameDeoptimized},
2233   {CC"deoptimizeAll",      CC"()V",                   (void*)&WB_DeoptimizeAll     },
2234   {CC"deoptimizeMethod0",   CC"(Ljava/lang/reflect/Executable;Z)I",
2235                                                       (void*)&WB_DeoptimizeMethod  },
2236   {CC"isMethodCompiled0",   CC"(Ljava/lang/reflect/Executable;Z)Z",
2237                                                       (void*)&WB_IsMethodCompiled  },
2238   {CC"isMethodCompilable0", CC"(Ljava/lang/reflect/Executable;IZ)Z",
2239                                                       (void*)&WB_IsMethodCompilable},
2240   {CC"isMethodQueuedForCompilation0",
2241       CC"(Ljava/lang/reflect/Executable;)Z",          (void*)&WB_IsMethodQueuedForCompilation},
2242   {CC"isIntrinsicAvailable0",
2243       CC"(Ljava/lang/reflect/Executable;Ljava/lang/reflect/Executable;I)Z",
2244                                                       (void*)&WB_IsIntrinsicAvailable},
2245   {CC"makeMethodNotCompilable0",
2246       CC"(Ljava/lang/reflect/Executable;IZ)V",        (void*)&WB_MakeMethodNotCompilable},
2247   {CC"testSetDontInlineMethod0",
2248       CC"(Ljava/lang/reflect/Executable;Z)Z",         (void*)&WB_TestSetDontInlineMethod},
2249   {CC"getMethodCompilationLevel0",
2250       CC"(Ljava/lang/reflect/Executable;Z)I",         (void*)&WB_GetMethodCompilationLevel},
2251   {CC"getMethodEntryBci0",
2252       CC"(Ljava/lang/reflect/Executable;)I",          (void*)&WB_GetMethodEntryBci},


< prev index next >