| Index: src/debug/debug-frames.cc
|
| diff --git a/src/debug/debug-frames.cc b/src/debug/debug-frames.cc
|
| index f01354500b0e5ce1670a45e8e7afe6087158f99f..25634be8d233178429cfd8cf0fe3ae739cf96f0c 100644
|
| --- a/src/debug/debug-frames.cc
|
| +++ b/src/debug/debug-frames.cc
|
| @@ -15,6 +15,7 @@ FrameInspector::FrameInspector(JavaScriptFrame* frame,
|
| has_adapted_arguments_ = frame_->has_adapted_arguments();
|
| is_bottommost_ = inlined_jsframe_index == 0;
|
| is_optimized_ = frame_->is_optimized();
|
| + is_interpreted_ = frame_->is_interpreted();
|
| // Calculate the deoptimized frame.
|
| if (frame->is_optimized()) {
|
| // TODO(turbofan): Revisit once we support deoptimization.
|
| @@ -69,6 +70,11 @@ Handle<Object> FrameInspector::GetExpression(int index) {
|
| int FrameInspector::GetSourcePosition() {
|
| if (is_optimized_) {
|
| return deoptimized_frame_->GetSourcePosition();
|
| + } else if (is_interpreted_) {
|
| + InterpretedFrame* frame = reinterpret_cast<InterpretedFrame*>(frame_);
|
| + BytecodeArray* bytecode_array =
|
| + frame->function()->shared()->bytecode_array();
|
| + return bytecode_array->SourcePosition(frame->GetBytecodeOffset());
|
| } else {
|
| Code* code = frame_->LookupCode();
|
| int offset = static_cast<int>(frame_->pc() - code->instruction_start());
|
| @@ -95,6 +101,7 @@ void FrameInspector::SetArgumentsFrame(JavaScriptFrame* frame) {
|
| DCHECK(has_adapted_arguments_);
|
| frame_ = frame;
|
| is_optimized_ = frame_->is_optimized();
|
| + is_interpreted_ = frame_->is_interpreted();
|
| DCHECK(!is_optimized_);
|
| }
|
|
|
|
|