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

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

Issue 1275863002: Oilpan: catch some self-referential leaks (main thread.) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: add stdio.h include Created 5 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/heap/PersistentNode.cpp ('k') | Source/platform/heap/ThreadState.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 return m_heaps[heapIndex]; 645 return m_heaps[heapIndex];
646 } 646 }
647 BaseHeap* expandedVectorBackingHeap(size_t gcInfoIndex); 647 BaseHeap* expandedVectorBackingHeap(size_t gcInfoIndex);
648 static bool isVectorHeapIndex(int heapIndex) 648 static bool isVectorHeapIndex(int heapIndex)
649 { 649 {
650 return Vector1HeapIndex <= heapIndex && heapIndex <= Vector4HeapIndex; 650 return Vector1HeapIndex <= heapIndex && heapIndex <= Vector4HeapIndex;
651 } 651 }
652 void allocationPointAdjusted(int heapIndex); 652 void allocationPointAdjusted(int heapIndex);
653 void promptlyFreed(size_t gcInfoIndex); 653 void promptlyFreed(size_t gcInfoIndex);
654 654
655 #if ENABLE(ASSERT)
656 static void incrementSelfKeepAliveAllocations();
657 static void decrementSelfKeepAliveAllocations();
658 #endif
659
655 private: 660 private:
656 enum SnapshotType { 661 enum SnapshotType {
657 HeapSnapshot, 662 HeapSnapshot,
658 FreelistSnapshot 663 FreelistSnapshot
659 }; 664 };
660 665
661 ThreadState(); 666 ThreadState();
662 ~ThreadState(); 667 ~ThreadState();
663 668
664 NO_SANITIZE_ADDRESS void copyStackUntilSafePointScope(); 669 NO_SANITIZE_ADDRESS void copyStackUntilSafePointScope();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 const InterruptorVector& interruptors() const { return m_interruptors; } 726 const InterruptorVector& interruptors() const { return m_interruptors; }
722 727
723 friend class SafePointAwareMutexLocker; 728 friend class SafePointAwareMutexLocker;
724 friend class SafePointBarrier; 729 friend class SafePointBarrier;
725 friend class SafePointScope; 730 friend class SafePointScope;
726 731
727 static WTF::ThreadSpecific<ThreadState*>* s_threadSpecific; 732 static WTF::ThreadSpecific<ThreadState*>* s_threadSpecific;
728 static uintptr_t s_mainThreadStackStart; 733 static uintptr_t s_mainThreadStackStart;
729 static uintptr_t s_mainThreadUnderestimatedStackSize; 734 static uintptr_t s_mainThreadUnderestimatedStackSize;
730 static SafePointBarrier* s_safePointBarrier; 735 static SafePointBarrier* s_safePointBarrier;
736 #if ENABLE(ASSERT)
737 static int s_selfKeepAliveAllocationsOnMainThread;
738 #endif
731 739
732 // We can't create a static member of type ThreadState here 740 // We can't create a static member of type ThreadState here
733 // because it will introduce global constructor and destructor. 741 // because it will introduce global constructor and destructor.
734 // We would like to manage lifetime of the ThreadState attached 742 // We would like to manage lifetime of the ThreadState attached
735 // to the main thread explicitly instead and still use normal 743 // to the main thread explicitly instead and still use normal
736 // constructor and destructor for the ThreadState class. 744 // constructor and destructor for the ThreadState class.
737 // For this we reserve static storage for the main ThreadState 745 // For this we reserve static storage for the main ThreadState
738 // and lazily construct ThreadState in it using placement new. 746 // and lazily construct ThreadState in it using placement new.
739 static uint8_t s_mainThreadStateStorage[]; 747 static uint8_t s_mainThreadStateStorage[];
740 748
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 }; 811 };
804 812
805 template<> class ThreadStateFor<AnyThread> { 813 template<> class ThreadStateFor<AnyThread> {
806 public: 814 public:
807 static ThreadState* state() { return ThreadState::current(); } 815 static ThreadState* state() { return ThreadState::current(); }
808 }; 816 };
809 817
810 } // namespace blink 818 } // namespace blink
811 819
812 #endif // ThreadState_h 820 #endif // ThreadState_h
OLDNEW
« no previous file with comments | « Source/platform/heap/PersistentNode.cpp ('k') | Source/platform/heap/ThreadState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698