src/share/vm/runtime/deoptimization.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8031320_8u Cdiff src/share/vm/runtime/deoptimization.cpp

src/share/vm/runtime/deoptimization.cpp

Print this page
rev 5968 : 8031320: Use Intel RTM instructions for locks
Summary: Use RTM for inflated locks and stack locks.
Reviewed-by: iveresov, twisti, roland, dcubed

*** 1283,1293 **** // Record this event in the histogram. gather_statistics(reason, action, trap_bc); // Ensure that we can record deopt. history: ! bool create_if_missing = ProfileTraps; MethodData* trap_mdo = get_method_data(thread, trap_method, create_if_missing); // Log a message --- 1283,1294 ---- // Record this event in the histogram. gather_statistics(reason, action, trap_bc); // Ensure that we can record deopt. history: ! // Need MDO to record RTM code generation state. ! bool create_if_missing = ProfileTraps RTM_OPT_ONLY( || UseRTMLocking ); MethodData* trap_mdo = get_method_data(thread, trap_method, create_if_missing); // Log a message
*** 1564,1573 **** --- 1565,1585 ---- int tstate0 = pdata->trap_state(); int tstate1 = trap_state_set_recompiled(tstate0, true); if (tstate1 != tstate0) pdata->set_trap_state(tstate1); } + + #if INCLUDE_RTM_OPT + // Restart collecting RTM locking abort statistic if the method + // is recompiled for a reason other than RTM state change. + // Assume that in new recompiled code the statistic could be different, + // for example, due to different inlining. + if ((reason != Reason_rtm_state_change) && (trap_mdo != NULL) && + UseRTMDeopt && (nm->rtm_state() != ProfileRTM)) { + trap_mdo->atomic_set_rtm_state(ProfileRTM); + } + #endif } if (inc_recompile_count) { trap_mdo->inc_overflow_recompile_count(); if ((uint)trap_mdo->overflow_recompile_count() >
*** 1821,1831 **** "constraint", "div0_check", "age", "predicate", "loop_limit_check", ! "speculate_class_check" }; const char* Deoptimization::_trap_action_name[Action_LIMIT] = { // Note: Keep this in sync. with enum DeoptAction. "none", "maybe_recompile", --- 1833,1844 ---- "constraint", "div0_check", "age", "predicate", "loop_limit_check", ! "speculate_class_check", ! "rtm_state_change" }; const char* Deoptimization::_trap_action_name[Action_LIMIT] = { // Note: Keep this in sync. with enum DeoptAction. "none", "maybe_recompile",
src/share/vm/runtime/deoptimization.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File