< prev index next >

src/hotspot/share/runtime/objectMonitor.cpp

Print this page
rev 51780 : imported patch syncknobs-00-base
rev 51781 : imported patch syncknobs-01-Knob_ReportSettings
rev 51782 : imported patch syncknobs-02-Knob_SpinBackOff
rev 51783 : imported patch syncknobs-03-BackOffMask
rev 51784 : imported patch syncknobs-04-Knob_ExitRelease
rev 51785 : imported patch syncknobs-05-Knob_InlineNotify
rev 51786 : imported patch syncknobs-06-Knob_Verbose
rev 51787 : imported patch syncknobs-07-Knob_VerifyInUse
rev 51788 : imported patch syncknobs-08-Knob_VerifyMatch
rev 51789 : imported patch syncknobs-09-Knob_SpinBase

*** 101,111 **** // The knob* variables are effectively final. Once set they should // never be modified hence. Consider using __read_mostly with GCC. int ObjectMonitor::Knob_SpinLimit = 5000; // derived by an external tool - - static int Knob_SpinBase = 0; // Floor AKA SpinMin static int Knob_CASPenalty = -1; // Penalty for failed CAS static int Knob_OXPenalty = -1; // Penalty for observed _owner change static int Knob_SpinSetSucc = 1; // spinners set the _succ field static int Knob_SpinEarly = 1; static int Knob_SuccEnabled = 1; // futile wake throttling --- 101,110 ----
*** 1844,1854 **** // the # of failed spin attempts (or iterations) reaches some threshold. // This takes us into the realm of 1-out-of-N spinning, where we // hold the duration constant but vary the frequency. ctr = _SpinDuration; - if (ctr < Knob_SpinBase) ctr = Knob_SpinBase; if (ctr <= 0) return 0; if (Knob_SuccRestrict && _succ != NULL) return 0; if (Knob_OState && NotRunnable (Self, (Thread *) _owner)) { return 0; --- 1843,1852 ----
*** 2182,2192 **** // The initialization is idempotent, so we don't need locks. // In the future consider doing this via os::init_2(). if (!os::is_MP()) { Knob_SpinLimit = 0; - Knob_SpinBase = 0; Knob_PreSpin = 0; Knob_FixedSpin = -1; } OrderAccess::fence(); --- 2180,2189 ----
< prev index next >