Index: runtime/vm/scavenger.cc |
diff --git a/runtime/vm/scavenger.cc b/runtime/vm/scavenger.cc |
index 8d6e4bf5be189dedb5a462cb1a672fb9afa992e9..17b95f229d2d999be1d9a65b9dfcc7108311d90a 100644 |
--- a/runtime/vm/scavenger.cc |
+++ b/runtime/vm/scavenger.cc |
@@ -17,6 +17,7 @@ |
#include "vm/verifier.h" |
#include "vm/visitor.h" |
#include "vm/weak_table.h" |
+#include "vm/object_id_ring.h" |
namespace dart { |
@@ -404,6 +405,14 @@ void Scavenger::IterateStoreBuffers(Isolate* isolate, |
} |
+void Scavenger::IterateObjectIdTable(Isolate* isolate, |
+ ScavengerVisitor* visitor) { |
+ ObjectIdRing* ring = isolate->object_id_ring(); |
+ ASSERT(ring != NULL); |
+ ring->VisitPointers(visitor); |
+} |
+ |
+ |
void Scavenger::IterateRoots(Isolate* isolate, |
ScavengerVisitor* visitor, |
bool visit_prologue_weak_persistent_handles) { |
@@ -413,6 +422,7 @@ void Scavenger::IterateRoots(Isolate* isolate, |
StackFrameIterator::kDontValidateFrames); |
int64_t middle = OS::GetCurrentTimeMicros(); |
IterateStoreBuffers(isolate, visitor); |
+ IterateObjectIdTable(isolate, visitor); |
int64_t end = OS::GetCurrentTimeMicros(); |
heap_->RecordTime(kVisitIsolateRoots, middle - start); |
heap_->RecordTime(kIterateStoreBuffers, end - middle); |