Chromium Code Reviews| Index: third_party/WebKit/Source/platform/heap/PageMemory.h |
| diff --git a/third_party/WebKit/Source/platform/heap/PageMemory.h b/third_party/WebKit/Source/platform/heap/PageMemory.h |
| index 7a372a43b539e78b4fa43fca56848dcd1f2ca7f5..49afce1586149f36bce93abeb0afac294dc46ee0 100644 |
| --- a/third_party/WebKit/Source/platform/heap/PageMemory.h |
| +++ b/third_party/WebKit/Source/platform/heap/PageMemory.h |
| @@ -17,6 +17,9 @@ |
| namespace blink { |
| +class RegionTree; |
| +class RegionTreeNode; |
| + |
| class MemoryRegion { |
| USING_FAST_MALLOC(MemoryRegion); |
| public: |
| @@ -92,6 +95,9 @@ public: |
| return pageFromObject(address); |
| } |
| + void setRegionTree(RegionTree* tree) { m_regionTree = tree; } |
| + RegionTree* getRegionTree() const { return m_regionTree; } |
|
haraken
2016/03/15 05:49:50
Is this used?
keishi
2016/03/15 07:48:43
Removed.
|
| + |
| private: |
| PageMemoryRegion(Address base, size_t, unsigned numPages); |
| @@ -112,6 +118,7 @@ private: |
| // bitmap such that thread non-interference comes for free. |
| bool m_inUse[blinkPagesPerRegion]; |
| int m_numPages; |
| + RegionTree* m_regionTree; |
| }; |
| // A RegionTree is a simple binary search tree of PageMemoryRegions sorted |
| @@ -119,29 +126,41 @@ private: |
| class RegionTree { |
| USING_FAST_MALLOC(RegionTree); |
| public: |
| - explicit RegionTree(PageMemoryRegion* region) |
| + RegionTree() : m_root(nullptr) { } |
| + |
| + void add(PageMemoryRegion*); |
| + void remove(PageMemoryRegion*); |
| + PageMemoryRegion* lookup(Address); |
| + |
| +private: |
| + Mutex m_mutex; |
| + RegionTreeNode* m_root; |
| +}; |
| + |
| +class RegionTreeNode { |
| + USING_FAST_MALLOC(RegionTreeNode); |
| +public: |
| + explicit RegionTreeNode(PageMemoryRegion* region) |
| : m_region(region) |
| , m_left(nullptr) |
| , m_right(nullptr) |
| { |
| } |
| - ~RegionTree() |
| + ~RegionTreeNode() |
| { |
| delete m_left; |
| delete m_right; |
| } |
| - PageMemoryRegion* lookup(Address); |
| - static void add(RegionTree*, RegionTree**); |
| - static void remove(PageMemoryRegion*, RegionTree**); |
| + void addTo(RegionTreeNode** context); |
| private: |
| PageMemoryRegion* m_region; |
| - RegionTree* m_left; |
| - RegionTree* m_right; |
| + RegionTreeNode* m_left; |
| + RegionTreeNode* m_right; |
| - static RegionTree* s_regionTree; |
| + friend RegionTree; |
| }; |
| // Representation of the memory used for a Blink heap page. |