[wasm] Use WebAssembly.Memory objects in the scope chain.

Previously V8 would wrap the WebAssembly.Memory backing stores into
Uint8Arrays and report that as memories, but that's confusing to the
developer, since that's not what's really being used. The way that
DevTools presents the backing stores of memories, it's still perfectly
possible to get hold of an Uint8Array if that's what the developer is
looking for.

To make it possible to easily identify the WebAssembly.Memory objects
in the DevTools front-end (in particular for the memory inspector) we
add a 'webassemblymemory' subtype to the Chrome DevTools Protocol. We
also improve the description for the memories to include the number
of active pages.

Fixed: chromium:1155566
Screenshot: https://imgur.com/8enx57u.png
Change-Id: I63dbabe0e372e9ad6dcc8e6642cdb743147a620c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2574699
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71641}
This commit is contained in:
Benedikt Meurer 2020-12-07 08:56:41 +01:00 committed by Commit Bot
parent a69b442bc6
commit 058299a881
9 changed files with 127 additions and 76 deletions

View File

@ -1043,6 +1043,7 @@ domain Runtime
typedarray
arraybuffer
dataview
webassemblymemory
i32
i64
f32

View File

@ -91,6 +91,7 @@ class Private;
class Uint32;
class Utils;
class Value;
class WasmMemoryObject;
class WasmModuleObject;
template <class T> class Local;
template <class T>
@ -2962,6 +2963,11 @@ class V8_EXPORT Value : public Data {
*/
bool IsProxy() const;
/**
* Returns true if this value is a WasmMemoryObject.
*/
bool IsWasmMemoryObject() const;
/**
* Returns true if this value is a WasmModuleObject.
*/
@ -4980,6 +4986,22 @@ class V8_EXPORT CompiledWasmModule {
const std::string source_url_;
};
// An instance of WebAssembly.Memory.
class V8_EXPORT WasmMemoryObject : public Object {
public:
WasmMemoryObject() = delete;
/**
* Returns underlying ArrayBuffer.
*/
Local<ArrayBuffer> Buffer();
V8_INLINE static WasmMemoryObject* Cast(Value* obj);
private:
static void CheckCast(Value* object);
};
// An instance of WebAssembly.Module.
class V8_EXPORT WasmModuleObject : public Object {
public:
@ -11956,6 +11978,13 @@ Proxy* Proxy::Cast(v8::Value* value) {
return static_cast<Proxy*>(value);
}
WasmMemoryObject* WasmMemoryObject::Cast(v8::Value* value) {
#ifdef V8_ENABLE_CHECKS
CheckCast(value);
#endif
return static_cast<WasmMemoryObject*>(value);
}
WasmModuleObject* WasmModuleObject::Cast(v8::Value* value) {
#ifdef V8_ENABLE_CHECKS
CheckCast(value);

View File

@ -3583,6 +3583,7 @@ VALUE_IS_SPECIFIC_TYPE(SymbolObject, SymbolWrapper)
VALUE_IS_SPECIFIC_TYPE(Date, JSDate)
VALUE_IS_SPECIFIC_TYPE(Map, JSMap)
VALUE_IS_SPECIFIC_TYPE(Set, JSSet)
VALUE_IS_SPECIFIC_TYPE(WasmMemoryObject, WasmMemoryObject)
VALUE_IS_SPECIFIC_TYPE(WasmModuleObject, WasmModuleObject)
VALUE_IS_SPECIFIC_TYPE(WeakMap, JSWeakMap)
VALUE_IS_SPECIFIC_TYPE(WeakSet, JSWeakSet)
@ -3903,6 +3904,11 @@ void v8::Proxy::CheckCast(Value* that) {
Utils::ApiCheck(that->IsProxy(), "v8::Proxy::Cast", "Value is not a Proxy");
}
void v8::WasmMemoryObject::CheckCast(Value* that) {
Utils::ApiCheck(that->IsWasmMemoryObject(), "v8::WasmMemoryObject::Cast",
"Value is not a WasmMemoryObject");
}
void v8::WasmModuleObject::CheckCast(Value* that) {
Utils::ApiCheck(that->IsWasmModuleObject(), "v8::WasmModuleObject::Cast",
"Value is not a WasmModuleObject");
@ -7502,6 +7508,12 @@ MemorySpan<const uint8_t> CompiledWasmModule::GetWireBytesRef() {
return {bytes_vec.begin(), bytes_vec.size()};
}
Local<ArrayBuffer> v8::WasmMemoryObject::Buffer() {
i::Handle<i::WasmMemoryObject> obj = Utils::OpenHandle(this);
i::Handle<i::JSArrayBuffer> buffer(obj->array_buffer(), obj->GetIsolate());
return Utils::ToLocal(buffer);
}
CompiledWasmModule WasmModuleObject::GetCompiledModule() {
i::Handle<i::WasmModuleObject> obj =
i::Handle<i::WasmModuleObject>::cast(Utils::OpenHandle(this));

View File

@ -136,7 +136,8 @@ class RegisteredExtension {
V(BigInt, BigInt) \
V(ScriptOrModule, Script) \
V(FixedArray, FixedArray) \
V(ModuleRequest, ModuleRequest)
V(ModuleRequest, ModuleRequest) \
V(WasmMemoryObject, WasmMemoryObject)
class Utils {
public:

View File

@ -22,6 +22,10 @@ using protocol::Runtime::PropertyPreview;
using protocol::Runtime::RemoteObject;
namespace {
// WebAssembly memory is organized in pages of size 64KiB.
const size_t kWasmPageSize = 64 * 1024;
V8InspectorClient* clientFor(v8::Local<v8::Context> context) {
return static_cast<V8InspectorImpl*>(
v8::debug::GetInspector(context->GetIsolate()))
@ -1909,6 +1913,13 @@ std::unique_ptr<ValueMirror> ValueMirror::create(v8::Local<v8::Context> context,
value, RemoteObject::SubtypeEnum::Dataview,
descriptionForCollection(isolate, view, view->ByteLength()));
}
if (value->IsWasmMemoryObject()) {
v8::Local<v8::WasmMemoryObject> memory = value.As<v8::WasmMemoryObject>();
return std::make_unique<ObjectMirror>(
value, RemoteObject::SubtypeEnum::Webassemblymemory,
descriptionForCollection(
isolate, memory, memory->Buffer()->ByteLength() / kWasmPageSize));
}
V8InternalValueType internalType =
v8InternalValueTypeFrom(context, value.As<v8::Object>());
if (value->IsArray() && internalType == V8InternalValueType::kScopeList) {

View File

@ -211,11 +211,8 @@ Handle<JSObject> GetModuleScopeObject(Handle<WasmInstanceObject> instance) {
const char* label = "memory%d";
name = PrintFToOneByteString<true>(isolate, label, memory_index);
}
Handle<JSArrayBuffer> memory_buffer(
instance->memory_object().array_buffer(), isolate);
Handle<JSTypedArray> uint8_array = isolate->factory()->NewJSTypedArray(
kExternalUint8Array, memory_buffer, 0, memory_buffer->byte_length());
JSObject::AddProperty(isolate, module_scope_object, name, uint8_array,
Handle<WasmMemoryObject> memory_object(instance->memory_object(), isolate);
JSObject::AddProperty(isolate, module_scope_object, name, memory_object,
NONE);
}

View File

@ -14,7 +14,7 @@ Scope:
at func (0:147):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -28,7 +28,7 @@ at func (0:147):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -44,7 +44,7 @@ Scope:
at func (0:149):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -59,7 +59,7 @@ at func (0:149):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -75,7 +75,7 @@ Scope:
at func (0:151):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -89,7 +89,7 @@ at func (0:151):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -105,7 +105,7 @@ Scope:
at func (0:153):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -120,7 +120,7 @@ at func (0:153):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -136,7 +136,7 @@ Scope:
at func (0:155):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -150,7 +150,7 @@ at func (0:155):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -166,7 +166,7 @@ Scope:
at func (0:166):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -181,7 +181,7 @@ at func (0:166):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -197,7 +197,7 @@ Scope:
at func (0:168):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -211,7 +211,7 @@ at func (0:168):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -227,7 +227,7 @@ Scope:
at func (0:179):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -242,7 +242,7 @@ at func (0:179):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -258,7 +258,7 @@ Scope:
at func (0:181):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -272,7 +272,7 @@ at func (0:181):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -288,7 +288,7 @@ Scope:
at func (0:183):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -303,7 +303,7 @@ at func (0:183):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -319,7 +319,7 @@ Scope:
at func (0:184):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -334,7 +334,7 @@ at func (0:184):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -350,7 +350,7 @@ Scope:
at func (0:186):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -366,7 +366,7 @@ at func (0:186):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -382,7 +382,7 @@ Scope:
at func (0:187):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -398,7 +398,7 @@ at func (0:187):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -414,7 +414,7 @@ Scope:
at func (0:188):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -429,7 +429,7 @@ at func (0:188):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -445,7 +445,7 @@ Scope:
at func (0:190):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -459,7 +459,7 @@ at func (0:190):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -475,7 +475,7 @@ Scope:
at func (0:192):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -490,7 +490,7 @@ at func (0:192):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -506,7 +506,7 @@ Scope:
at func (0:194):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -521,7 +521,7 @@ at func (0:194):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -537,7 +537,7 @@ Scope:
at func (0:196):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -551,7 +551,7 @@ at func (0:196):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -567,7 +567,7 @@ Scope:
at func (0:198):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -582,7 +582,7 @@ at func (0:198):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -598,7 +598,7 @@ Scope:
at func (0:199):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -613,7 +613,7 @@ at func (0:199):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -629,7 +629,7 @@ Scope:
at func (0:201):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -643,7 +643,7 @@ at func (0:201):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -659,7 +659,7 @@ Scope:
at func (0:203):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f64)
@ -674,7 +674,7 @@ at func (0:203):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 4 (i32)
@ -690,7 +690,7 @@ Scope:
at func (0:205):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 15 (i32)
- scope (local):
0: 0 (f64)
@ -704,7 +704,7 @@ at func (0:205):
at call_func (0:132):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 15 (i32)
- scope (local):
var0: 4 (i32)
@ -720,7 +720,7 @@ Scope:
at call_func (0:134):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 15 (i32)
- scope (local):
var0: 4 (i32)

View File

@ -14,7 +14,7 @@ Scope:
at C (interpreted) (0:169):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
i32_arg: 42 (i32)
@ -24,7 +24,7 @@ at C (interpreted) (0:169):
at B (liftoff) (0:158):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f32)
@ -39,7 +39,7 @@ at B (liftoff) (0:158):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 42 (i32)
@ -54,7 +54,7 @@ Scope:
at C (interpreted) (0:171):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
i32_arg: 42 (i32)
@ -65,7 +65,7 @@ at C (interpreted) (0:171):
at B (liftoff) (0:158):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
0: 0 (f32)
@ -80,7 +80,7 @@ at B (liftoff) (0:158):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 0 (i32)
- scope (local):
var0: 42 (i32)
@ -95,7 +95,7 @@ Scope:
at C (interpreted) (0:173):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
i32_arg: 42 (i32)
@ -105,7 +105,7 @@ at C (interpreted) (0:173):
at B (liftoff) (0:158):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
0: 0 (f32)
@ -120,7 +120,7 @@ at B (liftoff) (0:158):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
var0: 42 (i32)
@ -135,7 +135,7 @@ Scope:
at C (interpreted) (0:175):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
i32_arg: 42 (i32)
@ -146,7 +146,7 @@ at C (interpreted) (0:175):
at B (liftoff) (0:158):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
0: 0 (f32)
@ -161,7 +161,7 @@ at B (liftoff) (0:158):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
var0: 42 (i32)
@ -176,7 +176,7 @@ Scope:
at C (interpreted) (0:177):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
i32_arg: 42 (i32)
@ -186,7 +186,7 @@ at C (interpreted) (0:177):
at B (liftoff) (0:158):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
0: 0 (f32)
@ -201,7 +201,7 @@ at B (liftoff) (0:158):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
var0: 42 (i32)
@ -216,7 +216,7 @@ Scope:
at B (liftoff) (0:160):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
0: 0 (f32)
@ -231,7 +231,7 @@ at B (liftoff) (0:160):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
var0: 42 (i32)
@ -246,7 +246,7 @@ Scope:
at B (liftoff) (0:161):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
0: 0 (f32)
@ -260,7 +260,7 @@ at B (liftoff) (0:161):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
var0: 42 (i32)
@ -275,7 +275,7 @@ Scope:
at B (liftoff) (0:162):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
0: 0 (f32)
@ -288,7 +288,7 @@ at B (liftoff) (0:162):
at A (liftoff) (0:128):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
var0: 42 (i32)
@ -303,7 +303,7 @@ Scope:
at A (liftoff) (0:130):
- scope (module):
instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
exported_memory: Uint8Array(65536)
exported_memory: Memory(1)
globals: "exported_global": 42 (i32)
- scope (local):
var0: 42 (i32)

View File

@ -50,7 +50,7 @@ function printIfFailure(message) {
async function getScopeValues(name, value) {
if (value.type == 'object') {
if (value.subtype == 'typedarray') return value.description;
if (value.subtype === 'typedarray' || value.subtype == 'webassemblymemory') return value.description;
if (name == 'instance') return dumpInstanceProperties(value);
let msg = await Protocol.Runtime.getProperties({objectId: value.objectId});