7096639: Tiered: Incorrect counter overflow handling for inlined methods
authoriveresov
Thu, 29 Sep 2011 23:09:54 -0700
changeset 10569 f5ce1108443b
parent 10568 ef6fdc46c7c1
child 10570 7f509cc48fc7
7096639: Tiered: Incorrect counter overflow handling for inlined methods Summary: Enable invocation events for inlinees Reviewed-by: kvn
hotspot/src/share/vm/c1/c1_LIRGenerator.cpp
hotspot/src/share/vm/runtime/globals.hpp
--- a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp	Thu Sep 29 13:47:57 2011 -0700
+++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp	Thu Sep 29 23:09:54 2011 -0700
@@ -2970,8 +2970,8 @@
   // accessors are also always mature.
   if (!x->inlinee()->is_accessor()) {
     CodeEmitInfo* info = state_for(x, x->state(), true);
-    // Increment invocation counter, don't notify the runtime, because we don't inline loops,
-    increment_event_counter_impl(info, x->inlinee(), 0, InvocationEntryBci, false, false);
+    // Notify the runtime very infrequently only to take care of counter overflows
+    increment_event_counter_impl(info, x->inlinee(), (1 << Tier23InlineeNotifyFreqLog) - 1, InvocationEntryBci, false, true);
   }
 }
 
--- a/hotspot/src/share/vm/runtime/globals.hpp	Thu Sep 29 13:47:57 2011 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Thu Sep 29 23:09:54 2011 -0700
@@ -3521,6 +3521,9 @@
           "C1 with MDO profiling (tier 3) invocation notification "         \
           "frequency.")                                                     \
                                                                             \
+  product(intx, Tier23InlineeNotifyFreqLog, 20,                             \
+          "Inlinee invocation (tiers 2 and 3) notification frequency")      \
+                                                                            \
   product(intx, Tier0BackedgeNotifyFreqLog, 10,                             \
           "Interpreter (tier 0) invocation notification frequency.")        \
                                                                             \