[inspector][wasm] Unify locals, stack, and globals objects.
This change unifies the locals, stack, and globals objects exposed for WebAssembly frames via the Scope view and via DebugEvaluate to use the same underlying objects (implemented via interceptors). This also means that for locals and globals we now consistently expose names prefixed by a dollar symbol everywhere. Drive-by-fix: Move the debug::ScopeIterator implementation for WasmFrame into debug-wasm-support.cc, so WebAssembly scope details are all found in one place instead of scattered around the code. Drive-by-cleanup: Rename GetJSDebugProxy to GetWasmDebugProxy for consistency. GetJSDebugProxy is a bit misleading, since the debug proxy is not about JavaScript, but just exposed to JavaScript. Doc: http://bit.ly/devtools-wasm-entities Bug: chromium:1159307, chromium:1127914, chromium:1162229 Change-Id: If932bd06bbce72542823f63dac1bd976ab33937a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615348 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#72009}
This commit is contained in:
parent
0316b4fc12
commit
85fdbd910f
@ -100,7 +100,7 @@ MaybeHandle<Object> DebugEvaluate::Local(Isolate* isolate,
|
||||
WasmFrame* frame = WasmFrame::cast(it.frame());
|
||||
Handle<SharedFunctionInfo> outer_info(
|
||||
isolate->native_context()->empty_function().shared(), isolate);
|
||||
Handle<JSObject> context_extension = GetJSDebugProxy(frame);
|
||||
Handle<JSObject> context_extension = GetWasmDebugProxy(frame);
|
||||
Handle<ScopeInfo> scope_info =
|
||||
ScopeInfo::CreateForWithScope(isolate, Handle<ScopeInfo>::null());
|
||||
Handle<Context> context = isolate->factory()->NewWithContext(
|
||||
|
@ -5,14 +5,11 @@
|
||||
#include "src/debug/debug-scope-iterator.h"
|
||||
|
||||
#include "src/api/api-inl.h"
|
||||
#include "src/debug/debug-wasm-support.h"
|
||||
#include "src/debug/debug.h"
|
||||
#include "src/debug/liveedit.h"
|
||||
#include "src/execution/frames-inl.h"
|
||||
#include "src/execution/isolate.h"
|
||||
#include "src/objects/js-generator-inl.h"
|
||||
#include "src/wasm/wasm-debug.h"
|
||||
#include "src/wasm/wasm-objects-inl.h"
|
||||
|
||||
namespace v8 {
|
||||
|
||||
@ -129,92 +126,5 @@ bool DebugScopeIterator::SetVariableValue(v8::Local<v8::String> name,
|
||||
Utils::OpenHandle(*value));
|
||||
}
|
||||
|
||||
DebugWasmScopeIterator::DebugWasmScopeIterator(Isolate* isolate,
|
||||
WasmFrame* frame)
|
||||
: isolate_(isolate),
|
||||
frame_(frame),
|
||||
type_(debug::ScopeIterator::ScopeTypeWasmExpressionStack) {
|
||||
// Skip local scope and expression stack scope if the frame is not
|
||||
// inspectable.
|
||||
if (!frame->is_inspectable()) {
|
||||
type_ = debug::ScopeIterator::ScopeTypeModule;
|
||||
}
|
||||
}
|
||||
|
||||
bool DebugWasmScopeIterator::Done() {
|
||||
return type_ == debug::ScopeIterator::ScopeTypeWith;
|
||||
}
|
||||
|
||||
void DebugWasmScopeIterator::Advance() {
|
||||
DCHECK(!Done());
|
||||
switch (type_) {
|
||||
case ScopeTypeWasmExpressionStack:
|
||||
type_ = debug::ScopeIterator::ScopeTypeLocal;
|
||||
break;
|
||||
case ScopeTypeLocal:
|
||||
type_ = debug::ScopeIterator::ScopeTypeModule;
|
||||
break;
|
||||
case ScopeTypeModule:
|
||||
// We use ScopeTypeWith type as marker for done.
|
||||
type_ = debug::ScopeIterator::ScopeTypeWith;
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
v8::debug::ScopeIterator::ScopeType DebugWasmScopeIterator::GetType() {
|
||||
DCHECK(!Done());
|
||||
return type_;
|
||||
}
|
||||
|
||||
v8::Local<v8::Object> DebugWasmScopeIterator::GetObject() {
|
||||
DCHECK(!Done());
|
||||
switch (type_) {
|
||||
case debug::ScopeIterator::ScopeTypeModule: {
|
||||
Handle<WasmInstanceObject> instance =
|
||||
FrameSummary::GetTop(frame_).AsWasm().wasm_instance();
|
||||
return Utils::ToLocal(GetModuleScopeObject(instance));
|
||||
}
|
||||
case debug::ScopeIterator::ScopeTypeLocal: {
|
||||
DCHECK(frame_->is_inspectable());
|
||||
return Utils::ToLocal(GetLocalScopeObject(frame_));
|
||||
}
|
||||
case debug::ScopeIterator::ScopeTypeWasmExpressionStack: {
|
||||
DCHECK(frame_->is_inspectable());
|
||||
return Utils::ToLocal(GetStackScopeObject(frame_));
|
||||
}
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
int DebugWasmScopeIterator::GetScriptId() {
|
||||
DCHECK(!Done());
|
||||
return -1;
|
||||
}
|
||||
|
||||
v8::Local<v8::Value> DebugWasmScopeIterator::GetFunctionDebugName() {
|
||||
DCHECK(!Done());
|
||||
return Utils::ToLocal(isolate_->factory()->empty_string());
|
||||
}
|
||||
|
||||
bool DebugWasmScopeIterator::HasLocationInfo() { return false; }
|
||||
|
||||
debug::Location DebugWasmScopeIterator::GetStartLocation() {
|
||||
DCHECK(!Done());
|
||||
return debug::Location();
|
||||
}
|
||||
|
||||
debug::Location DebugWasmScopeIterator::GetEndLocation() {
|
||||
DCHECK(!Done());
|
||||
return debug::Location();
|
||||
}
|
||||
|
||||
bool DebugWasmScopeIterator::SetVariableValue(v8::Local<v8::String> name,
|
||||
v8::Local<v8::Value> value) {
|
||||
DCHECK(!Done());
|
||||
return false;
|
||||
}
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
@ -37,27 +37,6 @@ class DebugScopeIterator final : public debug::ScopeIterator {
|
||||
v8::internal::ScopeIterator iterator_;
|
||||
};
|
||||
|
||||
class DebugWasmScopeIterator final : public debug::ScopeIterator {
|
||||
public:
|
||||
DebugWasmScopeIterator(Isolate* isolate, WasmFrame* frame);
|
||||
|
||||
bool Done() override;
|
||||
void Advance() override;
|
||||
ScopeType GetType() override;
|
||||
v8::Local<v8::Object> GetObject() override;
|
||||
v8::Local<v8::Value> GetFunctionDebugName() override;
|
||||
int GetScriptId() override;
|
||||
bool HasLocationInfo() override;
|
||||
debug::Location GetStartLocation() override;
|
||||
debug::Location GetEndLocation() override;
|
||||
|
||||
bool SetVariableValue(v8::Local<v8::String> name,
|
||||
v8::Local<v8::Value> value) override;
|
||||
private:
|
||||
Isolate* isolate_;
|
||||
WasmFrame* frame_;
|
||||
ScopeType type_;
|
||||
};
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "src/api/api-inl.h"
|
||||
#include "src/debug/debug-evaluate.h"
|
||||
#include "src/debug/debug-scope-iterator.h"
|
||||
#include "src/debug/debug-wasm-support.h"
|
||||
#include "src/debug/debug.h"
|
||||
#include "src/debug/liveedit.h"
|
||||
#include "src/execution/frames-inl.h"
|
||||
@ -160,8 +161,7 @@ DebugStackTraceIterator::GetScopeIterator() const {
|
||||
DCHECK(!Done());
|
||||
CommonFrame* frame = iterator_.frame();
|
||||
if (frame->is_wasm()) {
|
||||
return std::make_unique<DebugWasmScopeIterator>(isolate_,
|
||||
WasmFrame::cast(frame));
|
||||
return GetWasmScopeIterator(WasmFrame::cast(frame));
|
||||
}
|
||||
return std::make_unique<DebugScopeIterator>(isolate_, frame_inspector_.get());
|
||||
}
|
||||
|
@ -16,22 +16,6 @@ namespace v8 {
|
||||
namespace internal {
|
||||
namespace {
|
||||
|
||||
template <bool internal, typename... Args>
|
||||
Handle<String> PrintFToOneByteString(Isolate* isolate, const char* format,
|
||||
Args... args) {
|
||||
// Maximum length of a formatted value name ("arg#%d", "local#%d",
|
||||
// "global#%d", i32 constants, i64 constants), including null character.
|
||||
static constexpr int kMaxStrLen = 21;
|
||||
EmbeddedVector<char, kMaxStrLen> value;
|
||||
int len = SNPrintF(value, format, args...);
|
||||
CHECK(len > 0 && len < value.length());
|
||||
Vector<const uint8_t> name =
|
||||
Vector<const uint8_t>::cast(value.SubVector(0, len));
|
||||
return internal
|
||||
? isolate->factory()->InternalizeString(name)
|
||||
: isolate->factory()->NewStringFromOneByte(name).ToHandleChecked();
|
||||
}
|
||||
|
||||
// Convert a WasmValue to an appropriate JS representation.
|
||||
Handle<Object> WasmValueToObject(Isolate* isolate, wasm::WasmValue value) {
|
||||
auto* factory = isolate->factory();
|
||||
@ -71,133 +55,8 @@ Handle<Object> WasmValueToObject(Isolate* isolate, wasm::WasmValue value) {
|
||||
return factory->undefined_value();
|
||||
}
|
||||
|
||||
MaybeHandle<String> GetLocalNameString(Isolate* isolate,
|
||||
wasm::NativeModule* native_module,
|
||||
int func_index, int local_index) {
|
||||
wasm::WireBytesRef name_ref =
|
||||
native_module->GetDebugInfo()->GetLocalName(func_index, local_index);
|
||||
wasm::ModuleWireBytes wire_bytes{native_module->wire_bytes()};
|
||||
// Bounds were checked during decoding.
|
||||
DCHECK(wire_bytes.BoundsCheck(name_ref));
|
||||
wasm::WasmName name = wire_bytes.GetNameOrNull(name_ref);
|
||||
if (name.size() == 0) return {};
|
||||
return isolate->factory()->NewStringFromUtf8(name);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Handle<JSObject> GetModuleScopeObject(Handle<WasmInstanceObject> instance) {
|
||||
Isolate* isolate = instance->GetIsolate();
|
||||
Handle<JSObject> module_scope_object =
|
||||
isolate->factory()->NewJSObjectWithNullProto();
|
||||
|
||||
Handle<String> instance_name =
|
||||
isolate->factory()->InternalizeString(StaticCharVector("instance"));
|
||||
JSObject::AddProperty(isolate, module_scope_object, instance_name, instance,
|
||||
NONE);
|
||||
|
||||
Handle<WasmModuleObject> module_object(instance->module_object(), isolate);
|
||||
Handle<String> module_name =
|
||||
isolate->factory()->InternalizeString(StaticCharVector("module"));
|
||||
JSObject::AddProperty(isolate, module_scope_object, module_name,
|
||||
module_object, NONE);
|
||||
|
||||
if (instance->has_memory_object()) {
|
||||
Handle<String> name;
|
||||
// TODO(duongn): extend the logic when multiple memories are supported.
|
||||
const uint32_t memory_index = 0;
|
||||
if (!WasmInstanceObject::GetMemoryNameOrNull(isolate, instance,
|
||||
memory_index)
|
||||
.ToHandle(&name)) {
|
||||
const char* label = "memory%d";
|
||||
name = PrintFToOneByteString<true>(isolate, label, memory_index);
|
||||
}
|
||||
Handle<WasmMemoryObject> memory_object(instance->memory_object(), isolate);
|
||||
JSObject::AddProperty(isolate, module_scope_object, name, memory_object,
|
||||
NONE);
|
||||
}
|
||||
|
||||
auto& globals = instance->module()->globals;
|
||||
if (globals.size() > 0) {
|
||||
Handle<JSObject> globals_obj =
|
||||
isolate->factory()->NewJSObjectWithNullProto();
|
||||
Handle<String> globals_name =
|
||||
isolate->factory()->InternalizeString(StaticCharVector("globals"));
|
||||
JSObject::AddProperty(isolate, module_scope_object, globals_name,
|
||||
globals_obj, NONE);
|
||||
|
||||
for (uint32_t i = 0; i < globals.size(); ++i) {
|
||||
Handle<String> name;
|
||||
if (!WasmInstanceObject::GetGlobalNameOrNull(isolate, instance, i)
|
||||
.ToHandle(&name)) {
|
||||
const char* label = "global%d";
|
||||
name = PrintFToOneByteString<true>(isolate, label, i);
|
||||
}
|
||||
wasm::WasmValue value =
|
||||
WasmInstanceObject::GetGlobalValue(instance, globals[i]);
|
||||
Handle<Object> value_obj = WasmValueToObject(isolate, value);
|
||||
LookupIterator it(isolate, globals_obj, name, globals_obj,
|
||||
LookupIterator::OWN_SKIP_INTERCEPTOR);
|
||||
JSObject::CreateDataProperty(&it, value_obj).Check();
|
||||
}
|
||||
}
|
||||
return module_scope_object;
|
||||
}
|
||||
|
||||
Handle<JSObject> GetLocalScopeObject(WasmFrame* frame) {
|
||||
Isolate* isolate = frame->isolate();
|
||||
auto native_module = frame->native_module();
|
||||
auto debug_info = native_module->GetDebugInfo();
|
||||
auto function = debug_info->GetFunctionAtAddress(frame->pc());
|
||||
Handle<JSObject> local_scope_object =
|
||||
isolate->factory()->NewJSObjectWithNullProto();
|
||||
|
||||
// Fill parameters and locals.
|
||||
int num_locals = debug_info->GetNumLocals(frame->pc());
|
||||
DCHECK_LE(static_cast<int>(function.sig->parameter_count()), num_locals);
|
||||
for (int i = 0; i < num_locals; ++i) {
|
||||
Handle<Name> name;
|
||||
if (!GetLocalNameString(isolate, native_module, function.func_index, i)
|
||||
.ToHandle(&name)) {
|
||||
name = PrintFToOneByteString<true>(isolate, "var%d", i);
|
||||
}
|
||||
wasm::WasmValue value = debug_info->GetLocalValue(
|
||||
i, frame->pc(), frame->fp(), frame->callee_fp());
|
||||
Handle<Object> value_obj = WasmValueToObject(isolate, value);
|
||||
// {name} can be a string representation of an element index.
|
||||
LookupIterator::Key lookup_key{isolate, name};
|
||||
LookupIterator it(isolate, local_scope_object, lookup_key,
|
||||
local_scope_object, LookupIterator::OWN_SKIP_INTERCEPTOR);
|
||||
if (it.IsFound()) continue;
|
||||
Object::AddDataProperty(&it, value_obj, NONE,
|
||||
Just(ShouldThrow::kThrowOnError),
|
||||
StoreOrigin::kNamed)
|
||||
.Check();
|
||||
}
|
||||
return local_scope_object;
|
||||
}
|
||||
|
||||
Handle<JSObject> GetStackScopeObject(WasmFrame* frame) {
|
||||
Isolate* isolate = frame->isolate();
|
||||
auto native_module = frame->native_module();
|
||||
auto debug_info = native_module->GetDebugInfo();
|
||||
Handle<JSObject> stack_scope_obj =
|
||||
isolate->factory()->NewJSObjectWithNullProto();
|
||||
|
||||
// Fill stack values.
|
||||
// Use an object without prototype instead of an Array, for nicer displaying
|
||||
// in DevTools. For Arrays, the length field and prototype is displayed,
|
||||
// which does not make too much sense here.
|
||||
int value_count = debug_info->GetStackDepth(frame->pc());
|
||||
for (int i = 0; i < value_count; ++i) {
|
||||
wasm::WasmValue value = debug_info->GetStackValue(
|
||||
i, frame->pc(), frame->fp(), frame->callee_fp());
|
||||
Handle<Object> value_obj = WasmValueToObject(isolate, value);
|
||||
JSObject::AddDataElement(stack_scope_obj, i, value_obj, NONE);
|
||||
}
|
||||
return stack_scope_obj;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
// Helper for unpacking a maybe name that makes a default with an index if
|
||||
@ -574,7 +433,8 @@ struct TablesProxy : NamedDebugProxy<TablesProxy, kTablesProxy> {
|
||||
struct LocalsProxy : NamedDebugProxy<LocalsProxy, kLocalsProxy, FixedArray> {
|
||||
static constexpr char const* kClassName = "Locals";
|
||||
|
||||
static Handle<JSObject> Create(Isolate* isolate, WasmFrame* frame) {
|
||||
static Handle<JSObject> Create(WasmFrame* frame) {
|
||||
auto isolate = frame->isolate();
|
||||
auto debug_info = frame->native_module()->GetDebugInfo();
|
||||
// TODO(bmeurer): Check if pc is inspectable.
|
||||
int count = debug_info->GetNumLocals(frame->pc());
|
||||
@ -621,7 +481,8 @@ struct LocalsProxy : NamedDebugProxy<LocalsProxy, kLocalsProxy, FixedArray> {
|
||||
struct StackProxy : IndexedDebugProxy<StackProxy, kStackProxy, FixedArray> {
|
||||
static constexpr char const* kClassName = "Stack";
|
||||
|
||||
static Handle<JSObject> Create(Isolate* isolate, WasmFrame* frame) {
|
||||
static Handle<JSObject> Create(WasmFrame* frame) {
|
||||
auto isolate = frame->isolate();
|
||||
auto debug_info =
|
||||
frame->wasm_instance().module_object().native_module()->GetDebugInfo();
|
||||
int count = debug_info->GetStackDepth(frame->pc());
|
||||
@ -709,9 +570,9 @@ class ContextProxy {
|
||||
auto object = isolate->factory()->NewJSObjectFromMap(object_map);
|
||||
Handle<WasmInstanceObject> instance(frame->wasm_instance(), isolate);
|
||||
object->SetEmbedderField(kInstanceField, *instance);
|
||||
Handle<JSObject> locals = LocalsProxy::Create(isolate, frame);
|
||||
Handle<JSObject> locals = LocalsProxy::Create(frame);
|
||||
object->SetEmbedderField(kLocalsField, *locals);
|
||||
Handle<JSObject> stack = StackProxy::Create(isolate, frame);
|
||||
Handle<JSObject> stack = StackProxy::Create(frame);
|
||||
object->SetEmbedderField(kStackField, *stack);
|
||||
return object;
|
||||
}
|
||||
@ -800,11 +661,127 @@ class ContextProxy {
|
||||
}
|
||||
};
|
||||
|
||||
Handle<JSObject> GetModuleScopeObject(Handle<WasmInstanceObject> instance) {
|
||||
Isolate* isolate = instance->GetIsolate();
|
||||
Handle<JSObject> module_scope_object =
|
||||
isolate->factory()->NewJSObjectWithNullProto();
|
||||
|
||||
Handle<String> instance_name =
|
||||
isolate->factory()->InternalizeString(StaticCharVector("instance"));
|
||||
JSObject::AddProperty(isolate, module_scope_object, instance_name, instance,
|
||||
NONE);
|
||||
|
||||
Handle<WasmModuleObject> module_object(instance->module_object(), isolate);
|
||||
Handle<String> module_name =
|
||||
isolate->factory()->InternalizeString(StaticCharVector("module"));
|
||||
JSObject::AddProperty(isolate, module_scope_object, module_name,
|
||||
module_object, NONE);
|
||||
|
||||
uint32_t memory_count = MemoriesProxy::Count(isolate, instance);
|
||||
for (uint32_t memory_index = 0; memory_index < memory_count; ++memory_index) {
|
||||
auto memory_name = MemoriesProxy::GetName(isolate, instance, memory_index);
|
||||
auto memory_value = MemoriesProxy::Get(isolate, instance, memory_index);
|
||||
JSObject::AddProperty(isolate, module_scope_object, memory_name,
|
||||
memory_value, NONE);
|
||||
}
|
||||
|
||||
if (GlobalsProxy::Count(isolate, instance) != 0) {
|
||||
Handle<JSObject> globals_obj =
|
||||
GetOrCreateInstanceProxy<GlobalsProxy>(isolate, instance);
|
||||
Handle<String> globals_name =
|
||||
isolate->factory()->InternalizeString(StaticCharVector("globals"));
|
||||
JSObject::AddProperty(isolate, module_scope_object, globals_name,
|
||||
globals_obj, NONE);
|
||||
}
|
||||
|
||||
return module_scope_object;
|
||||
}
|
||||
|
||||
class DebugWasmScopeIterator final : public debug::ScopeIterator {
|
||||
public:
|
||||
explicit DebugWasmScopeIterator(WasmFrame* frame)
|
||||
: frame_(frame),
|
||||
type_(debug::ScopeIterator::ScopeTypeWasmExpressionStack) {
|
||||
// Skip local scope and expression stack scope if the frame is not
|
||||
// inspectable.
|
||||
if (!frame->is_inspectable()) {
|
||||
type_ = debug::ScopeIterator::ScopeTypeModule;
|
||||
}
|
||||
}
|
||||
|
||||
bool Done() override { return type_ == ScopeTypeWith; }
|
||||
|
||||
void Advance() override {
|
||||
DCHECK(!Done());
|
||||
switch (type_) {
|
||||
case ScopeTypeWasmExpressionStack:
|
||||
type_ = debug::ScopeIterator::ScopeTypeLocal;
|
||||
break;
|
||||
case ScopeTypeLocal:
|
||||
type_ = debug::ScopeIterator::ScopeTypeModule;
|
||||
break;
|
||||
case ScopeTypeModule:
|
||||
// We use ScopeTypeWith type as marker for done.
|
||||
type_ = debug::ScopeIterator::ScopeTypeWith;
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
|
||||
ScopeType GetType() override { return type_; }
|
||||
|
||||
v8::Local<v8::Object> GetObject() override {
|
||||
DCHECK(!Done());
|
||||
switch (type_) {
|
||||
case debug::ScopeIterator::ScopeTypeModule: {
|
||||
Handle<WasmInstanceObject> instance =
|
||||
FrameSummary::GetTop(frame_).AsWasm().wasm_instance();
|
||||
return Utils::ToLocal(GetModuleScopeObject(instance));
|
||||
}
|
||||
case debug::ScopeIterator::ScopeTypeLocal: {
|
||||
DCHECK(frame_->is_inspectable());
|
||||
return Utils::ToLocal(LocalsProxy::Create(frame_));
|
||||
}
|
||||
case debug::ScopeIterator::ScopeTypeWasmExpressionStack: {
|
||||
DCHECK(frame_->is_inspectable());
|
||||
return Utils::ToLocal(StackProxy::Create(frame_));
|
||||
}
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
}
|
||||
v8::Local<v8::Value> GetFunctionDebugName() override {
|
||||
return Utils::ToLocal(frame_->isolate()->factory()->empty_string());
|
||||
}
|
||||
|
||||
int GetScriptId() override { return -1; }
|
||||
|
||||
bool HasLocationInfo() override { return false; }
|
||||
|
||||
debug::Location GetStartLocation() override { return {}; }
|
||||
|
||||
debug::Location GetEndLocation() override { return {}; }
|
||||
|
||||
bool SetVariableValue(v8::Local<v8::String> name,
|
||||
v8::Local<v8::Value> value) override {
|
||||
return false;
|
||||
}
|
||||
|
||||
private:
|
||||
WasmFrame* const frame_;
|
||||
ScopeType type_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
Handle<JSObject> GetJSDebugProxy(WasmFrame* frame) {
|
||||
Handle<JSObject> GetWasmDebugProxy(WasmFrame* frame) {
|
||||
return ContextProxy::Create(frame);
|
||||
}
|
||||
|
||||
std::unique_ptr<debug::ScopeIterator> GetWasmScopeIterator(WasmFrame* frame) {
|
||||
return std::make_unique<DebugWasmScopeIterator>(frame);
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
@ -5,19 +5,23 @@
|
||||
#ifndef V8_DEBUG_DEBUG_WASM_SUPPORT_H_
|
||||
#define V8_DEBUG_DEBUG_WASM_SUPPORT_H_
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace v8 {
|
||||
namespace debug {
|
||||
class ScopeIterator;
|
||||
} // namespace debug
|
||||
|
||||
namespace internal {
|
||||
|
||||
template <typename T>
|
||||
class Handle;
|
||||
class JSObject;
|
||||
class WasmFrame;
|
||||
class WasmInstanceObject;
|
||||
|
||||
Handle<JSObject> GetModuleScopeObject(Handle<WasmInstanceObject> instance);
|
||||
Handle<JSObject> GetLocalScopeObject(WasmFrame* frame);
|
||||
Handle<JSObject> GetStackScopeObject(WasmFrame* frame);
|
||||
Handle<JSObject> GetJSDebugProxy(WasmFrame* frame);
|
||||
Handle<JSObject> GetWasmDebugProxy(WasmFrame* frame);
|
||||
|
||||
std::unique_ptr<debug::ScopeIterator> GetWasmScopeIterator(WasmFrame* frame);
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
@ -5,4 +5,4 @@ Waiting for wasm script to be parsed.
|
||||
Setting breakpoint in wasm.
|
||||
Running main.
|
||||
Paused in debugger.
|
||||
globals: {"module_name.imported_global", "exported_global", "global2"}
|
||||
globals: {"$module_name.imported_global", "$exported_global", "$global2"}
|
||||
|
@ -5,17 +5,17 @@ Waiting for wasm script to be parsed.
|
||||
Setting breakpoint in wasm.
|
||||
Running main.
|
||||
Paused in debugger.
|
||||
name: memory0
|
||||
name: $memory0
|
||||
Finished.
|
||||
Waiting for wasm script to be parsed.
|
||||
Setting breakpoint in wasm.
|
||||
Running main.
|
||||
Paused in debugger.
|
||||
name: exported_memory
|
||||
name: $exported_memory
|
||||
Finished.
|
||||
Waiting for wasm script to be parsed.
|
||||
Setting breakpoint in wasm.
|
||||
Running main.
|
||||
Paused in debugger.
|
||||
name: module_name.imported_mem
|
||||
name: $module_name.imported_mem
|
||||
Finished.
|
||||
|
@ -16,39 +16,39 @@ Scope:
|
||||
at C (interpreted) (0:169):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
var2: 0 (number)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$var2: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 0 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 0 (number)
|
||||
at B (liftoff) (0:158):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 42 (number)
|
||||
1: 3 (number)
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 0 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 0 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 0 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 0 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -60,39 +60,39 @@ at C (interpreted) (0:171):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 42 (number)
|
||||
- scope (local):
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
var2: 0 (number)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$var2: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 0 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 0 (number)
|
||||
at B (liftoff) (0:158):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 42 (number)
|
||||
1: 3 (number)
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 0 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 0 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 0 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 0 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -103,39 +103,39 @@ Scope:
|
||||
at C (interpreted) (0:173):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
var2: 0 (number)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$var2: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at B (liftoff) (0:158):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 42 (number)
|
||||
1: 3 (number)
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -147,39 +147,39 @@ at C (interpreted) (0:175):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 47 (number)
|
||||
- scope (local):
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
var2: 0 (number)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$var2: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at B (liftoff) (0:158):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 42 (number)
|
||||
1: 3 (number)
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -190,39 +190,39 @@ Scope:
|
||||
at C (interpreted) (0:177):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 47 (number)
|
||||
var2: 0 (number)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 47 (number)
|
||||
$var2: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at B (liftoff) (0:158):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 42 (number)
|
||||
1: 3 (number)
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -235,26 +235,26 @@ at B (liftoff) (0:160):
|
||||
0: 42 (number)
|
||||
1: 3 (number)
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -266,26 +266,26 @@ at B (liftoff) (0:161):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 42 (number)
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -296,26 +296,26 @@ Scope:
|
||||
at B (liftoff) (0:162):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
0: 0 (number)
|
||||
i32_arg: 42 (number)
|
||||
i32_local: 0 (number)
|
||||
f32_local: 7.199999809265137 (number)
|
||||
var5: 0 (number)
|
||||
v128_local: Uint8Array(16)
|
||||
$i32_arg: 42 (number)
|
||||
$i32_local: 0 (number)
|
||||
$f32_local: 7.199999809265137 (number)
|
||||
$0: 0 (number)
|
||||
$var5: 0 (number)
|
||||
$v128_local: Uint8Array(16)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at A (liftoff) (0:128):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
@ -326,12 +326,12 @@ Scope:
|
||||
at A (liftoff) (0:130):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 42 (number)
|
||||
$var0: 42 (number)
|
||||
- scope (module):
|
||||
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
|
||||
module: Module
|
||||
exported_memory: Memory(1)
|
||||
globals: "exported_global": 42 (number)
|
||||
$exported_memory: Memory(1)
|
||||
globals: "$exported_global": 42 (number)
|
||||
at (anonymous) (0:17):
|
||||
- scope (global):
|
||||
-- skipped globals
|
||||
|
@ -17,7 +17,7 @@ at wasm_A (0:38):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -44,7 +44,7 @@ at wasm_A (0:39):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -56,7 +56,7 @@ Scope:
|
||||
at wasm_B (0:45):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -69,7 +69,7 @@ at wasm_B (0:47):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 3 (number)
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -81,7 +81,7 @@ Scope:
|
||||
at wasm_B (0:49):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -94,7 +94,7 @@ at wasm_B (0:51):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 3 (number)
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -108,7 +108,7 @@ at wasm_B (0:53):
|
||||
0: 3 (number)
|
||||
1: 1 (number)
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -121,7 +121,7 @@ at wasm_B (0:54):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 2 (number)
|
||||
- scope (local):
|
||||
var0: 3 (number)
|
||||
$var0: 3 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -139,7 +139,7 @@ at wasm_A (0:38):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -157,7 +157,7 @@ at wasm_A (0:39):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -169,7 +169,7 @@ Scope:
|
||||
at wasm_B (0:45):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -182,7 +182,7 @@ at wasm_B (0:47):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 2 (number)
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -194,7 +194,7 @@ Scope:
|
||||
at wasm_B (0:49):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -207,7 +207,7 @@ at wasm_B (0:51):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 2 (number)
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -221,7 +221,7 @@ at wasm_B (0:53):
|
||||
0: 2 (number)
|
||||
1: 1 (number)
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -234,7 +234,7 @@ at wasm_B (0:54):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 1 (number)
|
||||
- scope (local):
|
||||
var0: 2 (number)
|
||||
$var0: 2 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -252,7 +252,7 @@ at wasm_A (0:38):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -270,7 +270,7 @@ at wasm_A (0:39):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -282,7 +282,7 @@ Scope:
|
||||
at wasm_B (0:45):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -295,7 +295,7 @@ at wasm_B (0:47):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 1 (number)
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -307,7 +307,7 @@ Scope:
|
||||
at wasm_B (0:49):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -320,7 +320,7 @@ at wasm_B (0:51):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 1 (number)
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -334,7 +334,7 @@ at wasm_B (0:53):
|
||||
0: 1 (number)
|
||||
1: 1 (number)
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -347,7 +347,7 @@ at wasm_B (0:54):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 0 (number)
|
||||
- scope (local):
|
||||
var0: 1 (number)
|
||||
$var0: 1 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -365,7 +365,7 @@ at wasm_A (0:38):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 0 (number)
|
||||
$var0: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -383,7 +383,7 @@ at wasm_A (0:39):
|
||||
at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 0 (number)
|
||||
$var0: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -395,7 +395,7 @@ Scope:
|
||||
at wasm_B (0:45):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 0 (number)
|
||||
$var0: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -408,7 +408,7 @@ at wasm_B (0:47):
|
||||
- scope (wasm-expression-stack):
|
||||
0: 0 (number)
|
||||
- scope (local):
|
||||
var0: 0 (number)
|
||||
$var0: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
@ -420,7 +420,7 @@ Scope:
|
||||
at wasm_B (0:61):
|
||||
- scope (wasm-expression-stack):
|
||||
- scope (local):
|
||||
var0: 0 (number)
|
||||
$var0: 0 (number)
|
||||
- scope (module):
|
||||
instance: exports: "main" (Function)
|
||||
module: Module
|
||||
|
@ -7,11 +7,11 @@ Paused at:
|
||||
--- 0 ---
|
||||
Script wasm://wasm/a9a86c5e byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
|
||||
scope at div (0:46):
|
||||
a: 1
|
||||
b: 0
|
||||
unused: 4711
|
||||
local_zero: 0
|
||||
local_const_11: 11
|
||||
$a: 1
|
||||
$b: 0
|
||||
$unused: 4711
|
||||
$local_zero: 0
|
||||
$local_const_11: 11
|
||||
--- 1 ---
|
||||
try {
|
||||
instance.exports.#div(1, 0, 4711); // traps (div by zero)
|
||||
@ -37,11 +37,11 @@ Paused at:
|
||||
--- 0 ---
|
||||
Script wasm://wasm/a9a86c5e byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
|
||||
scope at div (0:46):
|
||||
a: -2147483648
|
||||
b: -1
|
||||
unused: 4711
|
||||
local_zero: 0
|
||||
local_const_11: 11
|
||||
$a: -2147483648
|
||||
$b: -1
|
||||
$unused: 4711
|
||||
$local_zero: 0
|
||||
$local_const_11: 11
|
||||
--- 1 ---
|
||||
try {
|
||||
instance.exports.#div(0x80000000, -1, 4711); // traps (unrepresentable)
|
||||
|
@ -16,7 +16,7 @@ at wasm_B (0:54):
|
||||
- scope (wasm-expression-stack):
|
||||
{"0":3}
|
||||
- scope (local):
|
||||
{"var0":4}
|
||||
{"$var0":4}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -28,7 +28,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":3}
|
||||
{"$var0":3}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -47,7 +47,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":3}
|
||||
{"$var0":3}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -66,7 +66,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":3}
|
||||
{"$var0":3}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -78,7 +78,7 @@ at wasm_B (0:58):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":3}
|
||||
{"$var0":3}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -90,7 +90,7 @@ at wasm_B (0:54):
|
||||
- scope (wasm-expression-stack):
|
||||
{"0":2}
|
||||
- scope (local):
|
||||
{"var0":3}
|
||||
{"$var0":3}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -102,7 +102,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":2}
|
||||
{"$var0":2}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -114,7 +114,7 @@ at wasm_B (0:58):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":2}
|
||||
{"$var0":2}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -126,7 +126,7 @@ at wasm_B (0:54):
|
||||
- scope (wasm-expression-stack):
|
||||
{"0":1}
|
||||
- scope (local):
|
||||
{"var0":2}
|
||||
{"$var0":2}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -138,7 +138,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -157,7 +157,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -169,7 +169,7 @@ at wasm_B (0:58):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -181,7 +181,7 @@ at wasm_B (0:45):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -193,7 +193,7 @@ at wasm_B (0:47):
|
||||
- scope (wasm-expression-stack):
|
||||
{"0":1}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -205,7 +205,7 @@ at wasm_B (0:49):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -217,7 +217,7 @@ at wasm_B (0:51):
|
||||
- scope (wasm-expression-stack):
|
||||
{"0":1}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -229,7 +229,7 @@ at wasm_B (0:53):
|
||||
- scope (wasm-expression-stack):
|
||||
{"0":1,"1":1}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -241,7 +241,7 @@ at wasm_B (0:54):
|
||||
- scope (wasm-expression-stack):
|
||||
{"0":0}
|
||||
- scope (local):
|
||||
{"var0":1}
|
||||
{"$var0":1}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -253,7 +253,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":0}
|
||||
{"$var0":0}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -272,7 +272,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":0}
|
||||
{"$var0":0}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -291,7 +291,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":0}
|
||||
{"$var0":0}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -310,7 +310,7 @@ at wasm_B (0:56):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":0}
|
||||
{"$var0":0}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
@ -322,7 +322,7 @@ at wasm_B (0:58):
|
||||
- scope (wasm-expression-stack):
|
||||
{}
|
||||
- scope (local):
|
||||
{"var0":0}
|
||||
{"$var0":0}
|
||||
- scope (module):
|
||||
-- skipped
|
||||
at (anonymous) (0:17):
|
||||
|
@ -91,14 +91,15 @@ async function waitForPauseAndStep(stepAction) {
|
||||
if (scope.type === 'global' || scope.type === 'module') {
|
||||
InspectorTest.logObject(' -- skipped');
|
||||
} else {
|
||||
const {result: {result: {value}}} =
|
||||
await Protocol.Runtime.callFunctionOn({
|
||||
objectId: scope.object.objectId,
|
||||
functionDeclaration: 'function() { return this; }',
|
||||
returnByValue: true
|
||||
const object = {};
|
||||
const {result: {result: properties}} =
|
||||
await Protocol.Runtime.getProperties({
|
||||
objectId: scope.object.objectId
|
||||
});
|
||||
|
||||
InspectorTest.log(` ${JSON.stringify(value)}`);
|
||||
for (const {name, value: {value}} of properties) {
|
||||
object[name] = value;
|
||||
}
|
||||
InspectorTest.log(` ${JSON.stringify(object)}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user