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(); |