Commit 91119c19 authored by Benedikt Meurer's avatar Benedikt Meurer Committed by V8 LUCI CQ

[refactor] Remove debug dependency for FrameSummary.

The FrameSummary::FunctionName() method is only used by the
FrameInspector in the debugger, so the natural place to put
the dependency on GetWasmFunctionDebugName() is in there,
rather than adding a new dependency to frames.cc. This is a
follow up cleanup as discussed in https://crrev.com/c/2878734

Bug: chromium:1159307
Change-Id: I0698adf63f88fe6a93d6e5e6235bc0c2219e9341
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2883784Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#74482}
parent a7980d43
......@@ -7,6 +7,10 @@
#include "src/builtins/accessors.h"
#include "src/execution/frames-inl.h"
#if V8_ENABLE_WEBASSEMBLY
#include "src/debug/debug-wasm-objects.h"
#endif // V8_ENABLE_WEBASSEMBLY
namespace v8 {
namespace internal {
......@@ -21,7 +25,6 @@ FrameInspector::FrameInspector(CommonFrame* frame, int inlined_frame_index,
is_constructor_ = summary.is_constructor();
source_position_ = summary.SourcePosition();
function_name_ = summary.FunctionName();
script_ = Handle<Script>::cast(summary.script());
receiver_ = summary.receiver();
......@@ -70,6 +73,18 @@ Handle<Object> FrameInspector::GetContext() {
: handle(frame_->context(), isolate_);
}
Handle<String> FrameInspector::GetFunctionName() {
#if V8_ENABLE_WEBASSEMBLY
if (IsWasm()) {
auto wasm_frame = WasmFrame::cast(frame_);
auto wasm_instance = handle(wasm_frame->wasm_instance(), isolate_);
return GetWasmFunctionDebugName(isolate_, wasm_instance,
wasm_frame->function_index());
}
#endif // V8_ENABLE_WEBASSEMBLY
return JSFunction::GetDebugName(function_);
}
#if V8_ENABLE_WEBASSEMBLY
bool FrameInspector::IsWasm() { return frame_->is_wasm(); }
#endif // V8_ENABLE_WEBASSEMBLY
......
......@@ -36,7 +36,7 @@ class FrameInspector {
Handle<Object> GetContext();
Handle<Object> GetReceiver() { return receiver_; }
Handle<String> GetFunctionName() { return function_name_; }
Handle<String> GetFunctionName();
#if V8_ENABLE_WEBASSEMBLY
bool IsWasm();
......@@ -58,7 +58,6 @@ class FrameInspector {
Handle<Script> script_;
Handle<Object> receiver_;
Handle<JSFunction> function_;
Handle<String> function_name_;
int source_position_ = -1;
bool is_optimized_ = false;
bool is_constructor_ = false;
......
......@@ -2270,12 +2270,14 @@ void Debug::PrintBreakLocation() {
StackTraceFrameIterator iterator(isolate_);
if (iterator.done()) return;
CommonFrame* frame = iterator.frame();
FrameSummary summary = FrameSummary::GetTop(frame);
summary.EnsureSourcePositionsAvailable();
int source_position = summary.SourcePosition();
Handle<Object> script_obj = summary.script();
std::vector<FrameSummary> frames;
frame->Summarize(&frames);
int inlined_frame_index = static_cast<int>(frames.size() - 1);
FrameInspector inspector(frame, inlined_frame_index, isolate_);
int source_position = inspector.GetSourcePosition();
Handle<Object> script_obj = inspector.GetScript();
PrintF("[debug] break in function '");
summary.FunctionName()->PrintOn(stdout);
inspector.GetFunctionName()->PrintOn(stdout);
PrintF("'.\n");
if (script_obj->IsScript()) {
Handle<Script> script = Handle<Script>::cast(script_obj);
......
......@@ -27,7 +27,6 @@
#include "src/zone/zone-containers.h"
#if V8_ENABLE_WEBASSEMBLY
#include "src/debug/debug-wasm-objects.h"
#include "src/wasm/wasm-code-manager.h"
#include "src/wasm/wasm-engine.h"
#include "src/wasm/wasm-objects-inl.h"
......@@ -1447,10 +1446,6 @@ Handle<Object> FrameSummary::JavaScriptFrameSummary::script() const {
return handle(function_->shared().script(), isolate());
}
Handle<String> FrameSummary::JavaScriptFrameSummary::FunctionName() const {
return JSFunction::GetDebugName(function_);
}
Handle<Context> FrameSummary::JavaScriptFrameSummary::native_context() const {
return handle(function_->context().native_context(), isolate());
}
......@@ -1488,10 +1483,6 @@ Handle<Script> FrameSummary::WasmFrameSummary::script() const {
wasm_instance()->GetIsolate());
}
Handle<String> FrameSummary::WasmFrameSummary::FunctionName() const {
return GetWasmFunctionDebugName(isolate(), wasm_instance(), function_index());
}
Handle<Context> FrameSummary::WasmFrameSummary::native_context() const {
return handle(wasm_instance()->native_context(), isolate());
}
......@@ -1563,7 +1554,6 @@ FRAME_SUMMARY_DISPATCH(bool, is_subject_to_debugging)
FRAME_SUMMARY_DISPATCH(Handle<Object>, script)
FRAME_SUMMARY_DISPATCH(int, SourcePosition)
FRAME_SUMMARY_DISPATCH(int, SourceStatementPosition)
FRAME_SUMMARY_DISPATCH(Handle<String>, FunctionName)
FRAME_SUMMARY_DISPATCH(Handle<Context>, native_context)
#undef FRAME_SUMMARY_DISPATCH
......
......@@ -387,7 +387,6 @@ class V8_EXPORT_PRIVATE FrameSummary {
int SourcePosition() const;
int SourceStatementPosition() const;
Handle<Object> script() const;
Handle<String> FunctionName() const;
Handle<Context> native_context() const;
private:
......@@ -416,7 +415,6 @@ class V8_EXPORT_PRIVATE FrameSummary {
int SourceStatementPosition() const { return SourcePosition(); }
Handle<Script> script() const;
Handle<WasmInstanceObject> wasm_instance() const { return wasm_instance_; }
Handle<String> FunctionName() const;
Handle<Context> native_context() const;
bool at_to_number_conversion() const { return at_to_number_conversion_; }
......@@ -451,7 +449,6 @@ class V8_EXPORT_PRIVATE FrameSummary {
Handle<Object> script() const;
int SourcePosition() const;
int SourceStatementPosition() const;
Handle<String> FunctionName() const;
Handle<Context> native_context() const;
#define FRAME_SUMMARY_CAST(kind_, type, field, desc) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment