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

Unified Diff: ppapi/shared_impl/var_tracker.cc

Issue 9786001: Avoid accessing VarTracker from multiple threads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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
« no previous file with comments | « ppapi/shared_impl/var_tracker.h ('k') | webkit/plugins/ppapi/host_var_tracker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/shared_impl/var_tracker.cc
diff --git a/ppapi/shared_impl/var_tracker.cc b/ppapi/shared_impl/var_tracker.cc
index 9e1abe897a7f6594c84d20d9b058841f2cddf315..a564fede019a7003d467035d750735646d82107f 100644
--- a/ppapi/shared_impl/var_tracker.cc
+++ b/ppapi/shared_impl/var_tracker.cc
@@ -33,10 +33,14 @@ VarTracker::~VarTracker() {
}
int32 VarTracker::AddVar(Var* var) {
+ DCHECK(CalledOnValidThread());
+
return AddVarInternal(var, ADD_VAR_TAKE_ONE_REFERENCE);
}
Var* VarTracker::GetVar(int32 var_id) const {
+ DCHECK(CalledOnValidThread());
+
VarMap::const_iterator result = live_vars_.find(var_id);
if (result == live_vars_.end())
return NULL;
@@ -44,12 +48,16 @@ Var* VarTracker::GetVar(int32 var_id) const {
}
Var* VarTracker::GetVar(const PP_Var& var) const {
+ DCHECK(CalledOnValidThread());
+
if (!IsVarTypeRefcounted(var.type))
return NULL;
return GetVar(static_cast<int32>(var.value.as_id));
}
bool VarTracker::AddRefVar(int32 var_id) {
+ DCHECK(CalledOnValidThread());
+
DLOG_IF(ERROR, !CheckIdType(var_id, PP_ID_TYPE_VAR))
<< var_id << " is not a PP_Var ID.";
VarMap::iterator found = live_vars_.find(var_id);
@@ -73,12 +81,16 @@ bool VarTracker::AddRefVar(int32 var_id) {
}
bool VarTracker::AddRefVar(const PP_Var& var) {
+ DCHECK(CalledOnValidThread());
+
if (!IsVarTypeRefcounted(var.type))
return false;
return AddRefVar(static_cast<int32>(var.value.as_id));
}
bool VarTracker::ReleaseVar(int32 var_id) {
+ DCHECK(CalledOnValidThread());
+
DLOG_IF(ERROR, !CheckIdType(var_id, PP_ID_TYPE_VAR))
<< var_id << " is not a PP_Var ID.";
VarMap::iterator found = live_vars_.find(var_id);
@@ -110,6 +122,8 @@ bool VarTracker::ReleaseVar(int32 var_id) {
}
bool VarTracker::ReleaseVar(const PP_Var& var) {
+ DCHECK(CalledOnValidThread());
+
if (!IsVarTypeRefcounted(var.type))
return false;
return ReleaseVar(static_cast<int32>(var.value.as_id));
@@ -132,6 +146,8 @@ VarTracker::VarMap::iterator VarTracker::GetLiveVar(int32 id) {
}
int VarTracker::GetRefCountForObject(const PP_Var& plugin_object) {
+ DCHECK(CalledOnValidThread());
+
VarMap::iterator found = GetLiveVar(plugin_object);
if (found == live_vars_.end())
return -1;
@@ -140,6 +156,8 @@ int VarTracker::GetRefCountForObject(const PP_Var& plugin_object) {
int VarTracker::GetTrackedWithNoReferenceCountForObject(
const PP_Var& plugin_object) {
+ DCHECK(CalledOnValidThread());
+
VarMap::iterator found = GetLiveVar(plugin_object);
if (found == live_vars_.end())
return -1;
@@ -160,6 +178,8 @@ bool VarTracker::IsVarTypeRefcounted(PP_VarType type) const {
}
PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes) {
+ DCHECK(CalledOnValidThread());
+
scoped_refptr<ArrayBufferVar> array_buffer(CreateArrayBuffer(size_in_bytes));
if (!array_buffer)
return PP_MakeNull();
@@ -168,6 +188,8 @@ PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes) {
PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes,
const void* data) {
+ DCHECK(CalledOnValidThread());
+
scoped_refptr<ArrayBufferVar> array_buffer(CreateArrayBuffer(size_in_bytes));
if (!array_buffer)
return PP_MakeNull();
@@ -176,6 +198,8 @@ PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes,
}
std::vector<PP_Var> VarTracker::GetLiveVars() {
+ DCHECK(CalledOnValidThread());
+
std::vector<PP_Var> var_vector;
var_vector.reserve(live_vars_.size());
for (VarMap::const_iterator iter = live_vars_.begin();
« no previous file with comments | « ppapi/shared_impl/var_tracker.h ('k') | webkit/plugins/ppapi/host_var_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698