| Index: runtime/vm/debugger.cc
|
| diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
|
| index 8859ffca6e7f0e2fb644d1a10c8c5af2edbcc2c9..6d11f18cb0e70ec60874aadfde2c190163296789 100644
|
| --- a/runtime/vm/debugger.cc
|
| +++ b/runtime/vm/debugger.cc
|
| @@ -1693,9 +1693,11 @@ void Debugger::SignalExceptionThrown(const Instance& exc) {
|
| }
|
|
|
|
|
| -static TokenPosition LastTokenOnLine(const TokenStream& tokens,
|
| +static TokenPosition LastTokenOnLine(Zone* zone,
|
| + const TokenStream& tokens,
|
| TokenPosition pos) {
|
| - TokenStream::Iterator iter(tokens,
|
| + TokenStream::Iterator iter(zone,
|
| + tokens,
|
| pos,
|
| TokenStream::Iterator::kAllTokens);
|
| ASSERT(iter.IsValid());
|
| @@ -1780,10 +1782,11 @@ TokenPosition Debugger::ResolveBreakpointPos(
|
| last_token_pos = func.end_token_pos();
|
| }
|
|
|
| - Script& script = Script::Handle(func.script());
|
| - Code& code = Code::Handle(func.unoptimized_code());
|
| + Zone* zone = Thread::Current()->zone();
|
| + Script& script = Script::Handle(zone, func.script());
|
| + Code& code = Code::Handle(zone, func.unoptimized_code());
|
| ASSERT(!code.IsNull());
|
| - PcDescriptors& desc = PcDescriptors::Handle(code.pc_descriptors());
|
| + PcDescriptors& desc = PcDescriptors::Handle(zone, code.pc_descriptors());
|
|
|
| // First pass: find the safe point which is closest to the beginning
|
| // of the given token range.
|
| @@ -1830,10 +1833,11 @@ TokenPosition Debugger::ResolveBreakpointPos(
|
| // the token on the line which is at the best fit column (if column
|
| // was specified) and has the lowest code address.
|
| if (best_fit_pos != TokenPosition::kMaxSource) {
|
| - const Script& script = Script::Handle(func.script());
|
| - const TokenStream& tokens = TokenStream::Handle(script.tokens());
|
| + const Script& script = Script::Handle(zone, func.script());
|
| + const TokenStream& tokens = TokenStream::Handle(zone, script.tokens());
|
| const TokenPosition begin_pos = best_fit_pos;
|
| - const TokenPosition end_of_line_pos = LastTokenOnLine(tokens, begin_pos);
|
| + const TokenPosition end_of_line_pos =
|
| + LastTokenOnLine(zone, tokens, begin_pos);
|
| uword lowest_pc_offset = kUwordMax;
|
| PcDescriptors::Iterator iter(desc, kSafepointKind);
|
| while (iter.MoveNext()) {
|
| @@ -2662,13 +2666,15 @@ void Debugger::SignalPausedEvent(ActivationFrame* top_frame,
|
|
|
|
|
| bool Debugger::IsAtAsyncJump(ActivationFrame* top_frame) {
|
| - Object& closure_or_null = Object::Handle(top_frame->GetAsyncOperation());
|
| + Zone* zone = Thread::Current()->zone();
|
| + Object& closure_or_null =
|
| + Object::Handle(zone, top_frame->GetAsyncOperation());
|
| if (!closure_or_null.IsNull()) {
|
| ASSERT(closure_or_null.IsInstance());
|
| ASSERT(Instance::Cast(closure_or_null).IsClosure());
|
| - const Script& script = Script::Handle(top_frame->SourceScript());
|
| - const TokenStream& tokens = TokenStream::Handle(script.tokens());
|
| - TokenStream::Iterator iter(tokens, top_frame->TokenPos());
|
| + const Script& script = Script::Handle(zone, top_frame->SourceScript());
|
| + const TokenStream& tokens = TokenStream::Handle(zone, script.tokens());
|
| + TokenStream::Iterator iter(zone, tokens, top_frame->TokenPos());
|
| if ((iter.CurrentTokenKind() == Token::kIDENT) &&
|
| ((iter.CurrentLiteral() == Symbols::Await().raw()) ||
|
| (iter.CurrentLiteral() == Symbols::YieldKw().raw()))) {
|
|
|