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

Unified Diff: third_party/WebKit/Source/platform/heap/PageMemory.h

Issue 1804863002: Refactor RegionTree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
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.

Powered by Google App Engine
This is Rietveld 408576698