8239423: jdk/jfr/jvm/TestJFRIntrinsic.java failed with -XX:-TieredCompilation

Reviewed-by: iignatyev, dholmes
This commit is contained in:
Ao Qi 2020-02-26 00:07:21 -05:00
parent f6e5c5a7ea
commit 2298819af8

View File

@ -821,6 +821,10 @@ static jmethodID reflected_method_to_jmid(JavaThread* thread, JNIEnv* env, jobje
return env->FromReflectedMethod(method);
}
static CompLevel highestCompLevel() {
return TieredCompilation ? MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier) : CompLevel_highest_tier;
}
// Deoptimizes all compiled frames and makes nmethods not entrant if it's requested
class VM_WhiteBoxDeoptimizeFrames : public VM_WhiteBoxOperation {
private:
@ -894,7 +898,7 @@ WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method, j
WB_END
WB_ENTRY(jboolean, WB_IsMethodCompilable(JNIEnv* env, jobject o, jobject method, jint comp_level, jboolean is_osr))
if (method == NULL || comp_level > MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier)) {
if (method == NULL || comp_level > highestCompLevel()) {
return false;
}
jmethodID jmid = reflected_method_to_jmid(thread, env, method);
@ -917,7 +921,7 @@ WB_ENTRY(jboolean, WB_IsMethodQueuedForCompilation(JNIEnv* env, jobject o, jobje
WB_END
WB_ENTRY(jboolean, WB_IsIntrinsicAvailable(JNIEnv* env, jobject o, jobject method, jobject compilation_context, jint compLevel))
if (compLevel < CompLevel_none || compLevel > MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier)) {
if (compLevel < CompLevel_none || compLevel > highestCompLevel()) {
return false; // Intrinsic is not available on a non-existent compilation level.
}
jmethodID method_id, compilation_context_id;
@ -1003,7 +1007,7 @@ bool WhiteBox::compile_method(Method* method, int comp_level, int bci, Thread* T
tty->print_cr("WB error: request to compile NULL method");
return false;
}
if (comp_level > MIN2((CompLevel) TieredStopAtLevel, CompLevel_highest_tier)) {
if (comp_level > highestCompLevel()) {
tty->print_cr("WB error: invalid compilation level %d", comp_level);
return false;
}