Mercurial > hg > openjdk > aarch64-port > hotspot
changeset 7554:68cf8e406ce5
Fix failing TestStable tests
author | Edward Nevill edward.nevill@linaro.org |
---|---|
date | Wed, 24 Sep 2014 12:56:10 +0100 |
parents | 3fd0a587111e |
children | b1e1dda2c069 |
files | test/compiler/stable/StableConfiguration.java |
diffstat | 1 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/test/compiler/stable/StableConfiguration.java Tue Sep 23 18:34:47 2014 +0100 +++ b/test/compiler/stable/StableConfiguration.java Wed Sep 24 12:56:10 2014 +0100 @@ -41,10 +41,30 @@ 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);