| Index: runtime/vm/clustered_snapshot.cc
|
| diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
|
| index 6bc3bfe896f83e310fee6d1abebcede823b2c5dd..7948c6d39b3847e1177a6acc4a50c6333cdc902f 100644
|
| --- a/runtime/vm/clustered_snapshot.cc
|
| +++ b/runtime/vm/clustered_snapshot.cc
|
| @@ -5349,15 +5349,18 @@ FullSnapshotWriter::FullSnapshotWriter(Snapshot::Kind kind,
|
| // it out as part of the VM isolate snapshot. We first count the number of
|
| // token streams, allocate an array and then fill it up with the token
|
| // streams.
|
| - SnapshotTokenStreamVisitor token_streams_counter(thread());
|
| - heap()->IterateOldObjects(&token_streams_counter);
|
| - Dart::vm_isolate()->heap()->IterateOldObjects(&token_streams_counter);
|
| - intptr_t count = token_streams_counter.count();
|
| - token_streams_ = Array::New(count, Heap::kOld);
|
| - SnapshotTokenStreamVisitor script_visitor(thread(), &token_streams_);
|
| - heap()->IterateOldObjects(&script_visitor);
|
| - Dart::vm_isolate()->heap()->IterateOldObjects(&script_visitor);
|
| - ASSERT(script_visitor.count() == count);
|
| + {
|
| + HeapIterationScope iteration(thread());
|
| + SnapshotTokenStreamVisitor token_streams_counter(thread());
|
| + iteration.IterateObjects(&token_streams_counter);
|
| + iteration.IterateVMIsolateObjects(&token_streams_counter);
|
| + intptr_t count = token_streams_counter.count();
|
| + token_streams_ = Array::New(count, Heap::kOld);
|
| + SnapshotTokenStreamVisitor script_visitor(thread(), &token_streams_);
|
| + iteration.IterateObjects(&script_visitor);
|
| + iteration.IterateVMIsolateObjects(&script_visitor);
|
| + ASSERT(script_visitor.count() == count);
|
| + }
|
|
|
| // Tuck away the current symbol table.
|
| saved_symbol_table_ = object_store->symbol_table();
|
|
|