< 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 >