test/compiler/stable/StableConfiguration.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/test/compiler/stable/StableConfiguration.java Mon Feb 29 15:42:34 2016
--- new/test/compiler/stable/StableConfiguration.java Mon Feb 29 15:42:34 2016
*** 29,84 ****
--- 29,40 ----
import sun.hotspot.WhiteBox;
public class StableConfiguration {
static final WhiteBox WB = WhiteBox.getWhiteBox();
static final boolean isStableEnabled;
static final boolean isServerWithStable;
static {
Boolean value = WB.getBooleanVMFlag("FoldStableValues");
isStableEnabled = (value == null ? false : value);
isServerWithStable = isStableEnabled && get();
System.out.println("@Stable: " + (isStableEnabled ? "enabled" : "disabled"));
System.out.println("Server Compiler: " + get());
}
// The method 'get' below returns true if the method is server compiled
// and is used by the Stable tests to determine whether methods in
// general are being server compiled or not as the -XX:+FoldStableValues
// option is only applicable to -server.
//
// On aarch64 we DeOptimize when patching. This means that when the
// method is compiled as a result of -Xcomp it DeOptimizes immediately.
// The result is that getMethodCompilationLevel returns 0. This means
// the method returns true based on java.vm.name.
//
// However when the tests are run with -XX:+TieredCompilation and
// -XX:TieredStopAtLevel=1 this fails because methods will always
// be client compiled.
//
// Solution is to add a simple method 'get1' which should never be
// DeOpted and use that to determine the compilation level instead.
static void get1() {
}
// ::get() is among immediately compiled methods.
static boolean get() {
try {
get1();
Method m = StableConfiguration.class.getDeclaredMethod("get1");
int level = WB.getMethodCompilationLevel(m);
if (level > 0) {
return (level == 4);
} else {
String javaVM = System.getProperty("java.vm.name", "");
if (javaVM.contains("Server")) return true;
if (javaVM.contains("Client")) return false;
throw new Error("Unknown VM type: "+javaVM);
}
} catch (NoSuchMethodException e) {
throw new Error(e);
}
}
}
test/compiler/stable/StableConfiguration.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File