summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaruel@chromium.org <maruel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-16 17:30:01 +0000
committermaruel@chromium.org <maruel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-16 17:30:01 +0000
commit2e1ef44951f2239bdc87c788ae6c6b781d2579c0 (patch)
tree3f83800add1ad593850a08f4210cdb9f2250e5a3
parent58b049c17e1f5400735c12edfeb1e75a4dd2d92a (diff)
downloadchromium_src-2e1ef44951f2239bdc87c788ae6c6b781d2579c0.zip
chromium_src-2e1ef44951f2239bdc87c788ae6c6b781d2579c0.tar.gz
chromium_src-2e1ef44951f2239bdc87c788ae6c6b781d2579c0.tar.bz2
Add thread safety checks but keep them disabled for now until I fix all the current places
where it triggers. Set back StoreRef as non-thread-safe. BUG5689 Review URL: http://codereview.chromium.org/18272 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8180 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/ref_counted.cc7
-rw-r--r--base/ref_counted.h3
-rw-r--r--base/revocable_store.h2
3 files changed, 11 insertions, 1 deletions
diff --git a/base/ref_counted.cc b/base/ref_counted.cc
index dfb3698..597c92c 100644
--- a/base/ref_counted.cc
+++ b/base/ref_counted.cc
@@ -5,6 +5,7 @@
#include "base/ref_counted.h"
#include "base/logging.h"
+#include "base/thread_collision_warner.h"
namespace base {
@@ -23,6 +24,9 @@ RefCountedBase::~RefCountedBase() {
}
void RefCountedBase::AddRef() {
+ // TODO(maruel): Add back once it doesn't assert 500 times/sec.
+ // Current thread books the critical section "AddRelease" without release it.
+ // DFAKE_SCOPED_LOCK_THREAD_LOCKED(add_release_);
#ifndef NDEBUG
DCHECK(!in_dtor_);
#endif
@@ -30,6 +34,9 @@ void RefCountedBase::AddRef() {
}
bool RefCountedBase::Release() {
+ // TODO(maruel): Add back once it doesn't assert 500 times/sec.
+ // Current thread books the critical section "AddRelease" without release it.
+ // DFAKE_SCOPED_LOCK_THREAD_LOCKED(add_release_);
#ifndef NDEBUG
DCHECK(!in_dtor_);
#endif
diff --git a/base/ref_counted.h b/base/ref_counted.h
index 2268808..853fa90 100644
--- a/base/ref_counted.h
+++ b/base/ref_counted.h
@@ -7,6 +7,7 @@
#include "base/atomic_ref_count.h"
#include "base/basictypes.h"
+#include "base/thread_collision_warner.h"
namespace base {
@@ -28,6 +29,8 @@ class RefCountedBase {
bool in_dtor_;
#endif
+ DFAKE_MUTEX(add_release_);
+
DISALLOW_COPY_AND_ASSIGN(RefCountedBase);
};
diff --git a/base/revocable_store.h b/base/revocable_store.h
index 2ee9705..60ada5c 100644
--- a/base/revocable_store.h
+++ b/base/revocable_store.h
@@ -17,7 +17,7 @@ class RevocableStore {
// store wishes to revoke its items, it sets |store_| to null. Items are
// permitted to release their reference to the |StoreRef| when they no longer
// require the store.
- class StoreRef : public base::RefCountedThreadSafe<StoreRef> {
+ class StoreRef : public base::RefCounted<StoreRef> {
public:
StoreRef(RevocableStore* store) : store_(store) { }