< prev index next >
src/hotspot/share/runtime/objectMonitor.cpp
Print this page
rev 51814 : imported patch syncknobs-00-base
rev 51815 : imported patch syncknobs-01-Knob_ReportSettings
rev 51816 : imported patch syncknobs-02-Knob_SpinBackOff
rev 51817 : imported patch syncknobs-03-BackOffMask
rev 51818 : imported patch syncknobs-04-Knob_ExitRelease
rev 51820 : imported patch syncknobs-05-Knob_InlineNotify
rev 51821 : imported patch syncknobs-06-Knob_Verbose
rev 51822 : imported patch syncknobs-07-Knob_VerifyInUse
rev 51824 : imported patch syncknobs-08-Knob_VerifyMatch
rev 51825 : imported patch syncknobs-09-Knob_SpinBase
rev 51826 : imported patch syncknobs-10-Knob_CASPenalty
rev 51827 : imported patch syncknobs-11-Knob_OXPenalty
rev 51828 : imported patch syncknobs-12-Knob_SpinSetSucc
rev 51829 : imported patch syncknobs-13-Knob_SpinEarly
rev 51830 : imported patch syncknobs-14-Knob_SuccEnabled
rev 51831 : imported patch syncknobs-15-Knob_SuccRestrict
rev 51832 : imported patch syncknobs-16-Knob_MaxSpinners
rev 51833 : imported patch syncknobs-17-Knob_SpinAfterFutile
rev 51834 : imported patch syncknobs-18-Knob_OState
rev 51835 : imported patch syncknobs-19-Knob_UsePause
rev 51836 : imported patch syncknobs-20-Knob_ExitPolicy
rev 51837 : [mq]: syncknobs-20.2-Knob_ExitPolicy
@@ -909,18 +909,10 @@
// release semantics: prior loads and stores from within the critical section
// must not float (reorder) past the following store that drops the lock.
// On SPARC that requires MEMBAR #loadstore|#storestore.
// But of course in TSO #loadstore|#storestore is not required.
- // I'd like to write one of the following:
- // A. OrderAccess::release() ; _owner = NULL
- // B. OrderAccess::loadstore(); OrderAccess::storestore(); _owner = NULL;
- // Unfortunately OrderAccess::release() and OrderAccess::loadstore() both
- // store into a _dummy variable. That store is not needed, but can result
- // in massive wasteful coherency traffic on classic SMP systems.
- // Instead, I use release_store(), which is implemented as just a simple
- // ST on x64, x86 and SPARC.
OrderAccess::release_store(&_owner, (void*)NULL); // drop the lock
OrderAccess::storeload(); // See if we need to wake a successor
if ((intptr_t(_EntryList)|intptr_t(_cxq)) == 0 || _succ != NULL) {
return;
}
< prev index next >