Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Unified Diff: third_party/WebKit/Source/wtf/ThreadRestrictionVerifier.h

Issue 2624443003: Enable ThreadRestrictionVerifier for StringImpl (Closed)
Patch Set: minimal const peppering Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/wtf/ThreadRestrictionVerifier.h
diff --git a/third_party/WebKit/Source/wtf/ThreadRestrictionVerifier.h b/third_party/WebKit/Source/wtf/ThreadRestrictionVerifier.h
index 15ea5fafba9463d71afe901b07985b18805b4909..5af787c33be67398929fa4470e76aed9070c09f7 100644
--- a/third_party/WebKit/Source/wtf/ThreadRestrictionVerifier.h
+++ b/third_party/WebKit/Source/wtf/ThreadRestrictionVerifier.h
@@ -48,14 +48,10 @@ class ThreadRestrictionVerifier {
public:
ThreadRestrictionVerifier() : m_shared(false), m_owningThread(0) {}
- void checkSafeToUse() const {
- // If this assert fires, it either indicates a thread safety issue or
- // that the verification needs to change.
- SECURITY_DCHECK(isSafeToUse());
- }
-
- // Call onRef() before refCount is incremented in ref().
- void onRef(int refCount) {
+ // Call onRef() before refCount is incremented in ref(). Returns whether the
+ // ref() is safe.
+ template <typename COUNTERTYPE>
+ bool onRef(COUNTERTYPE refCount) {
// Start thread verification as soon as the ref count gets to 2. This
// heuristic reflects the fact that items are often created on one
// thread and then given to another thread to be used.
@@ -66,17 +62,24 @@ class ThreadRestrictionVerifier {
// explicit.
if (refCount == 1)
setShared(true);
- checkSafeToUse();
+ return isSafeToUse();
}
- // Call onDeref() before refCount is decremented in deref().
- void onDeref(int refCount) {
- checkSafeToUse();
-
+ // Call onDeref() before refCount is decremented in deref(). Returns whether
+ // the deref() is safe.
+ template <typename COUNTERTYPE>
+ bool onDeref(COUNTERTYPE refCount) {
+ bool safe = isSafeToUse();
// Stop thread verification when the ref goes to 1 because it
// is safe to be passed to another thread at this point.
if (refCount == 2)
setShared(false);
+ return safe;
+ }
+
+ // Is it OK to use the object at this moment on the current thread?
+ bool isSafeToUse() const {
+ return !m_shared || m_owningThread == currentThread();
}
private:
@@ -94,14 +97,6 @@ class ThreadRestrictionVerifier {
m_owningThread = currentThread();
}
- // Is it OK to use the object at this moment on the current thread?
- bool isSafeToUse() const {
- if (!m_shared)
- return true;
-
- return m_owningThread == currentThread();
- }
-
bool m_shared;
ThreadIdentifier m_owningThread;

Powered by Google App Engine
This is Rietveld 408576698