8206953: compiler/profiling/TestTypeProfiling.java fails when JVMCI build disabled
authorkvn
Thu, 12 Jul 2018 11:57:06 -0700
changeset 51073 34696f3aa22b
parent 51072 6a037fd949e4
child 51074 bf686c47c109
8206953: compiler/profiling/TestTypeProfiling.java fails when JVMCI build disabled Summary: restore original behavior when C2 is used Reviewed-by: thartmann, mdoerr, dnsimon, gdub
src/hotspot/share/runtime/deoptimization.cpp
test/hotspot/jtreg/compiler/profiling/TestTypeProfiling.java
--- a/src/hotspot/share/runtime/deoptimization.cpp	Thu Jul 12 11:24:10 2018 -0700
+++ b/src/hotspot/share/runtime/deoptimization.cpp	Thu Jul 12 11:57:06 2018 -0700
@@ -2044,7 +2044,7 @@
   bool ignore_maybe_prior_recompile;
   assert(!reason_is_speculate(reason), "reason speculate only used by compiler");
   // JVMCI uses the total counts to determine if deoptimizations are happening too frequently -> do not adjust total counts
-  bool update_total_counts = JVMCI_ONLY(false) NOT_JVMCI(true);
+  bool update_total_counts = true JVMCI_ONLY( && !UseJVMCICompiler);
   query_update_method_data(trap_mdo, trap_bci,
                            (DeoptReason)reason,
                            update_total_counts,
--- a/test/hotspot/jtreg/compiler/profiling/TestTypeProfiling.java	Thu Jul 12 11:24:10 2018 -0700
+++ b/test/hotspot/jtreg/compiler/profiling/TestTypeProfiling.java	Thu Jul 12 11:57:06 2018 -0700
@@ -117,22 +117,15 @@
         }
 
         // should deoptimize for speculative type check
+        // Intepreter will also add actual type check trap information into MDO
+        // when it throw ClassCastException
         if (!deoptimize(method, src_obj)) {
             throw new RuntimeException(method.getName() + " is not deoptimized");
         }
 
         // compile again
-        WHITE_BOX.enqueueMethodForCompilation(method, CompilerWhiteBoxTest.COMP_LEVEL_FULL_OPTIMIZATION);
-        if (!WHITE_BOX.isMethodCompiled(method)) {
-            throw new RuntimeException(method.getName() + " is not recompiled");
-        }
-
-        // should deoptimize for actual type check
-        if (!deoptimize(method, src_obj)) {
-            throw new RuntimeException(method.getName() + " is not deoptimized (should deoptimize for actual type check)");
-        }
-
-        // compile once again
+        // c2 will generate throw instead of uncommon trap because
+        // actual type check trap information is present in MDO
         WHITE_BOX.enqueueMethodForCompilation(method, CompilerWhiteBoxTest.COMP_LEVEL_FULL_OPTIMIZATION);
         if (!WHITE_BOX.isMethodCompiled(method)) {
             throw new RuntimeException(method.getName() + " is not recompiled");