comparison src/share/vm/c1/c1_LIRGenerator.cpp @ 3964:dc45ae774613

7096639: Tiered: Incorrect counter overflow handling for inlined methods Summary: Enable invocation events for inlinees Reviewed-by: kvn
author iveresov
date Thu, 29 Sep 2011 23:09:54 -0700
parents c8f2186acf6d
children 940513efe83a
comparison
equal deleted inserted replaced
3963:098acdf97f09 3964:dc45ae774613
2968 void LIRGenerator::do_ProfileInvoke(ProfileInvoke* x) { 2968 void LIRGenerator::do_ProfileInvoke(ProfileInvoke* x) {
2969 // We can safely ignore accessors here, since c2 will inline them anyway, 2969 // We can safely ignore accessors here, since c2 will inline them anyway,
2970 // accessors are also always mature. 2970 // accessors are also always mature.
2971 if (!x->inlinee()->is_accessor()) { 2971 if (!x->inlinee()->is_accessor()) {
2972 CodeEmitInfo* info = state_for(x, x->state(), true); 2972 CodeEmitInfo* info = state_for(x, x->state(), true);
2973 // Increment invocation counter, don't notify the runtime, because we don't inline loops, 2973 // Notify the runtime very infrequently only to take care of counter overflows
2974 increment_event_counter_impl(info, x->inlinee(), 0, InvocationEntryBci, false, false); 2974 increment_event_counter_impl(info, x->inlinee(), (1 << Tier23InlineeNotifyFreqLog) - 1, InvocationEntryBci, false, true);
2975 } 2975 }
2976 } 2976 }
2977 2977
2978 void LIRGenerator::increment_event_counter(CodeEmitInfo* info, int bci, bool backedge) { 2978 void LIRGenerator::increment_event_counter(CodeEmitInfo* info, int bci, bool backedge) {
2979 int freq_log; 2979 int freq_log;