| Index: runtime/vm/gc_marker.cc
|
| ===================================================================
|
| --- runtime/vm/gc_marker.cc (revision 33235)
|
| +++ runtime/vm/gc_marker.cc (working copy)
|
| @@ -298,7 +298,7 @@
|
|
|
| class MarkingWeakVisitor : public HandleVisitor {
|
| public:
|
| - MarkingWeakVisitor() {
|
| + explicit MarkingWeakVisitor(Heap* heap) : heap_(heap) {
|
| }
|
|
|
| void VisitHandle(uword addr) {
|
| @@ -306,11 +306,13 @@
|
| reinterpret_cast<FinalizablePersistentHandle*>(addr);
|
| RawObject* raw_obj = handle->raw();
|
| if (IsUnreachable(raw_obj)) {
|
| - FinalizablePersistentHandle::Finalize(handle);
|
| + handle->UpdateUnreachable(heap_);
|
| }
|
| }
|
|
|
| private:
|
| + Heap* heap_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(MarkingWeakVisitor);
|
| };
|
|
|
| @@ -494,7 +496,7 @@
|
| IterateRoots(isolate, &mark, !invoke_api_callbacks);
|
| DrainMarkingStack(isolate, &mark);
|
| IterateWeakReferences(isolate, &mark);
|
| - MarkingWeakVisitor mark_weak;
|
| + MarkingWeakVisitor mark_weak(heap_);
|
| IterateWeakRoots(isolate, &mark_weak, invoke_api_callbacks);
|
| mark.Finalize();
|
| ProcessWeakTables(page_space);
|
|
|