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

Side by Side Diff: ppapi/shared_impl/var_tracker.cc

Issue 1548813002: Switch to standard integer types in ppapi/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes Created 4 years, 12 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 unified diff | Download patch
« no previous file with comments | « ppapi/shared_impl/var_tracker.h ('k') | ppapi/tests/blink_test_plugin.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/shared_impl/var_tracker.h" 5 #include "ppapi/shared_impl/var_tracker.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <limits> 9 #include <limits>
10 10
(...skipping 20 matching lines...) Expand all
31 31
32 VarTracker::~VarTracker() {} 32 VarTracker::~VarTracker() {}
33 33
34 void VarTracker::CheckThreadingPreconditions() const { 34 void VarTracker::CheckThreadingPreconditions() const {
35 DCHECK(!thread_checker_ || thread_checker_->CalledOnValidThread()); 35 DCHECK(!thread_checker_ || thread_checker_->CalledOnValidThread());
36 #ifndef NDEBUG 36 #ifndef NDEBUG
37 ProxyLock::AssertAcquired(); 37 ProxyLock::AssertAcquired();
38 #endif 38 #endif
39 } 39 }
40 40
41 int32 VarTracker::AddVar(Var* var) { 41 int32_t VarTracker::AddVar(Var* var) {
42 CheckThreadingPreconditions(); 42 CheckThreadingPreconditions();
43 43
44 return AddVarInternal(var, ADD_VAR_TAKE_ONE_REFERENCE); 44 return AddVarInternal(var, ADD_VAR_TAKE_ONE_REFERENCE);
45 } 45 }
46 46
47 Var* VarTracker::GetVar(int32 var_id) const { 47 Var* VarTracker::GetVar(int32_t var_id) const {
48 CheckThreadingPreconditions(); 48 CheckThreadingPreconditions();
49 49
50 VarMap::const_iterator result = live_vars_.find(var_id); 50 VarMap::const_iterator result = live_vars_.find(var_id);
51 if (result == live_vars_.end()) 51 if (result == live_vars_.end())
52 return NULL; 52 return NULL;
53 return result->second.var.get(); 53 return result->second.var.get();
54 } 54 }
55 55
56 Var* VarTracker::GetVar(const PP_Var& var) const { 56 Var* VarTracker::GetVar(const PP_Var& var) const {
57 CheckThreadingPreconditions(); 57 CheckThreadingPreconditions();
58 58
59 if (!IsVarTypeRefcounted(var.type)) 59 if (!IsVarTypeRefcounted(var.type))
60 return NULL; 60 return NULL;
61 return GetVar(static_cast<int32>(var.value.as_id)); 61 return GetVar(static_cast<int32_t>(var.value.as_id));
62 } 62 }
63 63
64 bool VarTracker::AddRefVar(int32 var_id) { 64 bool VarTracker::AddRefVar(int32_t var_id) {
65 CheckThreadingPreconditions(); 65 CheckThreadingPreconditions();
66 66
67 DLOG_IF(ERROR, !CheckIdType(var_id, PP_ID_TYPE_VAR)) 67 DLOG_IF(ERROR, !CheckIdType(var_id, PP_ID_TYPE_VAR))
68 << var_id << " is not a PP_Var ID."; 68 << var_id << " is not a PP_Var ID.";
69 VarMap::iterator found = live_vars_.find(var_id); 69 VarMap::iterator found = live_vars_.find(var_id);
70 if (found == live_vars_.end()) { 70 if (found == live_vars_.end()) {
71 NOTREACHED(); // Invalid var. 71 NOTREACHED(); // Invalid var.
72 return false; 72 return false;
73 } 73 }
74 74
75 VarInfo& info = found->second; 75 VarInfo& info = found->second;
76 if (info.ref_count == 0) { 76 if (info.ref_count == 0) {
77 // All live vars with no refcount should be tracked objects. 77 // All live vars with no refcount should be tracked objects.
78 DCHECK(info.track_with_no_reference_count > 0); 78 DCHECK(info.track_with_no_reference_count > 0);
79 DCHECK(info.var->GetType() == PP_VARTYPE_OBJECT); 79 DCHECK(info.var->GetType() == PP_VARTYPE_OBJECT);
80 80
81 TrackedObjectGettingOneRef(found); 81 TrackedObjectGettingOneRef(found);
82 } 82 }
83 83
84 // Basic refcount increment. 84 // Basic refcount increment.
85 info.ref_count++; 85 info.ref_count++;
86 return true; 86 return true;
87 } 87 }
88 88
89 bool VarTracker::AddRefVar(const PP_Var& var) { 89 bool VarTracker::AddRefVar(const PP_Var& var) {
90 CheckThreadingPreconditions(); 90 CheckThreadingPreconditions();
91 91
92 if (!IsVarTypeRefcounted(var.type)) 92 if (!IsVarTypeRefcounted(var.type))
93 return true; 93 return true;
94 return AddRefVar(static_cast<int32>(var.value.as_id)); 94 return AddRefVar(static_cast<int32_t>(var.value.as_id));
95 } 95 }
96 96
97 bool VarTracker::ReleaseVar(int32 var_id) { 97 bool VarTracker::ReleaseVar(int32_t var_id) {
98 CheckThreadingPreconditions(); 98 CheckThreadingPreconditions();
99 99
100 DLOG_IF(ERROR, !CheckIdType(var_id, PP_ID_TYPE_VAR)) 100 DLOG_IF(ERROR, !CheckIdType(var_id, PP_ID_TYPE_VAR))
101 << var_id << " is not a PP_Var ID."; 101 << var_id << " is not a PP_Var ID.";
102 VarMap::iterator found = live_vars_.find(var_id); 102 VarMap::iterator found = live_vars_.find(var_id);
103 if (found == live_vars_.end()) 103 if (found == live_vars_.end())
104 return false; 104 return false;
105 105
106 VarInfo& info = found->second; 106 VarInfo& info = found->second;
107 if (info.ref_count == 0) { 107 if (info.ref_count == 0) {
(...skipping 19 matching lines...) Expand all
127 } 127 }
128 } 128 }
129 return true; 129 return true;
130 } 130 }
131 131
132 bool VarTracker::ReleaseVar(const PP_Var& var) { 132 bool VarTracker::ReleaseVar(const PP_Var& var) {
133 CheckThreadingPreconditions(); 133 CheckThreadingPreconditions();
134 134
135 if (!IsVarTypeRefcounted(var.type)) 135 if (!IsVarTypeRefcounted(var.type))
136 return false; 136 return false;
137 return ReleaseVar(static_cast<int32>(var.value.as_id)); 137 return ReleaseVar(static_cast<int32_t>(var.value.as_id));
138 } 138 }
139 139
140 int32 VarTracker::AddVarInternal(Var* var, AddVarRefMode mode) { 140 int32_t VarTracker::AddVarInternal(Var* var, AddVarRefMode mode) {
141 // If the plugin manages to create millions of strings. 141 // If the plugin manages to create millions of strings.
142 if (last_var_id_ == std::numeric_limits<int32>::max() >> kPPIdTypeBits) 142 if (last_var_id_ == std::numeric_limits<int32_t>::max() >> kPPIdTypeBits)
143 return 0; 143 return 0;
144 144
145 int32 new_id = MakeTypedId(++last_var_id_, PP_ID_TYPE_VAR); 145 int32_t new_id = MakeTypedId(++last_var_id_, PP_ID_TYPE_VAR);
146 std::pair<VarMap::iterator, bool> was_inserted = 146 std::pair<VarMap::iterator, bool> was_inserted =
147 live_vars_.insert(std::make_pair( 147 live_vars_.insert(std::make_pair(
148 new_id, VarInfo(var, mode == ADD_VAR_TAKE_ONE_REFERENCE ? 1 : 0))); 148 new_id, VarInfo(var, mode == ADD_VAR_TAKE_ONE_REFERENCE ? 1 : 0)));
149 // We should never insert an ID that already exists. 149 // We should never insert an ID that already exists.
150 DCHECK(was_inserted.second); 150 DCHECK(was_inserted.second);
151 151
152 return new_id; 152 return new_id;
153 } 153 }
154 154
155 VarTracker::VarMap::iterator VarTracker::GetLiveVar(int32 id) { 155 VarTracker::VarMap::iterator VarTracker::GetLiveVar(int32_t id) {
156 return live_vars_.find(id); 156 return live_vars_.find(id);
157 } 157 }
158 158
159 int VarTracker::GetRefCountForObject(const PP_Var& plugin_object) { 159 int VarTracker::GetRefCountForObject(const PP_Var& plugin_object) {
160 CheckThreadingPreconditions(); 160 CheckThreadingPreconditions();
161 161
162 VarMap::iterator found = GetLiveVar(plugin_object); 162 VarMap::iterator found = GetLiveVar(plugin_object);
163 if (found == live_vars_.end()) 163 if (found == live_vars_.end())
164 return -1; 164 return -1;
165 return found->second.ref_count; 165 return found->second.ref_count;
166 } 166 }
167 167
168 int VarTracker::GetTrackedWithNoReferenceCountForObject( 168 int VarTracker::GetTrackedWithNoReferenceCountForObject(
169 const PP_Var& plugin_object) { 169 const PP_Var& plugin_object) {
170 CheckThreadingPreconditions(); 170 CheckThreadingPreconditions();
171 171
172 VarMap::iterator found = GetLiveVar(plugin_object); 172 VarMap::iterator found = GetLiveVar(plugin_object);
173 if (found == live_vars_.end()) 173 if (found == live_vars_.end())
174 return -1; 174 return -1;
175 return found->second.track_with_no_reference_count; 175 return found->second.track_with_no_reference_count;
176 } 176 }
177 177
178 // static 178 // static
179 bool VarTracker::IsVarTypeRefcounted(PP_VarType type) { 179 bool VarTracker::IsVarTypeRefcounted(PP_VarType type) {
180 return type >= PP_VARTYPE_STRING; 180 return type >= PP_VARTYPE_STRING;
181 } 181 }
182 182
183 VarTracker::VarMap::iterator VarTracker::GetLiveVar(const PP_Var& var) { 183 VarTracker::VarMap::iterator VarTracker::GetLiveVar(const PP_Var& var) {
184 return live_vars_.find(static_cast<int32>(var.value.as_id)); 184 return live_vars_.find(static_cast<int32_t>(var.value.as_id));
185 } 185 }
186 186
187 VarTracker::VarMap::const_iterator VarTracker::GetLiveVar(const PP_Var& var) 187 VarTracker::VarMap::const_iterator VarTracker::GetLiveVar(const PP_Var& var)
188 const { 188 const {
189 return live_vars_.find(static_cast<int32>(var.value.as_id)); 189 return live_vars_.find(static_cast<int32_t>(var.value.as_id));
190 } 190 }
191 191
192 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes) { 192 PP_Var VarTracker::MakeArrayBufferPPVar(uint32_t size_in_bytes) {
193 CheckThreadingPreconditions(); 193 CheckThreadingPreconditions();
194 194
195 scoped_refptr<ArrayBufferVar> array_buffer(CreateArrayBuffer(size_in_bytes)); 195 scoped_refptr<ArrayBufferVar> array_buffer(CreateArrayBuffer(size_in_bytes));
196 if (!array_buffer.get()) 196 if (!array_buffer.get())
197 return PP_MakeNull(); 197 return PP_MakeNull();
198 return array_buffer->GetPPVar(); 198 return array_buffer->GetPPVar();
199 } 199 }
200 200
201 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes, 201 PP_Var VarTracker::MakeArrayBufferPPVar(uint32_t size_in_bytes,
202 const void* data) { 202 const void* data) {
203 CheckThreadingPreconditions(); 203 CheckThreadingPreconditions();
204 204
205 ArrayBufferVar* array_buffer = MakeArrayBufferVar(size_in_bytes, data); 205 ArrayBufferVar* array_buffer = MakeArrayBufferVar(size_in_bytes, data);
206 return array_buffer ? array_buffer->GetPPVar() : PP_MakeNull(); 206 return array_buffer ? array_buffer->GetPPVar() : PP_MakeNull();
207 } 207 }
208 208
209 ArrayBufferVar* VarTracker::MakeArrayBufferVar(uint32 size_in_bytes, 209 ArrayBufferVar* VarTracker::MakeArrayBufferVar(uint32_t size_in_bytes,
210 const void* data) { 210 const void* data) {
211 CheckThreadingPreconditions(); 211 CheckThreadingPreconditions();
212 212
213 ArrayBufferVar* array_buffer(CreateArrayBuffer(size_in_bytes)); 213 ArrayBufferVar* array_buffer(CreateArrayBuffer(size_in_bytes));
214 if (!array_buffer) 214 if (!array_buffer)
215 return NULL; 215 return NULL;
216 memcpy(array_buffer->Map(), data, size_in_bytes); 216 memcpy(array_buffer->Map(), data, size_in_bytes);
217 return array_buffer; 217 return array_buffer;
218 } 218 }
219 219
220 PP_Var VarTracker::MakeArrayBufferPPVar(uint32 size_in_bytes, 220 PP_Var VarTracker::MakeArrayBufferPPVar(uint32_t size_in_bytes,
221 base::SharedMemoryHandle handle) { 221 base::SharedMemoryHandle handle) {
222 CheckThreadingPreconditions(); 222 CheckThreadingPreconditions();
223 223
224 scoped_refptr<ArrayBufferVar> array_buffer( 224 scoped_refptr<ArrayBufferVar> array_buffer(
225 CreateShmArrayBuffer(size_in_bytes, handle)); 225 CreateShmArrayBuffer(size_in_bytes, handle));
226 if (!array_buffer.get()) 226 if (!array_buffer.get())
227 return PP_MakeNull(); 227 return PP_MakeNull();
228 return array_buffer->GetPPVar(); 228 return array_buffer->GetPPVar();
229 } 229 }
230 230
(...skipping 29 matching lines...) Expand all
260 bool VarTracker::DeleteObjectInfoIfNecessary(VarMap::iterator iter) { 260 bool VarTracker::DeleteObjectInfoIfNecessary(VarMap::iterator iter) {
261 if (iter->second.ref_count != 0 || 261 if (iter->second.ref_count != 0 ||
262 iter->second.track_with_no_reference_count != 0) 262 iter->second.track_with_no_reference_count != 0)
263 return false; // Object still alive. 263 return false; // Object still alive.
264 iter->second.var->ResetVarID(); 264 iter->second.var->ResetVarID();
265 live_vars_.erase(iter); 265 live_vars_.erase(iter);
266 return true; 266 return true;
267 } 267 }
268 268
269 } // namespace ppapi 269 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/shared_impl/var_tracker.h ('k') | ppapi/tests/blink_test_plugin.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698