Changeset 196917 in webkit
- Timestamp:
- Feb 22, 2016, 1:30:51 AM (10 years ago)
- Location:
- releases/WebKitGTK/webkit-2.10/Source/WTF
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
releases/WebKitGTK/webkit-2.10/Source/WTF/ChangeLog
r195192 r196917 1 2016-02-08 Filip Pizlo <fpizlo@apple.com> 2 3 Make sure that locking code that relies on module boundaries for compiler fences uses NEVER_INLINE 4 https://bugs.webkit.org/show_bug.cgi?id=153972 5 6 Reviewed by Andreas Kling. 7 8 When this code was written, we assumed that module boundaries were compiler fences. That might 9 not be the case if we ever do LTO. 10 11 * wtf/Lock.cpp: 12 (WTF::LockBase::lockSlow): 13 (WTF::LockBase::unlockSlow): 14 * wtf/ParkingLot.cpp: 15 (WTF::ParkingLot::parkConditionally): 16 (WTF::ParkingLot::unparkOne): 17 (WTF::ParkingLot::unparkAll): 18 (WTF::ParkingLot::forEach): 19 * wtf/WordLock.cpp: 20 (WTF::WordLock::lockSlow): 21 (WTF::WordLock::unlockSlow): 22 1 23 2015-12-20 Michael Catanzaro <mcatanzaro@igalia.com> 2 24 -
releases/WebKitGTK/webkit-2.10/Source/WTF/wtf/Lock.cpp
r188907 r196917 37 37 static const bool verbose = false; 38 38 39 void LockBase::lockSlow()39 NEVER_INLINE void LockBase::lockSlow() 40 40 { 41 41 unsigned spinCount = 0; … … 75 75 } 76 76 77 void LockBase::unlockSlow()77 NEVER_INLINE void LockBase::unlockSlow() 78 78 { 79 79 // We could get here because the weak CAS in unlock() failed spuriously, or because there is -
releases/WebKitGTK/webkit-2.10/Source/WTF/wtf/ParkingLot.cpp
r189724 r196917 508 508 } // anonymous namespace 509 509 510 bool ParkingLot::parkConditionally(510 NEVER_INLINE bool ParkingLot::parkConditionally( 511 511 const void* address, 512 512 std::function<bool()> validation, … … 593 593 } 594 594 595 bool ParkingLot::unparkOne(const void* address)595 NEVER_INLINE bool ParkingLot::unparkOne(const void* address) 596 596 { 597 597 if (verbose) … … 624 624 } 625 625 626 void ParkingLot::unparkOne(626 NEVER_INLINE void ParkingLot::unparkOne( 627 627 const void* address, 628 628 std::function<void(bool didUnparkThread, bool mayHaveMoreThreads)> callback) … … 657 657 } 658 658 659 void ParkingLot::unparkAll(const void* address)659 NEVER_INLINE void ParkingLot::unparkAll(const void* address) 660 660 { 661 661 if (verbose) … … 691 691 } 692 692 693 void ParkingLot::forEach(std::function<void(ThreadIdentifier, const void*)> callback)693 NEVER_INLINE void ParkingLot::forEach(std::function<void(ThreadIdentifier, const void*)> callback) 694 694 { 695 695 Vector<Bucket*> bucketsToUnlock = lockHashtable(); -
releases/WebKitGTK/webkit-2.10/Source/WTF/wtf/WordLock.cpp
r188323 r196917 78 78 } // anonymous namespace 79 79 80 void WordLock::lockSlow()80 NEVER_INLINE void WordLock::lockSlow() 81 81 { 82 82 unsigned spinCount = 0; … … 179 179 } 180 180 181 void WordLock::unlockSlow()181 NEVER_INLINE void WordLock::unlockSlow() 182 182 { 183 183 // The fast path can fail either because of spurious weak CAS failure, or because someone put a
Note:
See TracChangeset
for help on using the changeset viewer.