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

Unified Diff: runtime/vm/pages.cc

Issue 10905251: Lazy peer API. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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: runtime/vm/pages.cc
diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc
index 5168ff5d494fc000e2768c00d2ef920465c38efa..e50515a274c9b7b2beefec0229895dea6f9c7e7d 100644
--- a/runtime/vm/pages.cc
+++ b/runtime/vm/pages.cc
@@ -308,6 +308,26 @@ void PageSpace::VisitObjects(ObjectVisitor* visitor) const {
}
+void PageSpace::SetPeer(RawObject* raw_obj, void* peer) {
+ if (peer == NULL) {
+ peer_.erase(raw_obj);
+ } else {
+ peer_[raw_obj] = peer;
+ }
+}
+
+
+void* PageSpace::GetPeer(RawObject* raw_obj) {
+ std::map<RawObject*, void*>::iterator it = peer_.find(raw_obj);
+ return (it == peer_.end()) ? NULL : it->second;
+}
+
+
+int64_t PageSpace::PeerCount() const {
+ return static_cast<int64_t>(peer_.size());
+}
+
+
void PageSpace::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
HeapPage* page = pages_;
while (page != NULL) {
@@ -385,7 +405,7 @@ void PageSpace::MarkSweep(bool invoke_api_callbacks, const char* gc_reason) {
int64_t start = OS::GetCurrentTimeMillis();
// Mark all reachable old-gen objects.
- GCMarker marker(heap_);
+ GCMarker marker(heap_, &peer_);
marker.MarkObjects(isolate, this, invoke_api_callbacks);
// Reset the bump allocation page to unused.

Powered by Google App Engine
This is Rietveld 408576698