Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8082906 | emb-9 | Ed Nevill | P4 | Resolved | Fixed | team |
JDK-8279953 | 8u331 | Vaibhav Choudhary | P4 | Resolved | Fixed | b03 |
The following hotspot JTreg tests all currently fail.
compiler/stable/TestStableByte.java
compiler/stable/TestStableBoolean.java
compiler/stable/TestStableChar.java
compiler/stable/TestStableFloat.java
compiler/stable/TestStableObject.java
compiler/stable/TestStableDouble.java
compiler/stable/TestStableInt.java
compiler/stable/TestStableLong.java
compiler/stable/TestStableShort.java
This is due to the way the aarch64 port performs deoptimisation. This is best explained by the inline comment in the following patch.
--- old/test/compiler/stable/StableConfiguration.java 2015-05-29 10:46:33.464027000 +0000
+++ new/test/compiler/stable/StableConfiguration.java 2015-05-29 10:46:33.264027000 +0000
@@ -41,10 +41,32 @@
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 immiediately.
+ // 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 {
- Method m = StableConfiguration.class.getDeclaredMethod("get");
+ get1();
+ Method m = StableConfiguration.class.getDeclaredMethod("get1");
int level = WB.getMethodCompilationLevel(m);
if (level > 0) {
return (level == 4);
compiler/stable/TestStableByte.java
compiler/stable/TestStableBoolean.java
compiler/stable/TestStableChar.java
compiler/stable/TestStableFloat.java
compiler/stable/TestStableObject.java
compiler/stable/TestStableDouble.java
compiler/stable/TestStableInt.java
compiler/stable/TestStableLong.java
compiler/stable/TestStableShort.java
This is due to the way the aarch64 port performs deoptimisation. This is best explained by the inline comment in the following patch.
--- old/test/compiler/stable/StableConfiguration.java 2015-05-29 10:46:33.464027000 +0000
+++ new/test/compiler/stable/StableConfiguration.java 2015-05-29 10:46:33.264027000 +0000
@@ -41,10 +41,32 @@
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 immiediately.
+ // 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 {
- Method m = StableConfiguration.class.getDeclaredMethod("get");
+ get1();
+ Method m = StableConfiguration.class.getDeclaredMethod("get1");
int level = WB.getMethodCompilationLevel(m);
if (level > 0) {
return (level == 4);
- backported by
-
JDK-8082906 aarch64: JTreg TestStable tests failing
-
- Resolved
-
-
JDK-8279953 aarch64: JTreg TestStable tests failing
-
- Resolved
-