| Index: src/debug/debug-frames.cc
|
| diff --git a/src/debug/debug-frames.cc b/src/debug/debug-frames.cc
|
| index 15d6ed5b4d161092f26f08e7a4d34e8710f5a420..110ea8c9de37fa37221310ae86dff52ccd2db80a 100644
|
| --- a/src/debug/debug-frames.cc
|
| +++ b/src/debug/debug-frames.cc
|
| @@ -15,7 +15,6 @@ FrameInspector::FrameInspector(StandardFrame* frame, int inlined_frame_index,
|
| Isolate* isolate)
|
| : frame_(frame),
|
| frame_summary_(FrameSummary::Get(frame, inlined_frame_index)),
|
| - deoptimized_frame_(nullptr),
|
| isolate_(isolate) {
|
| JavaScriptFrame* js_frame =
|
| frame->is_java_script() ? javascript_frame() : nullptr;
|
| @@ -35,21 +34,29 @@ FrameInspector::FrameInspector(StandardFrame* frame, int inlined_frame_index,
|
| return;
|
| }
|
|
|
| - deoptimized_frame_ = Deoptimizer::DebuggerInspectableFrame(
|
| - js_frame, inlined_frame_index, isolate);
|
| + deoptimized_frame_.reset(Deoptimizer::DebuggerInspectableFrame(
|
| + js_frame, inlined_frame_index, isolate));
|
| + } else if (frame_->is_wasm_interpreter_entry()) {
|
| + Handle<WasmInstanceObject> instance =
|
| + frame_summary_.AsWasm().wasm_instance();
|
| + Handle<WasmDebugInfo> debug_info =
|
| + WasmInstanceObject::GetOrCreateDebugInfo(instance);
|
| + wasm_interpreted_frame_ = WasmDebugInfo::GetInterpretedFrame(
|
| + debug_info, frame_->fp(), inlined_frame_index);
|
| + DCHECK_NOT_NULL(wasm_interpreted_frame_);
|
| }
|
| }
|
|
|
| FrameInspector::~FrameInspector() {
|
| - // Get rid of the calculated deoptimized frame if any.
|
| - if (deoptimized_frame_ != nullptr) {
|
| - delete deoptimized_frame_;
|
| - }
|
| + // Destructor needs to be defined in the .c file, because the types of the
|
| + // std::unique_ptr's are not known in the header.
|
| }
|
|
|
| int FrameInspector::GetParametersCount() {
|
| - return is_optimized_ ? deoptimized_frame_->parameters_count()
|
| - : frame_->ComputeParametersCount();
|
| + if (is_optimized_) return deoptimized_frame_->parameters_count();
|
| + if (wasm_interpreted_frame_)
|
| + return wasm_interpreted_frame_->GetParameterCount();
|
| + return frame_->ComputeParametersCount();
|
| }
|
|
|
| Handle<Script> FrameInspector::GetScript() {
|
|
|