[WTF] holdLock should be marked WARN_UNUSED_RETURN
authorrmorisset@apple.com <rmorisset@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Apr 2019 19:46:27 +0000 (19:46 +0000)
committerrmorisset@apple.com <rmorisset@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 16 Apr 2019 19:46:27 +0000 (19:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=196922

Reviewed by Keith Miller.

Source/JavaScriptCore:

There was one case where holdLock was used and the result ignored.
From a comment that was deleted in https://bugs.webkit.org/attachment.cgi?id=328438&action=prettypatch, I believe that it is on purpose.
So I brought back a variant of the comment, and made the ignoring of the return explicit.

* heap/BlockDirectory.cpp:
(JSC::BlockDirectory::isPagedOut):

Source/WTF:

* wtf/Locker.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244352 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/heap/BlockDirectory.cpp
Source/WTF/ChangeLog
Source/WTF/wtf/Locker.h

index 1e94bc9..af4f941 100644 (file)
@@ -1,3 +1,17 @@
+2019-04-16  Robin Morisset  <rmorisset@apple.com>
+
+        [WTF] holdLock should be marked WARN_UNUSED_RETURN
+        https://bugs.webkit.org/show_bug.cgi?id=196922
+
+        Reviewed by Keith Miller.
+
+        There was one case where holdLock was used and the result ignored.
+        From a comment that was deleted in https://bugs.webkit.org/attachment.cgi?id=328438&action=prettypatch, I believe that it is on purpose.
+        So I brought back a variant of the comment, and made the ignoring of the return explicit.
+
+        * heap/BlockDirectory.cpp:
+        (JSC::BlockDirectory::isPagedOut):
+
 2019-04-16  Caitlin Potter  <caitp@igalia.com>
 
         [JSC] Filter DontEnum properties in ProxyObject::getOwnPropertyNames()
index 5b0cf77..f076979 100644 (file)
@@ -61,8 +61,11 @@ bool BlockDirectory::isPagedOut(MonotonicTime deadline)
 {
     unsigned itersSinceLastTimeCheck = 0;
     for (auto* block : m_blocks) {
-        if (block)
-            holdLock(block->block().lock());
+        if (block) {
+            // We take and drop the lock as a way of touching that page of memory.
+            // FIXME: should we instead do a cheaper thing like a volatile load in the page?
+            (void) holdLock(block->block().lock());
+        }
         ++itersSinceLastTimeCheck;
         if (itersSinceLastTimeCheck >= Heap::s_timeCheckResolution) {
             MonotonicTime currentTime = MonotonicTime::now();
index bca0335..0bb5e65 100644 (file)
@@ -1,3 +1,12 @@
+2019-04-16  Robin Morisset  <rmorisset@apple.com>
+
+        [WTF] holdLock should be marked WARN_UNUSED_RETURN
+        https://bugs.webkit.org/show_bug.cgi?id=196922
+
+        Reviewed by Keith Miller.
+
+        * wtf/Locker.h:
+
 2019-04-16  Don Olmstead  <don.olmstead@sony.com>
 
         [CMake] Set WTF_SCRIPTS_DIR
index 55d79ca..a995379 100644 (file)
@@ -30,6 +30,7 @@
 
 #include <wtf/Assertions.h>
 #include <wtf/Atomics.h>
+#include <wtf/Compiler.h>
 #include <wtf/Noncopyable.h>
 
 namespace WTF {
@@ -119,18 +120,24 @@ private:
 // Use this lock scope like so:
 // auto locker = holdLock(lock);
 template<typename LockType>
+Locker<LockType> holdLock(LockType&) WARN_UNUSED_RETURN;
+template<typename LockType>
 Locker<LockType> holdLock(LockType& lock)
 {
     return Locker<LockType>(lock);
 }
 
 template<typename LockType>
+Locker<LockType> holdLockIf(LockType&, bool predicate) WARN_UNUSED_RETURN;
+template<typename LockType>
 Locker<LockType> holdLockIf(LockType& lock, bool predicate)
 {
     return Locker<LockType>(predicate ? &lock : nullptr);
 }
 
 template<typename LockType>
+Locker<LockType> tryHoldLock(LockType&) WARN_UNUSED_RETURN;
+template<typename LockType>
 Locker<LockType> tryHoldLock(LockType& lock)
 {
     return Locker<LockType>::tryLock(lock);