Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 7 additions & 21 deletions hotspot/test/compiler/8009761/Test8009761.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,7 @@
* questions.
*/

import com.sun.management.HotSpotDiagnosticMXBean;
import com.sun.management.VMOption;
import sun.hotspot.WhiteBox;
import sun.management.ManagementFactoryHelper;

import java.lang.reflect.Method;

/*
Expand All @@ -41,6 +37,7 @@
public class Test8009761 {

private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
private static int COMP_LEVEL_SIMPLE = 1;
private static int COMP_LEVEL_FULL_OPTIMIZATION = 4;
private static Method m3 = null;

Expand Down Expand Up @@ -237,7 +234,7 @@ static Object m3(boolean overflow_stack, boolean deopt) {

static public void main(String[] args) {
// Make sure background compilation is disabled
if (backgroundCompilationEnabled()) {
if (WHITE_BOX.getBooleanVMFlag("BackgroundCompilation")) {
throw new RuntimeException("Background compilation enabled");
}

Expand All @@ -257,7 +254,11 @@ static public void main(String[] args) {
c1 = count;

// Force the compilation of m3() that will inline m1()
WHITE_BOX.enqueueMethodForCompilation(m3, COMP_LEVEL_FULL_OPTIMIZATION);
if(!WHITE_BOX.enqueueMethodForCompilation(m3, COMP_LEVEL_FULL_OPTIMIZATION)) {
// C2 compiler not available, compile with C1
WHITE_BOX.enqueueMethodForCompilation(m3, COMP_LEVEL_SIMPLE);
}

// Because background compilation is disabled, method should now be compiled
if(!WHITE_BOX.isMethodCompiled(m3)) {
throw new RuntimeException(m3 + " not compiled");
Expand All @@ -279,19 +280,4 @@ static public void main(String[] args) {
System.out.println("PASSED " + c1);
}
}

/**
* Checks if background compilation (-XX:+BackgroundCompilation) is enabled.
* @return True if background compilation is enabled, false otherwise
*/
private static boolean backgroundCompilationEnabled() {
HotSpotDiagnosticMXBean diagnostic = ManagementFactoryHelper.getDiagnosticMXBean();
VMOption backgroundCompilation;
try {
backgroundCompilation = diagnostic.getVMOption("BackgroundCompilation");
} catch (IllegalArgumentException e) {
return false;
}
return Boolean.valueOf(backgroundCompilation.getValue());
}
}