| 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.
|
|
|