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

Side by Side Diff: src/isolate.h

Issue 2912773002: Rename "NoBarrier" memory operations to "Relaxed". (Closed)
Patch Set: comment Created 3 years, 6 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 | « src/inspector/v8-profiler-agent-impl.cc ('k') | src/isolate.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project 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 #ifndef V8_ISOLATE_H_ 5 #ifndef V8_ISOLATE_H_
6 #define V8_ISOLATE_H_ 6 #define V8_ISOLATE_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <queue> 9 #include <queue>
10 10
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 for (; limit_check && loop_var < for_with_handle_limit; increment) { \ 215 for (; limit_check && loop_var < for_with_handle_limit; increment) { \
216 body \ 216 body \
217 } \ 217 } \
218 } \ 218 } \
219 } while (false) 219 } while (false)
220 220
221 // Platform-independent, reliable thread identifier. 221 // Platform-independent, reliable thread identifier.
222 class ThreadId { 222 class ThreadId {
223 public: 223 public:
224 // Creates an invalid ThreadId. 224 // Creates an invalid ThreadId.
225 ThreadId() { base::NoBarrier_Store(&id_, kInvalidId); } 225 ThreadId() { base::Relaxed_Store(&id_, kInvalidId); }
226 226
227 ThreadId& operator=(const ThreadId& other) { 227 ThreadId& operator=(const ThreadId& other) {
228 base::NoBarrier_Store(&id_, base::NoBarrier_Load(&other.id_)); 228 base::Relaxed_Store(&id_, base::Relaxed_Load(&other.id_));
229 return *this; 229 return *this;
230 } 230 }
231 231
232 // Returns ThreadId for current thread. 232 // Returns ThreadId for current thread.
233 static ThreadId Current() { return ThreadId(GetCurrentThreadId()); } 233 static ThreadId Current() { return ThreadId(GetCurrentThreadId()); }
234 234
235 // Returns invalid ThreadId (guaranteed not to be equal to any thread). 235 // Returns invalid ThreadId (guaranteed not to be equal to any thread).
236 static ThreadId Invalid() { return ThreadId(kInvalidId); } 236 static ThreadId Invalid() { return ThreadId(kInvalidId); }
237 237
238 // Compares ThreadIds for equality. 238 // Compares ThreadIds for equality.
239 INLINE(bool Equals(const ThreadId& other) const) { 239 INLINE(bool Equals(const ThreadId& other) const) {
240 return base::NoBarrier_Load(&id_) == base::NoBarrier_Load(&other.id_); 240 return base::Relaxed_Load(&id_) == base::Relaxed_Load(&other.id_);
241 } 241 }
242 242
243 // Checks whether this ThreadId refers to any thread. 243 // Checks whether this ThreadId refers to any thread.
244 INLINE(bool IsValid() const) { 244 INLINE(bool IsValid() const) {
245 return base::NoBarrier_Load(&id_) != kInvalidId; 245 return base::Relaxed_Load(&id_) != kInvalidId;
246 } 246 }
247 247
248 // Converts ThreadId to an integer representation 248 // Converts ThreadId to an integer representation
249 // (required for public API: V8::V8::GetCurrentThreadId). 249 // (required for public API: V8::V8::GetCurrentThreadId).
250 int ToInteger() const { return static_cast<int>(base::NoBarrier_Load(&id_)); } 250 int ToInteger() const { return static_cast<int>(base::Relaxed_Load(&id_)); }
251 251
252 // Converts ThreadId to an integer representation 252 // Converts ThreadId to an integer representation
253 // (required for public API: V8::V8::TerminateExecution). 253 // (required for public API: V8::V8::TerminateExecution).
254 static ThreadId FromInteger(int id) { return ThreadId(id); } 254 static ThreadId FromInteger(int id) { return ThreadId(id); }
255 255
256 private: 256 private:
257 static const int kInvalidId = -1; 257 static const int kInvalidId = -1;
258 258
259 explicit ThreadId(int id) { base::NoBarrier_Store(&id_, id); } 259 explicit ThreadId(int id) { base::Relaxed_Store(&id_, id); }
260 260
261 static int AllocateThreadId(); 261 static int AllocateThreadId();
262 262
263 V8_EXPORT_PRIVATE static int GetCurrentThreadId(); 263 V8_EXPORT_PRIVATE static int GetCurrentThreadId();
264 264
265 base::Atomic32 id_; 265 base::Atomic32 id_;
266 266
267 static base::Atomic32 highest_thread_id_; 267 static base::Atomic32 highest_thread_id_;
268 268
269 friend class Isolate; 269 friend class Isolate;
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 516
517 // Returns the PerIsolateThreadData for the current thread (or NULL if one is 517 // Returns the PerIsolateThreadData for the current thread (or NULL if one is
518 // not currently set). 518 // not currently set).
519 static PerIsolateThreadData* CurrentPerIsolateThreadData() { 519 static PerIsolateThreadData* CurrentPerIsolateThreadData() {
520 return reinterpret_cast<PerIsolateThreadData*>( 520 return reinterpret_cast<PerIsolateThreadData*>(
521 base::Thread::GetThreadLocal(per_isolate_thread_data_key_)); 521 base::Thread::GetThreadLocal(per_isolate_thread_data_key_));
522 } 522 }
523 523
524 // Returns the isolate inside which the current thread is running. 524 // Returns the isolate inside which the current thread is running.
525 INLINE(static Isolate* Current()) { 525 INLINE(static Isolate* Current()) {
526 DCHECK(base::NoBarrier_Load(&isolate_key_created_) == 1); 526 DCHECK(base::Relaxed_Load(&isolate_key_created_) == 1);
527 Isolate* isolate = reinterpret_cast<Isolate*>( 527 Isolate* isolate = reinterpret_cast<Isolate*>(
528 base::Thread::GetExistingThreadLocal(isolate_key_)); 528 base::Thread::GetExistingThreadLocal(isolate_key_));
529 DCHECK(isolate != NULL); 529 DCHECK(isolate != NULL);
530 return isolate; 530 return isolate;
531 } 531 }
532 532
533 // Usually called by Init(), but can be called early e.g. to allow 533 // Usually called by Init(), but can be called early e.g. to allow
534 // testing components that require logging but not the whole 534 // testing components that require logging but not the whole
535 // isolate. 535 // isolate.
536 // 536 //
(...skipping 1280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 1817
1818 EmbeddedVector<char, 128> filename_; 1818 EmbeddedVector<char, 128> filename_;
1819 FILE* file_; 1819 FILE* file_;
1820 int scope_depth_; 1820 int scope_depth_;
1821 }; 1821 };
1822 1822
1823 } // namespace internal 1823 } // namespace internal
1824 } // namespace v8 1824 } // namespace v8
1825 1825
1826 #endif // V8_ISOLATE_H_ 1826 #endif // V8_ISOLATE_H_
OLDNEW
« no previous file with comments | « src/inspector/v8-profiler-agent-impl.cc ('k') | src/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698