--- old/src/hotspot/share/runtime/objectMonitor.cpp 2018-09-17 23:29:57.463744740 -0700 +++ new/src/hotspot/share/runtime/objectMonitor.cpp 2018-09-17 23:29:57.211744749 -0700 @@ -107,7 +107,6 @@ static int Knob_BonusB = 100; // spin success bonus static int Knob_Penalty = 200; // spin failure penalty static int Knob_Poverty = 1000; -static int Knob_SpinAfterFutile = 1; // Spin after returning from park() static int Knob_FixedSpin = 0; static int Knob_OState = 3; // Spinner checks thread state of _owner static int Knob_UsePause = 1; @@ -567,7 +566,7 @@ // We can defer clearing _succ until after the spin completes // TrySpin() must tolerate being called with _succ == Self. // Try yet another round of adaptive spinning. - if ((Knob_SpinAfterFutile & 1) && TrySpin(Self) > 0) break; + if (TrySpin(Self) > 0) break; // We can find that we were unpark()ed and redesignated _succ while // we were spinning. That's harmless. If we iterate and call park(), @@ -659,9 +658,7 @@ // contended slow-path from EnterI(). We use ReenterI() only for // monitor reentry in wait(). // -// In the future we should reconcile EnterI() and ReenterI(), adding -// Knob_Reset and Knob_SpinAfterFutile support and restructuring the -// loop accordingly. +// In the future we should reconcile EnterI() and ReenterI(). void ObjectMonitor::ReenterI(Thread * Self, ObjectWaiter * SelfNode) { assert(Self != NULL, "invariant");