hotspot/src/share/vm/prims/whitebox.cpp
changeset 38133 78b95467b9f1
parent 38036 f51b942d970c
child 38218 f5ba1dea04eb
child 38144 0976c0c5c5d3
equal deleted inserted replaced
38132:ba888a4f352a 38133:78b95467b9f1
   481           frame* f = fst.current();
   481           frame* f = fst.current();
   482           if (f->can_be_deoptimized() && !f->is_deoptimized_frame()) {
   482           if (f->can_be_deoptimized() && !f->is_deoptimized_frame()) {
   483             RegisterMap* reg_map = fst.register_map();
   483             RegisterMap* reg_map = fst.register_map();
   484             Deoptimization::deoptimize(t, *f, reg_map);
   484             Deoptimization::deoptimize(t, *f, reg_map);
   485             if (_make_not_entrant) {
   485             if (_make_not_entrant) {
   486                 nmethod* nm = CodeCache::find_nmethod(f->pc());
   486                 CompiledMethod* cm = CodeCache::find_compiled(f->pc());
   487                 assert(nm != NULL, "sanity check");
   487                 assert(cm != NULL, "sanity check");
   488                 nm->make_not_entrant();
   488                 cm->make_not_entrant();
   489             }
   489             }
   490             ++_result;
   490             ++_result;
   491           }
   491           }
   492         }
   492         }
   493       }
   493       }
   531 WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
   531 WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
   532   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   532   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   533   CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
   533   CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
   534   MutexLockerEx mu(Compile_lock);
   534   MutexLockerEx mu(Compile_lock);
   535   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
   535   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
   536   nmethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
   536   CompiledMethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
   537   if (code == NULL) {
   537   if (code == NULL) {
   538     return JNI_FALSE;
   538     return JNI_FALSE;
   539   }
   539   }
   540   return (code->is_alive() && !code->is_marked_for_deoptimization());
   540   return (code->is_alive() && !code->is_marked_for_deoptimization());
   541 WB_END
   541 WB_END
   587 
   587 
   588 WB_ENTRY(jint, WB_GetMethodCompilationLevel(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
   588 WB_ENTRY(jint, WB_GetMethodCompilationLevel(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
   589   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   589   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   590   CHECK_JNI_EXCEPTION_(env, CompLevel_none);
   590   CHECK_JNI_EXCEPTION_(env, CompLevel_none);
   591   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
   591   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
   592   nmethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
   592   CompiledMethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
   593   return (code != NULL ? code->comp_level() : CompLevel_none);
   593   return (code != NULL ? code->comp_level() : CompLevel_none);
   594 WB_END
   594 WB_END
   595 
   595 
   596 WB_ENTRY(void, WB_MakeMethodNotCompilable(JNIEnv* env, jobject o, jobject method, jint comp_level, jboolean is_osr))
   596 WB_ENTRY(void, WB_MakeMethodNotCompilable(JNIEnv* env, jobject o, jobject method, jint comp_level, jboolean is_osr))
   597   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   597   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   606 
   606 
   607 WB_ENTRY(jint, WB_GetMethodEntryBci(JNIEnv* env, jobject o, jobject method))
   607 WB_ENTRY(jint, WB_GetMethodEntryBci(JNIEnv* env, jobject o, jobject method))
   608   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   608   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   609   CHECK_JNI_EXCEPTION_(env, InvocationEntryBci);
   609   CHECK_JNI_EXCEPTION_(env, InvocationEntryBci);
   610   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
   610   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
   611   nmethod* code = mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false);
   611   CompiledMethod* code = mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false);
   612   return (code != NULL && code->is_osr_method() ? code->osr_entry_bci() : InvocationEntryBci);
   612   return (code != NULL && code->is_osr_method() ? code->osr_entry_bci() : InvocationEntryBci);
   613 WB_END
   613 WB_END
   614 
   614 
   615 WB_ENTRY(jboolean, WB_TestSetDontInlineMethod(JNIEnv* env, jobject o, jobject method, jboolean value))
   615 WB_ENTRY(jboolean, WB_TestSetDontInlineMethod(JNIEnv* env, jobject o, jobject method, jboolean value))
   616   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
   616   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
  1091 WB_ENTRY(jobjectArray, WB_GetNMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
  1091 WB_ENTRY(jobjectArray, WB_GetNMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
  1092   ResourceMark rm(THREAD);
  1092   ResourceMark rm(THREAD);
  1093   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
  1093   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
  1094   CHECK_JNI_EXCEPTION_(env, NULL);
  1094   CHECK_JNI_EXCEPTION_(env, NULL);
  1095   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
  1095   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
  1096   nmethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
  1096   CompiledMethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
  1097   jobjectArray result = NULL;
  1097   jobjectArray result = NULL;
  1098   if (code == NULL) {
  1098   if (code == NULL) {
  1099     return result;
  1099     return result;
  1100   }
  1100   }
  1101   int insts_size = code->insts_size();
  1101   int insts_size = code->insts_size();