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

Unified Diff: Source/platform/heap/ThreadState.h

Issue 616483002: Oilpan: Replace the positive heap-contains cache with a binary search tree of memory regions. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: lookup assert Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/platform/heap/HeapTest.cpp ('k') | Source/platform/heap/ThreadState.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/heap/ThreadState.h
diff --git a/Source/platform/heap/ThreadState.h b/Source/platform/heap/ThreadState.h
index 2513756aae2b550b1871a7f1c07efebffb3c35b5..b37a7699087c2c4f747a4d652159239abb095357 100644
--- a/Source/platform/heap/ThreadState.h
+++ b/Source/platform/heap/ThreadState.h
@@ -52,7 +52,6 @@ class BaseHeap;
class BaseHeapPage;
class FinalizedHeapObjectHeader;
struct GCInfo;
-class HeapContainsCache;
class HeapObjectHeader;
class PageMemory;
class PersistentNode;
@@ -62,6 +61,7 @@ class SafePointBarrier;
class SafePointAwareMutexLocker;
template<typename Header> class ThreadHeap;
class CallbackStack;
+class PageMemoryRegion;
typedef uint8_t* Address;
@@ -415,6 +415,7 @@ public:
// sweeping?
bool isSweepInProgress() const { return m_sweepInProgress; }
+ void prepareRegionTree();
void prepareForGC();
// Safepoint related functionality.
@@ -548,7 +549,6 @@ public:
// Infrastructure to determine if an address is within one of the
// address ranges for the Blink heap. If the address is in the Blink
// heap the containing heap page is returned.
- HeapContainsCache* heapContainsCache() { return m_heapContainsCache.get(); }
BaseHeapPage* contains(Address address) { return heapPageFromAddress(address); }
BaseHeapPage* contains(void* pointer) { return contains(reinterpret_cast<Address>(pointer)); }
BaseHeapPage* contains(const void* pointer) { return contains(const_cast<void*>(pointer)); }
@@ -579,10 +579,6 @@ public:
// Visit all persistents allocated on this thread.
void visitPersistents(Visitor*);
- // Checks a given address and if a pointer into the oilpan heap marks
- // the object to which it points.
- bool checkAndMarkPointer(Visitor*, Address);
-
#if ENABLE(GC_PROFILE_MARKING)
const GCInfo* findGCInfo(Address);
static const GCInfo* findGCInfoFromAllThreads(Address);
@@ -631,6 +627,8 @@ public:
Mutex& sweepMutex() { return m_sweepMutex; }
+ Vector<PageMemoryRegion*>& allocatedRegionsSinceLastGC() { return m_allocatedRegionsSinceLastGC; }
+
private:
explicit ThreadState();
~ThreadState();
@@ -703,7 +701,6 @@ private:
size_t m_noAllocationCount;
bool m_inGC;
BaseHeap* m_heaps[NumberOfHeaps];
- OwnPtr<HeapContainsCache> m_heapContainsCache;
HeapStats m_stats;
HeapStats m_statsAfterLastGC;
@@ -722,6 +719,8 @@ private:
#if defined(ADDRESS_SANITIZER)
void* m_asanFakeStack;
#endif
+
+ Vector<PageMemoryRegion*> m_allocatedRegionsSinceLastGC;
};
template<ThreadAffinity affinity> class ThreadStateFor;
@@ -822,13 +821,7 @@ public:
ThreadState* threadState() const { return m_threadState; }
const GCInfo* gcInfo() { return m_gcInfo; }
virtual bool isLargeObject() { return false; }
- virtual void markOrphaned()
- {
- m_threadState = 0;
- m_gcInfo = 0;
- m_terminating = false;
- m_tracedAfterOrphaned = false;
- }
+ virtual void markOrphaned();
bool orphaned() { return !m_threadState; }
bool terminating() { return m_terminating; }
void setTerminating() { m_terminating = true; }
« no previous file with comments | « Source/platform/heap/HeapTest.cpp ('k') | Source/platform/heap/ThreadState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698