Changeset 295175 in webkit
- Timestamp:
- Jun 2, 2022, 11:45:05 PM (4 years ago)
- Location:
- branches/safari-613-branch
- Files:
-
- 5 edited
-
Source/WTF/wtf/ThreadAssertions.h (modified) (4 diffs)
-
Source/WTF/wtf/ThreadSafetyAnalysis.h (modified) (1 diff)
-
Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h (modified) (1 diff)
-
Tools/Scripts/webkitpy/style/checkers/cpp.py (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WTF/ThreadAssertionsTest.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-613-branch/Source/WTF/wtf/ThreadAssertions.h
r276706 r295175 42 42 // template<typename> void doTaskCompileFailure() { doTaskImpl(); } 43 43 // private: 44 // void doTaskImpl() WTF_REQUIRES_ LOCK(m_ownerThread);45 // int m_value WTF_GUARDED_BY_ LOCK(m_ownerThread) { 0 };44 // void doTaskImpl() WTF_REQUIRES_CAPABILITY(m_ownerThread); 45 // int m_value WTF_GUARDED_BY_CAPABILITY(m_ownerThread) { 0 }; 46 46 // NO_UNIQUE_ADDRESS ThreadAssertion m_ownerThread; 47 47 // }; 48 class WTF_CAPABILITY _LOCKThreadAssertion {48 class WTF_CAPABILITY("is current") ThreadAssertion { 49 49 public: 50 50 ThreadAssertion() = default; … … 65 65 }; 66 66 67 inline void assertIsCurrent(const ThreadAssertion& threadAssertion) WTF_ASSERTS_ACQUIRED_ LOCK(threadAssertion)67 inline void assertIsCurrent(const ThreadAssertion& threadAssertion) WTF_ASSERTS_ACQUIRED_CAPABILITY(threadAssertion) 68 68 { 69 69 ASSERT_UNUSED(threadAssertion, Thread::current().uid() == threadAssertion.m_uid); … … 75 75 // Example: 76 76 // extern NamedAssertion& mainThread; 77 // inline void assertIsMainThread() WTF_ASSERTS_ACQUIRED_ LOCK(mainThread);78 // void myTask() WTF_REQUIRES_ LOCK(mainThread) { printf("my task is running"); }77 // inline void assertIsMainThread() WTF_ASSERTS_ACQUIRED_CAPABILITY(mainThread); 78 // void myTask() WTF_REQUIRES_CAPABILITY(mainThread) { printf("my task is running"); } 79 79 // void runner() { 80 80 // assertIsMainThread(); … … 84 84 // myTask(); 85 85 // } 86 class WTF_CAPABILITY _LOCKNamedAssertion { };86 class WTF_CAPABILITY("is current") NamedAssertion { }; 87 87 88 // To be used with WTF_REQUIRES_ LOCK(mainThread). Symbol is undefined.88 // To be used with WTF_REQUIRES_CAPABILITY(mainThread). Symbol is undefined. 89 89 extern NamedAssertion& mainThread; 90 inline void assertIsMainThread() WTF_ASSERTS_ACQUIRED_ LOCK(mainThread) { ASSERT(isMainThread()); }90 inline void assertIsMainThread() WTF_ASSERTS_ACQUIRED_CAPABILITY(mainThread) { ASSERT(isMainThread()); } 91 91 92 // To be used with WTF_REQUIRES_ LOCK(mainRunLoop). Symbol is undefined.92 // To be used with WTF_REQUIRES_CAPABILITY(mainRunLoop). Symbol is undefined. 93 93 extern NamedAssertion& mainRunLoop; 94 inline void assertIsMainRunLoop() WTF_ASSERTS_ACQUIRED_ LOCK(mainRunLoop) { ASSERT(isMainRunLoop()); }94 inline void assertIsMainRunLoop() WTF_ASSERTS_ACQUIRED_CAPABILITY(mainRunLoop) { ASSERT(isMainRunLoop()); } 95 95 96 96 } -
branches/safari-613-branch/Source/WTF/wtf/ThreadSafetyAnalysis.h
r276247 r295175 36 36 #endif 37 37 38 #define WTF_ACQUIRES_ LOCK_IF(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(try_acquire_capability(__VA_ARGS__))39 #define WTF_ACQUIRES_ LOCK(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(acquire_capability(__VA_ARGS__))40 #define WTF_ACQUIRES_SHARED_ LOCK_IF(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(try_acquire_shared_capability(__VA_ARGS__))41 #define WTF_ACQUIRES_SHARED_ LOCK(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(acquire_shared_capability(__VA_ARGS__))42 #define WTF_ASSERTS_ACQUIRED_ LOCK(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(assert_capability(x))43 #define WTF_ASSERTS_ACQUIRED_SHARED_ LOCK(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(assert_shared_capability(x))44 #define WTF_CAPABILITY _LOCK WTF_THREAD_ANNOTATION_ATTRIBUTE(capability("mutex"))38 #define WTF_ACQUIRES_CAPABILITY_IF(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(try_acquire_capability(__VA_ARGS__)) 39 #define WTF_ACQUIRES_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(acquire_capability(__VA_ARGS__)) 40 #define WTF_ACQUIRES_SHARED_CAPABILITY_IF(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(try_acquire_shared_capability(__VA_ARGS__)) 41 #define WTF_ACQUIRES_SHARED_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(acquire_shared_capability(__VA_ARGS__)) 42 #define WTF_ASSERTS_ACQUIRED_CAPABILITY(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(assert_capability(x)) 43 #define WTF_ASSERTS_ACQUIRED_SHARED_CAPABILITY(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(assert_shared_capability(x)) 44 #define WTF_CAPABILITY(name) WTF_THREAD_ANNOTATION_ATTRIBUTE(capability(name)) 45 45 #define WTF_CAPABILITY_SCOPED_LOCK WTF_THREAD_ANNOTATION_ATTRIBUTE(scoped_lockable) 46 #define WTF_EXCLUDES_ LOCK(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(locks_excluded(__VA_ARGS__))47 #define WTF_GUARDED_BY_ LOCK(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(guarded_by(x))46 #define WTF_EXCLUDES_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(locks_excluded(__VA_ARGS__)) 47 #define WTF_GUARDED_BY_CAPABILITY(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(guarded_by(x)) 48 48 #define WTF_IGNORES_THREAD_SAFETY_ANALYSIS WTF_THREAD_ANNOTATION_ATTRIBUTE(no_thread_safety_analysis) 49 #define WTF_POINTEE_GUARDED_BY_LOCK(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(pt_guarded_by(x)) 50 #define WTF_RELEASES_LOCK_GENERIC(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(release_generic_capability(__VA_ARGS__)) 51 #define WTF_RELEASES_LOCK(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(release_capability(__VA_ARGS__)) 52 #define WTF_RELEASES_SHARED_LOCK(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(release_shared_capability(__VA_ARGS__)) 53 #define WTF_REQUIRES_LOCK(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(requires_capability(__VA_ARGS__)) 54 #define WTF_REQUIRES_SHARED_LOCK(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(requires_shared_capability(__VA_ARGS__)) 55 #define WTF_RETURNS_LOCK(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(lock_returned(x)) 49 #define WTF_POINTEE_GUARDED_BY_CAPABILITY(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(pt_guarded_by(x)) 50 #define WTF_RELEASES_GENERIC_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(release_generic_capability(__VA_ARGS__)) 51 #define WTF_RELEASES_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(release_capability(__VA_ARGS__)) 52 #define WTF_RELEASES_SHARED_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(release_shared_capability(__VA_ARGS__)) 53 #define WTF_REQUIRES_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(requires_capability(__VA_ARGS__)) 54 #define WTF_REQUIRES_SHARED_CAPABILITY(...) WTF_THREAD_ANNOTATION_ATTRIBUTE(requires_shared_capability(__VA_ARGS__)) 55 #define WTF_RETURNS_CAPABILITY(x) WTF_THREAD_ANNOTATION_ATTRIBUTE(lock_returned(x)) 56 57 // Using WTF_CAPABILITY_LOCK is a common use-case. Introduce terms containing "LOCK" for maximum readability. 58 #define WTF_ACQUIRES_LOCK_IF(...) WTF_ACQUIRES_CAPABILITY_IF(__VA_ARGS__) 59 #define WTF_ACQUIRES_LOCK(...) WTF_ACQUIRES_CAPABILITY(__VA_ARGS__) 60 #define WTF_ACQUIRES_SHARED_LOCK_IF(...) WTF_ACQUIRES_SHARED_CAPABILITY_IF(__VA_ARGS__) 61 #define WTF_ACQUIRES_SHARED_LOCK(...) WTF_ACQUIRES_SHARED_CAPABILITY(__VA_ARGS__) 62 #define WTF_ASSERTS_ACQUIRED_LOCK(x) WTF_ASSERTS_ACQUIRED_CAPABILITY(x) 63 #define WTF_ASSERTS_ACQUIRED_SHARED_LOCK(x) WTF_ASSERTS_ACQUIRED_SHARED_CAPABILITY(x) 64 #define WTF_CAPABILITY_LOCK WTF_CAPABILITY("lock") 65 #define WTF_EXCLUDES_LOCK(...) WTF_EXCLUDES_CAPABILITY(__VA_ARGS__) 66 #define WTF_GUARDED_BY_LOCK(x) WTF_GUARDED_BY_CAPABILITY(x) 67 #define WTF_POINTEE_GUARDED_BY_LOCK(x) WTF_POINTEE_GUARDED_BY_CAPABILITY(x) 68 #define WTF_RELEASES_GENERIC_LOCK(...) WTF_RELEASES_GENERIC_CAPABILITY(__VA_ARGS__) 69 #define WTF_RELEASES_LOCK(...) WTF_RELEASES_CAPABILITY(__VA_ARGS__) 70 #define WTF_RELEASES_SHARED_LOCK(...) WTF_RELEASES_SHARED_CAPABILITY(__VA_ARGS__) 71 #define WTF_REQUIRES_LOCK(...) WTF_REQUIRES_CAPABILITY(__VA_ARGS__) 72 #define WTF_REQUIRES_SHARED_LOCK(...) WTF_REQUIRES_SHARED_CAPABILITY(__VA_ARGS__) 73 #define WTF_RETURNS_LOCK(x) WTF_RETURNS_CAPABILITY(x) -
branches/safari-613-branch/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
r288984 r295175 143 143 Lock m_remoteDisplayListsLock; 144 144 bool m_canRegisterRemoteDisplayLists WTF_GUARDED_BY_LOCK(m_remoteDisplayListsLock) { false }; 145 HashMap<QualifiedRenderingResourceIdentifier, Ref<RemoteDisplayListRecorder>> m_remoteDisplayLists WTF_GUARDED_BY_ LOCK(m_remoteDisplayListsLock);145 HashMap<QualifiedRenderingResourceIdentifier, Ref<RemoteDisplayListRecorder>> m_remoteDisplayLists WTF_GUARDED_BY_CAPABILITY(m_remoteDisplayListsLock); 146 146 }; 147 147 -
branches/safari-613-branch/Tools/Scripts/webkitpy/style/checkers/cpp.py
r291673 r295175 4164 4164 and not modified_identifier == "LOG_CHANNEL" 4165 4165 and not modified_identifier == "WTF_GUARDED_BY_LOCK" 4166 and not modified_identifier == "WTF_GUARDED_BY_CAPABILITY" 4166 4167 and not modified_identifier.find('chrono_literals') >= 0): 4167 4168 error(line_number, 'readability/naming/underscores', 4, identifier + " is incorrectly named. Don't use underscores in your identifier names.") -
branches/safari-613-branch/Tools/TestWebKitAPI/Tests/WTF/ThreadAssertionsTest.cpp
r276706 r295175 47 47 template<typename T> void accessVariableCompileFailure(T n) { m_value = n; } 48 48 private: 49 int doTaskImpl(int n) WTF_REQUIRES_ LOCK(m_ownerThread) { return n + 1; }50 int m_value WTF_GUARDED_BY_ LOCK(m_ownerThread) { 0 };49 int doTaskImpl(int n) WTF_REQUIRES_CAPABILITY(m_ownerThread) { return n + 1; } 50 int m_value WTF_GUARDED_BY_CAPABILITY(m_ownerThread) { 0 }; 51 51 NO_UNIQUE_ADDRESS ThreadAssertion m_ownerThread; 52 52 }; … … 65 65 } 66 66 67 static int testMainThreadFunction() WTF_REQUIRES_ LOCK(mainThread) { return 11; }67 static int testMainThreadFunction() WTF_REQUIRES_CAPABILITY(mainThread) { return 11; } 68 68 69 69 TEST(WTF_ThreadAssertions, TestMainThreadNamedAssertion) … … 76 76 } 77 77 78 static int testMainRunLoopFunction() WTF_REQUIRES_ LOCK(mainRunLoop) { return 12; }78 static int testMainRunLoopFunction() WTF_REQUIRES_CAPABILITY(mainRunLoop) { return 12; } 79 79 80 80 TEST(WTF_ThreadAssertions, TestMainRunLoopNamedAssertion)
Note:
See TracChangeset
for help on using the changeset viewer.