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

Side by Side Diff: third_party/WebKit/Source/platform/heap/ThreadState.h

Issue 2680843006: Tidy DEFINE_(THREAD_SAFE_)STATIC_LOCAL() implementations. (Closed)
Patch Set: explain safety of HTMLTableSectionElement singletons Created 3 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 explicit GCForbiddenScope(ThreadState* threadState) 294 explicit GCForbiddenScope(ThreadState* threadState)
295 : m_threadState(threadState) { 295 : m_threadState(threadState) {
296 m_threadState->enterGCForbiddenScope(); 296 m_threadState->enterGCForbiddenScope();
297 } 297 }
298 ~GCForbiddenScope() { m_threadState->leaveGCForbiddenScope(); } 298 ~GCForbiddenScope() { m_threadState->leaveGCForbiddenScope(); }
299 299
300 private: 300 private:
301 ThreadState* const m_threadState; 301 ThreadState* const m_threadState;
302 }; 302 };
303 303
304 #if DCHECK_IS_ON()
305 bool canAllocateScriptWrappable() const { return !m_noScriptWrappableCount; }
306 void enterNoScriptWrappableScope() { m_noScriptWrappableCount++; }
307 void leaveNoScriptWrappableScope() {
308 DCHECK(m_noScriptWrappableCount);
309 m_noScriptWrappableCount--;
310 }
311 #endif
312
304 void flushHeapDoesNotContainCacheIfNeeded(); 313 void flushHeapDoesNotContainCacheIfNeeded();
305 314
306 // Safepoint related functionality. 315 // Safepoint related functionality.
307 // 316 //
308 // When a thread attempts to perform GC it needs to stop all other threads 317 // When a thread attempts to perform GC it needs to stop all other threads
309 // that use the heap or at least guarantee that they will not touch any 318 // that use the heap or at least guarantee that they will not touch any
310 // heap allocated object until GC is complete. 319 // heap allocated object until GC is complete.
311 // 320 //
312 // We say that a thread is at a safepoint if this thread is guaranteed to 321 // We say that a thread is at a safepoint if this thread is guaranteed to
313 // not touch any heap allocated object or any heap related functionality until 322 // not touch any heap allocated object or any heap related functionality until
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 intptr_t* m_endOfStack; 654 intptr_t* m_endOfStack;
646 655
647 void* m_safePointScopeMarker; 656 void* m_safePointScopeMarker;
648 Vector<Address> m_safePointStackCopy; 657 Vector<Address> m_safePointStackCopy;
649 bool m_atSafePoint; 658 bool m_atSafePoint;
650 Vector<std::unique_ptr<BlinkGCInterruptor>> m_interruptors; 659 Vector<std::unique_ptr<BlinkGCInterruptor>> m_interruptors;
651 bool m_sweepForbidden; 660 bool m_sweepForbidden;
652 size_t m_noAllocationCount; 661 size_t m_noAllocationCount;
653 size_t m_gcForbiddenCount; 662 size_t m_gcForbiddenCount;
654 size_t m_mixinsBeingConstructedCount; 663 size_t m_mixinsBeingConstructedCount;
664 #if DCHECK_IS_ON()
665 size_t m_noScriptWrappableCount;
666 #endif
667
655 double m_accumulatedSweepingTime; 668 double m_accumulatedSweepingTime;
656 669
657 BaseArena* m_arenas[BlinkGC::NumberOfArenas]; 670 BaseArena* m_arenas[BlinkGC::NumberOfArenas];
658 int m_vectorBackingArenaIndex; 671 int m_vectorBackingArenaIndex;
659 size_t m_arenaAges[BlinkGC::NumberOfArenas]; 672 size_t m_arenaAges[BlinkGC::NumberOfArenas];
660 size_t m_currentArenaAges; 673 size_t m_currentArenaAges;
661 674
662 GarbageCollectedMixinConstructorMarker* m_gcMixinMarker; 675 GarbageCollectedMixinConstructorMarker* m_gcMixinMarker;
663 676
664 bool m_shouldFlushHeapDoesNotContainCache; 677 bool m_shouldFlushHeapDoesNotContainCache;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 class ThreadStateFor<AnyThread> { 741 class ThreadStateFor<AnyThread> {
729 STATIC_ONLY(ThreadStateFor); 742 STATIC_ONLY(ThreadStateFor);
730 743
731 public: 744 public:
732 static ThreadState* state() { return ThreadState::current(); } 745 static ThreadState* state() { return ThreadState::current(); }
733 }; 746 };
734 747
735 } // namespace blink 748 } // namespace blink
736 749
737 #endif // ThreadState_h 750 #endif // ThreadState_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698