| Index: runtime/vm/debugger.cc
|
| ===================================================================
|
| --- runtime/vm/debugger.cc (revision 26441)
|
| +++ runtime/vm/debugger.cc (working copy)
|
| @@ -295,6 +295,11 @@
|
| }
|
|
|
|
|
| +bool ActivationFrame::IsDebuggable() const {
|
| + return Debugger::IsDebuggable(function());
|
| +}
|
| +
|
| +
|
| // Calculate the context level at the current token index of the frame.
|
| intptr_t ActivationFrame::ContextLevel() {
|
| if (context_level_ < 0 && !ctx_.IsNull()) {
|
| @@ -377,8 +382,8 @@
|
| Array& handled_types = Array::Handle();
|
| AbstractType& type = Type::Handle();
|
| const TypeArguments& no_instantiator = TypeArguments::Handle();
|
| - for (int frame_index = 0; frame_index < Length(); frame_index++) {
|
| - ActivationFrame* frame = trace_[frame_index];
|
| + for (int frame_index = 0; frame_index < UnfilteredLength(); frame_index++) {
|
| + ActivationFrame* frame = UnfilteredFrameAt(frame_index);
|
| intptr_t try_index = frame->TryIndex();
|
| if (try_index < 0) continue;
|
| handlers = frame->code().exception_handlers();
|
| @@ -580,6 +585,9 @@
|
|
|
| void DebuggerStackTrace::AddActivation(ActivationFrame* frame) {
|
| trace_.Add(frame);
|
| + if (frame->IsDebuggable()) {
|
| + user_trace_.Add(frame);
|
| + }
|
| }
|
|
|
|
|
| @@ -977,10 +985,7 @@
|
| ASSERT(!ctx.IsNull());
|
| activation->SetContext(ctx);
|
| }
|
| - // Check if frame is a debuggable function.
|
| - if (IsDebuggable(activation->function())) {
|
| - stack_trace->AddActivation(activation);
|
| - }
|
| + stack_trace->AddActivation(activation);
|
| callee_activation = activation;
|
| // Get caller's context if this function saved it on entry.
|
| ctx = activation->GetSavedEntryContext(ctx);
|
| @@ -1603,7 +1608,7 @@
|
| InstrumentForStepping(func);
|
| } else if (resume_action_ == kStepOut) {
|
| if (stack_trace_->Length() > 1) {
|
| - ActivationFrame* caller_frame = stack_trace_->ActivationFrameAt(1);
|
| + ActivationFrame* caller_frame = stack_trace_->FrameAt(1);
|
| InstrumentForStepping(caller_frame->function());
|
| }
|
| }
|
| @@ -1619,8 +1624,8 @@
|
| return;
|
| }
|
| DebuggerStackTrace* stack_trace = CollectStackTrace();
|
| - ASSERT(stack_trace->Length() > 0);
|
| - ActivationFrame* top_frame = stack_trace->ActivationFrameAt(0);
|
| + ASSERT(stack_trace->UnfilteredLength() > 0);
|
| + ActivationFrame* top_frame = stack_trace->UnfilteredFrameAt(0);
|
| ASSERT(top_frame != NULL);
|
| CodeBreakpoint* bpt = GetCodeBreakpoint(top_frame->pc());
|
| ASSERT(bpt != NULL);
|
| @@ -1657,7 +1662,7 @@
|
| }
|
| } else if (resume_action_ == kStepOut) {
|
| if (stack_trace->Length() > 1) {
|
| - ActivationFrame* caller_frame = stack_trace->ActivationFrameAt(1);
|
| + ActivationFrame* caller_frame = stack_trace->FrameAt(1);
|
| func_to_instrument = caller_frame->function().raw();
|
| }
|
| } else {
|
|
|