Index: runtime/vm/scavenger.cc |
=================================================================== |
--- runtime/vm/scavenger.cc (revision 1496) |
+++ runtime/vm/scavenger.cc (working copy) |
@@ -5,6 +5,7 @@ |
#include "vm/scavenger.h" |
#include "vm/dart.h" |
+#include "vm/isolate.h" |
#include "vm/object.h" |
#include "vm/stack_frame.h" |
#include "vm/verifier.h" |
@@ -165,9 +166,9 @@ |
} |
-void Scavenger::IterateRoots(ObjectPointerVisitor* visitor) { |
- Isolate::Current()->VisitObjectPointers( |
- visitor, StackFrameIterator::kDontValidateFrames); |
+void Scavenger::IterateRoots(Isolate* isolate, ObjectPointerVisitor* visitor) { |
+ isolate->VisitObjectPointers(visitor, |
+ StackFrameIterator::kDontValidateFrames); |
heap_->IterateOldPointers(visitor); |
} |
@@ -195,14 +196,15 @@ |
// Scavenging is not reentrant. Make sure that is the case. |
ASSERT(!scavenging_); |
scavenging_ = true; |
- NoHandleScope no_handles; |
+ Isolate* isolate = Isolate::Current(); |
+ NoHandleScope no_handles(isolate); |
Timer timer(FLAG_verbose_gc, "Scavenge"); |
timer.Start(); |
// Setup the visitor and run a scavenge. |
ScavengerVisitor visitor(this); |
Prologue(); |
- IterateRoots(&visitor); |
+ IterateRoots(isolate, &visitor); |
ProcessToSpace(&visitor); |
Epilogue(); |
timer.Stop(); |