< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
rev 54838 : [mq]: 8221734-v2
rev 54840 : [mq]: 8221734-v3-stress-test


 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(void, WB_DeoptimizeAll(JNIEnv* env, jobject o))
 824   MutexLocker mu(Compile_lock);
 825   CodeCache::mark_all_nmethods_for_deoptimization();
 826   VM_Deoptimize op;
 827   VMThread::execute(&op);
 828 WB_END
 829 
 830 WB_ENTRY(jint, WB_DeoptimizeMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 831   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 832   int result = 0;
 833   CHECK_JNI_EXCEPTION_(env, result);
 834   MutexLocker mu(Compile_lock);
 835   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 836   if (is_osr) {
 837     result += mh->mark_osr_nmethods();
 838   } else if (mh->code() != NULL) {
 839     mh->code()->mark_for_deoptimization();
 840     ++result;
 841   }
 842   result += CodeCache::mark_for_deoptimization(mh());
 843   if (result > 0) {
 844     VM_Deoptimize op;
 845     VMThread::execute(&op);
 846   }
 847   return result;
 848 WB_END
 849 
 850 WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 851   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 852   CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
 853   MutexLocker mu(Compile_lock);
 854   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 855   CompiledMethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 856   if (code == NULL) {
 857     return JNI_FALSE;
 858   }
 859   return (code->is_alive() && !code->is_marked_for_deoptimization());
 860 WB_END
 861 
 862 WB_ENTRY(jboolean, WB_IsMethodCompilable(JNIEnv* env, jobject o, jobject method, jint comp_level, jboolean is_osr))
 863   if (method == NULL || comp_level > MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier)) {
 864     return false;
 865   }




 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(void, WB_DeoptimizeAll(JNIEnv* env, jobject o))

 824   CodeCache::mark_all_nmethods_for_deoptimization();
 825   Deoptimization::deoptimize_all_marked();

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

 843   }
 844   return result;
 845 WB_END
 846 
 847 WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
 848   jmethodID jmid = reflected_method_to_jmid(thread, env, method);
 849   CHECK_JNI_EXCEPTION_(env, JNI_FALSE);
 850   MutexLocker mu(Compile_lock);
 851   methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
 852   CompiledMethod* code = is_osr ? mh->lookup_osr_nmethod_for(InvocationEntryBci, CompLevel_none, false) : mh->code();
 853   if (code == NULL) {
 854     return JNI_FALSE;
 855   }
 856   return (code->is_alive() && !code->is_marked_for_deoptimization());
 857 WB_END
 858 
 859 WB_ENTRY(jboolean, WB_IsMethodCompilable(JNIEnv* env, jobject o, jobject method, jint comp_level, jboolean is_osr))
 860   if (method == NULL || comp_level > MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier)) {
 861     return false;
 862   }


< prev index next >