comparison src/share/vm/runtime/objectMonitor.cpp @ 14309:63a4eb8bcd23

8025856: Fix typos in the GC code Summary: Fix about 440 typos in comments in the VM code Reviewed-by: mgerdin, tschatzl, coleenp, kmo, jcoomes
author jwilhelm
date Thu, 23 Jan 2014 14:47:23 +0100
parents f2110083203d
children c025990068c4
comparison
equal deleted inserted replaced
14308:870aedf4ba4f 14309:63a4eb8bcd23
232 // More precisely, the CAS-based "push" onto cxq is ABA-oblivious. 232 // More precisely, the CAS-based "push" onto cxq is ABA-oblivious.
233 // 233 //
234 // * Taken together, the cxq and the EntryList constitute or form a 234 // * Taken together, the cxq and the EntryList constitute or form a
235 // single logical queue of threads stalled trying to acquire the lock. 235 // single logical queue of threads stalled trying to acquire the lock.
236 // We use two distinct lists to improve the odds of a constant-time 236 // We use two distinct lists to improve the odds of a constant-time
237 // dequeue operation after acquisition (in the ::enter() epilog) and 237 // dequeue operation after acquisition (in the ::enter() epilogue) and
238 // to reduce heat on the list ends. (c.f. Michael Scott's "2Q" algorithm). 238 // to reduce heat on the list ends. (c.f. Michael Scott's "2Q" algorithm).
239 // A key desideratum is to minimize queue & monitor metadata manipulation 239 // A key desideratum is to minimize queue & monitor metadata manipulation
240 // that occurs while holding the monitor lock -- that is, we want to 240 // that occurs while holding the monitor lock -- that is, we want to
241 // minimize monitor lock holds times. Note that even a small amount of 241 // minimize monitor lock holds times. Note that even a small amount of
242 // fixed spinning will greatly reduce the # of enqueue-dequeue operations 242 // fixed spinning will greatly reduce the # of enqueue-dequeue operations
675 // by LDing cxq|EntryList. Newly arrived threads -- that is, threads 675 // by LDing cxq|EntryList. Newly arrived threads -- that is, threads
676 // that arrive on cxq after the ST:MEMBAR, above -- will set Responsible 676 // that arrive on cxq after the ST:MEMBAR, above -- will set Responsible
677 // non-null and elect a new "Responsible" timer thread. 677 // non-null and elect a new "Responsible" timer thread.
678 // 678 //
679 // This thread executes: 679 // This thread executes:
680 // ST Responsible=null; MEMBAR (in enter epilog - here) 680 // ST Responsible=null; MEMBAR (in enter epilogue - here)
681 // LD cxq|EntryList (in subsequent exit) 681 // LD cxq|EntryList (in subsequent exit)
682 // 682 //
683 // Entering threads in the slow/contended path execute: 683 // Entering threads in the slow/contended path execute:
684 // ST cxq=nonnull; MEMBAR; LD Responsible (in enter prolog) 684 // ST cxq=nonnull; MEMBAR; LD Responsible (in enter prolog)
685 // The (ST cxq; MEMBAR) is accomplished with CAS(). 685 // The (ST cxq; MEMBAR) is accomplished with CAS().
2029 if (MaxSpin >= 0) { 2029 if (MaxSpin >= 0) {
2030 if (_Spinner > MaxSpin) { 2030 if (_Spinner > MaxSpin) {
2031 TEVENT (Spin abort -- too many spinners) ; 2031 TEVENT (Spin abort -- too many spinners) ;
2032 return 0 ; 2032 return 0 ;
2033 } 2033 }
2034 // Slighty racy, but benign ... 2034 // Slightly racy, but benign ...
2035 Adjust (&_Spinner, 1) ; 2035 Adjust (&_Spinner, 1) ;
2036 } 2036 }
2037 2037
2038 // We're good to spin ... spin ingress. 2038 // We're good to spin ... spin ingress.
2039 // CONSIDER: use Prefetch::write() to avoid RTS->RTO upgrades 2039 // CONSIDER: use Prefetch::write() to avoid RTS->RTO upgrades