Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 631 void cleanup(); | 631 void cleanup(); |
| 632 void cleanupPages(); | 632 void cleanupPages(); |
| 633 | 633 |
| 634 void unregisterPreFinalizerInternal(void*); | 634 void unregisterPreFinalizerInternal(void*); |
| 635 void invokePreFinalizers(Visitor&); | 635 void invokePreFinalizers(Visitor&); |
| 636 | 636 |
| 637 #if ENABLE(GC_PROFILING) | 637 #if ENABLE(GC_PROFILING) |
| 638 void snapshotFreeList(); | 638 void snapshotFreeList(); |
| 639 #endif | 639 #endif |
| 640 | 640 |
| 641 // By entering a no-gc allowed scope, conservative GCs will not | |
| 642 // be forced while handling an out-of-line allocation request. | |
| 643 // Intended used when constructing subclasses of GC mixins, where | |
| 644 // the object being constructed cannot be safely traced & marked | |
| 645 // fully should a GC be allowed. | |
| 646 template<typename U, typename V> friend class AllocateObjectTrait; | |
| 647 void enterNoGCAllowedScope() { m_noGCAllowedCount++; } | |
|
haraken
2015/02/23 08:24:23
enterGCForbiddenScope ? (for consistency with Swee
sof
2015/02/23 10:29:02
Switched naming to align with that.
| |
| 648 void leaveNoGCAllowedScope() | |
| 649 { | |
| 650 ASSERT(m_noGCAllowedCount > 0); | |
| 651 m_noGCAllowedCount--; | |
| 652 } | |
| 653 | |
| 641 static WTF::ThreadSpecific<ThreadState*>* s_threadSpecific; | 654 static WTF::ThreadSpecific<ThreadState*>* s_threadSpecific; |
| 642 static uintptr_t s_mainThreadStackStart; | 655 static uintptr_t s_mainThreadStackStart; |
| 643 static uintptr_t s_mainThreadUnderestimatedStackSize; | 656 static uintptr_t s_mainThreadUnderestimatedStackSize; |
| 644 static SafePointBarrier* s_safePointBarrier; | 657 static SafePointBarrier* s_safePointBarrier; |
| 645 | 658 |
| 646 // We can't create a static member of type ThreadState here | 659 // We can't create a static member of type ThreadState here |
| 647 // because it will introduce global constructor and destructor. | 660 // because it will introduce global constructor and destructor. |
| 648 // We would like to manage lifetime of the ThreadState attached | 661 // We would like to manage lifetime of the ThreadState attached |
| 649 // to the main thread explicitly instead and still use normal | 662 // to the main thread explicitly instead and still use normal |
| 650 // constructor and destructor for the ThreadState class. | 663 // constructor and destructor for the ThreadState class. |
| 651 // For this we reserve static storage for the main ThreadState | 664 // For this we reserve static storage for the main ThreadState |
| 652 // and lazily construct ThreadState in it using placement new. | 665 // and lazily construct ThreadState in it using placement new. |
| 653 static uint8_t s_mainThreadStateStorage[]; | 666 static uint8_t s_mainThreadStateStorage[]; |
| 654 | 667 |
| 655 ThreadIdentifier m_thread; | 668 ThreadIdentifier m_thread; |
| 656 OwnPtr<PersistentNode> m_persistents; | 669 OwnPtr<PersistentNode> m_persistents; |
| 657 StackState m_stackState; | 670 StackState m_stackState; |
| 658 intptr_t* m_startOfStack; | 671 intptr_t* m_startOfStack; |
| 659 intptr_t* m_endOfStack; | 672 intptr_t* m_endOfStack; |
| 660 void* m_safePointScopeMarker; | 673 void* m_safePointScopeMarker; |
| 661 Vector<Address> m_safePointStackCopy; | 674 Vector<Address> m_safePointStackCopy; |
| 662 bool m_atSafePoint; | 675 bool m_atSafePoint; |
| 663 Vector<Interruptor*> m_interruptors; | 676 Vector<Interruptor*> m_interruptors; |
| 664 bool m_hasPendingIdleTask; | 677 bool m_hasPendingIdleTask; |
| 665 bool m_didV8GCAfterLastGC; | 678 bool m_didV8GCAfterLastGC; |
| 666 bool m_sweepForbidden; | 679 bool m_sweepForbidden; |
| 667 size_t m_noAllocationCount; | 680 size_t m_noAllocationCount; |
| 681 size_t m_noGCAllowedCount; | |
| 668 size_t m_allocatedObjectSizeBeforeGC; | 682 size_t m_allocatedObjectSizeBeforeGC; |
| 669 BaseHeap* m_heaps[NumberOfHeaps]; | 683 BaseHeap* m_heaps[NumberOfHeaps]; |
| 670 | 684 |
| 671 Vector<OwnPtr<CleanupTask>> m_cleanupTasks; | 685 Vector<OwnPtr<CleanupTask>> m_cleanupTasks; |
| 672 bool m_isTerminating; | 686 bool m_isTerminating; |
| 673 | 687 |
| 674 bool m_shouldFlushHeapDoesNotContainCache; | 688 bool m_shouldFlushHeapDoesNotContainCache; |
| 675 double m_collectionRate; | 689 double m_collectionRate; |
| 676 GCState m_gcState; | 690 GCState m_gcState; |
| 677 | 691 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 760 m_locked = false; | 774 m_locked = false; |
| 761 } | 775 } |
| 762 | 776 |
| 763 MutexBase& m_mutex; | 777 MutexBase& m_mutex; |
| 764 bool m_locked; | 778 bool m_locked; |
| 765 }; | 779 }; |
| 766 | 780 |
| 767 } // namespace blink | 781 } // namespace blink |
| 768 | 782 |
| 769 #endif // ThreadState_h | 783 #endif // ThreadState_h |
| OLD | NEW |