8060454: [TESTBUG] Whitebox tests fail with -XX:CompileThreshold=100
authorthartmann
Fri, 17 Oct 2014 10:04:45 +0200
changeset 27411 f0e4c5b36ecd
parent 27409 03622fc45677
child 27412 a1e0cabaa2c5
8060454: [TESTBUG] Whitebox tests fail with -XX:CompileThreshold=100 Summary: Move the call to 'waitAndDeoptimize' from the warmup methods to the osr triggering methods to make sure that no non-osr compilation is in the queue after warmup. Reviewed-by: kvn
hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java
--- a/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java	Thu Oct 16 12:57:04 2014 +0200
+++ b/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java	Fri Oct 17 10:04:45 2014 +0200
@@ -530,7 +530,7 @@
          * @param e Executable
          * @throws Exception
          */
-        private static void waitAndDeoptimize(Executable e) throws Exception {
+        private static void waitAndDeoptimize(Executable e) {
             CompilerWhiteBoxTest.waitBackgroundCompilation(e);
             if (WhiteBox.getWhiteBox().isMethodQueuedForCompilation(e)) {
                 throw new RuntimeException(e + " must not be in queue");
@@ -554,8 +554,6 @@
             for (long i = 0; i < CompilerWhiteBoxTest.OSR_WARMUP; ++i) {
                 result += (int)m.invoke(helper, 1);
             }
-            // Deoptimize non-osr versions
-            waitAndDeoptimize(m);
             return result;
         }
 
@@ -573,8 +571,6 @@
             for (long i = 0; i < CompilerWhiteBoxTest.OSR_WARMUP; ++i) {
                 result += c.newInstance(null, 1).hashCode();
             }
-            // Deoptimize non-osr versions
-            waitAndDeoptimize(c);
             return result;
         }
 
@@ -623,6 +619,11 @@
         }
 
         private static int osrStaticMethod(long limit) {
+            if (limit != 1) {
+              // Make sure there is no compiled version after warmup
+              waitAndDeoptimize(OSR_STATIC);
+            }
+            // Trigger osr compilation
             int result = 0;
             for (long i = 0; i < limit; ++i) {
                 result += staticMethod();
@@ -631,6 +632,11 @@
         }
 
         private int osrMethod(long limit) {
+            if (limit != 1) {
+              // Make sure there is no compiled version after warmup
+              waitAndDeoptimize(OSR_METHOD);
+            }
+            // Trigger osr compilation
             int result = 0;
             for (long i = 0; i < limit; ++i) {
                 result += method();
@@ -647,6 +653,11 @@
 
         // for OSR constructor test case
         private Helper(Object o, long limit) {
+            if (limit != 1) {
+              // Make sure there is no compiled version after warmup
+              waitAndDeoptimize(OSR_CONSTRUCTOR);
+            }
+            // Trigger osr compilation
             int result = 0;
             for (long i = 0; i < limit; ++i) {
                 result += method();