[inspector] Remove special wasm RemoteObject type.

Previously we had introduced a special `v8::internal::WasmValue` type
which we used to expose Wasm values to the Scope view in Chromium
DevTools. The problem however is that these values cannot be exposed to
JavaScript (and in particular not to Debug Evaluate), which means that
particularly for v128 and i64 we have inconsistent representations
across the various parts of DevTools.

This change removes the `wasm` type from the RemoteObject and all the
adjacent logic, and paves the way for a uniform representation of Wasm
values throughout DevTools. For i64 we will simply use BigInt
consistently everywhere, and for i32, f32 and f64 we'll just use Number.
For externref we will represent the values as-is directly. For v128
values we currently use a Uint8Array, but will introduce a dedicated
WasmSimd128 class in a follow-up CL.

Bug: chromium:1071432
Fixed: chromium:1159402
Change-Id: I0671e5736c9c27d7ca376e23ed74f16d36e03c80
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2614428
Reviewed-by: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71962}
This commit is contained in:
Benedikt Meurer 2021-01-07 19:35:22 +01:00 committed by Commit Bot
parent 025443a4a8
commit cde7a77e3a
18 changed files with 365 additions and 719 deletions

View File

@ -1008,8 +1008,7 @@ domain Runtime
boolean
symbol
bigint
wasm
# Object subtype hint. Specified for `object` or `wasm` type values only.
# Object subtype hint. Specified for `object` type values only.
# NOTE: If you change anything here, make sure to also update
# `subtype` in `ObjectPreview` and `PropertyPreview` below.
optional enum subtype
@ -1031,12 +1030,6 @@ domain Runtime
arraybuffer
dataview
webassemblymemory
i32
i64
f32
f64
v128
externref
# Object class (constructor) name. Specified for `object` type values only.
optional string className
# Remote object value in case of primitive values or JSON values (if it was requested).

View File

@ -3921,12 +3921,6 @@ void v8::debug::AccessorPair::CheckCast(Value* that) {
"Value is not a debug::AccessorPair");
}
void v8::debug::WasmValue::CheckCast(Value* that) {
i::Handle<i::Object> obj = Utils::OpenHandle(that);
Utils::ApiCheck(obj->IsWasmValue(), "v8::WasmValue::Cast",
"Value is not a debug::WasmValue");
}
v8::BackingStore::~BackingStore() {
auto i_this = reinterpret_cast<const i::BackingStore*>(this);
i_this->~BackingStore(); // manually call internal destructor
@ -10689,52 +10683,6 @@ bool debug::AccessorPair::IsAccessorPair(Local<Value> that) {
return obj->IsAccessorPair();
}
int debug::WasmValue::value_type() {
i::Handle<i::WasmValue> obj = Utils::OpenHandle(this);
return obj->value_type();
}
v8::Local<v8::Array> debug::WasmValue::bytes() {
i::Handle<i::WasmValue> obj = Utils::OpenHandle(this);
DCHECK(i::wasm::ValueType::Kind::kI32 == obj->value_type() ||
i::wasm::ValueType::Kind::kI64 == obj->value_type() ||
i::wasm::ValueType::Kind::kF32 == obj->value_type() ||
i::wasm::ValueType::Kind::kF64 == obj->value_type() ||
i::wasm::ValueType::Kind::kS128 == obj->value_type());
i::Isolate* isolate = obj->GetIsolate();
i::Handle<i::Object> bytes_or_ref(obj->bytes_or_ref(), isolate);
i::Handle<i::ByteArray> bytes(i::Handle<i::ByteArray>::cast(bytes_or_ref));
int length = bytes->length();
i::Handle<i::FixedArray> fa = isolate->factory()->NewFixedArray(length);
i::Handle<i::JSArray> arr = obj->GetIsolate()->factory()->NewJSArray(
i::PACKED_SMI_ELEMENTS, length, length);
i::JSArray::SetContent(arr, fa);
for (int i = 0; i < length; i++) {
fa->set(i, i::Smi::FromInt(bytes->get(i)));
}
return Utils::ToLocal(arr);
}
v8::Local<v8::Value> debug::WasmValue::ref() {
i::Handle<i::WasmValue> obj = Utils::OpenHandle(this);
DCHECK_EQ(i::wasm::HeapType::kExtern, obj->value_type());
i::Isolate* isolate = obj->GetIsolate();
i::Handle<i::Object> bytes_or_ref(obj->bytes_or_ref(), isolate);
return Utils::ToLocal(bytes_or_ref);
}
bool debug::WasmValue::IsWasmValue(Local<Value> that) {
i::Handle<i::Object> obj = Utils::OpenHandle(*that);
return obj->IsWasmValue();
}
MaybeLocal<Message> debug::GetMessageFromPromise(Local<Promise> p) {
i::Handle<i::JSPromise> promise = Utils::OpenHandle(*p);
i::Isolate* isolate = promise->GetIsolate();

View File

@ -33,7 +33,6 @@ namespace debug {
class AccessorPair;
class GeneratorObject;
class Script;
class WasmValue;
class WeakMap;
} // namespace debug
@ -129,7 +128,6 @@ class RegisteredExtension {
V(debug::Script, Script) \
V(debug::WeakMap, JSWeakMap) \
V(debug::AccessorPair, AccessorPair) \
V(debug::WasmValue, WasmValue) \
V(Promise, JSPromise) \
V(Primitive, Object) \
V(PrimitiveArray, FixedArray) \

View File

@ -611,23 +611,6 @@ class PropertyIterator {
virtual bool is_array_index() = 0;
};
// Wrapper around v8::internal::WasmValue.
class V8_EXPORT_PRIVATE WasmValue : public v8::Value {
public:
WasmValue() = delete;
static bool IsWasmValue(v8::Local<v8::Value> obj);
V8_INLINE static WasmValue* Cast(v8::Value* obj);
int value_type();
// Get the underlying values as a byte array, this is only valid if value_type
// is i32, i64, f32, f64, or s128.
v8::Local<v8::Array> bytes();
// Get the underlying externref, only valid if value_type is externref.
v8::Local<v8::Value> ref();
private:
static void CheckCast(v8::Value* obj);
};
AccessorPair* AccessorPair::Cast(v8::Value* value) {
#ifdef V8_ENABLE_CHECKS
CheckCast(value);
@ -635,13 +618,6 @@ AccessorPair* AccessorPair::Cast(v8::Value* value) {
return static_cast<AccessorPair*>(value);
}
WasmValue* WasmValue::Cast(v8::Value* value) {
#ifdef V8_ENABLE_CHECKS
CheckCast(value);
#endif
return static_cast<WasmValue*>(value);
}
MaybeLocal<Message> GetMessageFromPromise(Local<Promise> promise);
} // namespace debug

View File

@ -2923,15 +2923,6 @@ Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) {
return debug_info;
}
Handle<WasmValue> Factory::NewWasmValue(int value_type, Handle<Object> ref) {
DCHECK(value_type == 6 || ref->IsByteArray());
Handle<WasmValue> wasm_value =
Handle<WasmValue>::cast(NewStruct(WASM_VALUE_TYPE, AllocationType::kOld));
wasm_value->set_value_type(value_type);
wasm_value->set_bytes_or_ref(*ref);
return wasm_value;
}
Handle<BreakPointInfo> Factory::NewBreakPointInfo(int source_position) {
Handle<BreakPointInfo> new_break_point_info = Handle<BreakPointInfo>::cast(
NewStruct(BREAK_POINT_INFO_TYPE, AllocationType::kOld));

View File

@ -725,8 +725,6 @@ class V8_EXPORT_PRIVATE Factory : public FactoryBase<Factory> {
Handle<DebugInfo> NewDebugInfo(Handle<SharedFunctionInfo> shared);
Handle<WasmValue> NewWasmValue(int32_t value_type, Handle<Object> ref);
// Return a map for given number of properties using the map cache in the
// native context.
Handle<Map> ObjectLiteralMapFromCache(Handle<NativeContext> native_context,

View File

@ -58,15 +58,6 @@ ResultType unpackWasmValue(v8::Local<v8::Context> context,
return result;
}
String16 descriptionForWasmS128(std::array<uint8_t, 16> arr) {
String16Builder builder;
for (int i = 0; i < 16; i++) {
builder.appendUnsignedAsHex(arr.at(i));
builder.append(" ");
}
return builder.toString();
}
// Partial list of Wasm's ValueType, copied here to avoid including internal
// header. Using an unscoped enumeration here to allow implicit conversions from
// int. Keep in sync with ValueType::Kind in wasm/value-type.h.
@ -162,56 +153,6 @@ Response toProtocolValue(v8::Local<v8::Context> context,
return Response::Success();
}
if (v8::debug::WasmValue::IsWasmValue(value)) {
auto wasmValue = value.As<v8::debug::WasmValue>();
// Convert serializable Wasm values (i32, f32, f64) into protocol values.
// Not all i64 values are representable by double, so always represent it as
// a String here.
switch (wasmValue->value_type()) {
case kI32: {
*result = protocol::FundamentalValue::create(
unpackWasmValue<int32_t>(context, wasmValue->bytes()));
break;
}
case kI64: {
*result = protocol::StringValue::create(String16::fromInteger64(
unpackWasmValue<int64_t>(context, wasmValue->bytes())));
break;
}
case kF32: {
*result = protocol::FundamentalValue::create(
unpackWasmValue<float>(context, wasmValue->bytes()));
break;
}
case kF64: {
*result = protocol::FundamentalValue::create(
unpackWasmValue<double>(context, wasmValue->bytes()));
break;
}
case kS128: {
auto bytes = wasmValue->bytes();
DCHECK_EQ(16, bytes->Length());
auto s128 = unpackWasmValue<std::array<uint8_t, 16>>(context, bytes);
String16 desc = descriptionForWasmS128(s128);
*result = protocol::StringValue::create(desc);
break;
}
case kExternRef: {
std::unique_ptr<protocol::Value> externrefValue;
Response response = toProtocolValue(context, wasmValue->ref(), maxDepth,
&externrefValue);
if (!response.IsSuccess()) return response;
*result = std::move(externrefValue);
break;
}
default: {
UNIMPLEMENTED();
}
}
return Response::Success();
}
return Response::ServerError("Object couldn't be returned by value");
}
@ -489,121 +430,6 @@ class PrimitiveValueMirror final : public ValueMirror {
String16 m_subtype;
};
class WasmValueMirror final : public ValueMirror {
public:
explicit WasmValueMirror(v8::Local<v8::debug::WasmValue> value)
: m_value(value) {}
v8::Local<v8::Value> v8Value() const override { return m_value; }
Response buildRemoteObject(
v8::Local<v8::Context> context, WrapMode mode,
std::unique_ptr<RemoteObject>* result) const override {
bool serializable;
String16 descriptionValue = description(context, &serializable);
*result = RemoteObject::create()
.setType(RemoteObject::TypeEnum::Wasm)
.setSubtype(subtype())
.setDescription(descriptionValue)
.build();
if (serializable) {
std::unique_ptr<protocol::Value> protocolValue;
toProtocolValue(context, m_value, &protocolValue);
(*result)->setValue(std::move(protocolValue));
} else {
(*result)->setUnserializableValue(descriptionValue);
}
return Response::Success();
}
void buildPropertyPreview(
v8::Local<v8::Context> context, const String16& name,
std::unique_ptr<PropertyPreview>* result) const override {
bool serializable;
*result = PropertyPreview::create()
.setName(name)
.setType(RemoteObject::TypeEnum::Wasm)
.setSubtype(subtype())
.setValue(description(context, &serializable))
.build();
}
void buildEntryPreview(
v8::Local<v8::Context> context, int* nameLimit, int* indexLimit,
std::unique_ptr<ObjectPreview>* preview) const override {
bool serializable;
*preview =
ObjectPreview::create()
.setType(RemoteObject::TypeEnum::Wasm)
.setSubtype(subtype())
.setDescription(description(context, &serializable))
.setOverflow(false)
.setProperties(std::make_unique<protocol::Array<PropertyPreview>>())
.build();
}
private:
String16 subtype() const {
switch (m_value->value_type()) {
case kI32:
return RemoteObject::SubtypeEnum::I32;
case kI64:
return RemoteObject::SubtypeEnum::I64;
case kF32:
return RemoteObject::SubtypeEnum::F32;
case kF64:
return RemoteObject::SubtypeEnum::F64;
case kS128:
return RemoteObject::SubtypeEnum::V128;
case kExternRef:
return RemoteObject::SubtypeEnum::Externref;
default:
UNREACHABLE();
}
}
String16 description(v8::Local<v8::Context> context,
bool* serializable) const {
*serializable = true;
switch (m_value->value_type()) {
case kI32: {
return String16::fromInteger(
unpackWasmValue<int32_t>(context, m_value->bytes()));
}
case kI64: {
*serializable = false;
return String16::fromInteger64(
unpackWasmValue<int64_t>(context, m_value->bytes()));
}
case kF32: {
return String16::fromDouble(
unpackWasmValue<float>(context, m_value->bytes()));
}
case kF64: {
return String16::fromDouble(
unpackWasmValue<double>(context, m_value->bytes()));
}
case kS128: {
*serializable = false;
auto bytes = m_value->bytes();
DCHECK_EQ(16, bytes->Length());
auto s128 = unpackWasmValue<std::array<uint8_t, 16>>(context, bytes);
return descriptionForWasmS128(s128);
}
case kExternRef: {
return descriptionForObject(context->GetIsolate(),
m_value->ref().As<v8::Object>());
}
default: {
*serializable = false;
return String16("Unknown");
}
}
}
v8::Local<v8::debug::WasmValue> m_value;
};
class NumberMirror final : public ValueMirror {
public:
explicit NumberMirror(v8::Local<v8::Number> value) : m_value(value) {}
@ -1766,9 +1592,6 @@ std::unique_ptr<ValueMirror> ValueMirror::create(v8::Local<v8::Context> context,
if (value->IsSymbol()) {
return std::make_unique<SymbolMirror>(value.As<v8::Symbol>());
}
if (v8::debug::WasmValue::IsWasmValue(value)) {
return std::make_unique<WasmValueMirror>(value.As<v8::debug::WasmValue>());
}
auto clientSubtype = (value->IsUndefined() || value->IsObject())
? clientFor(context)->valueSubtype(value)
: nullptr;

View File

@ -58,9 +58,6 @@ BytecodeArray DebugInfo::DebugBytecodeArray() {
return BytecodeArray::cast(debug_bytecode_array(kAcquireLoad));
}
TQ_OBJECT_CONSTRUCTORS_IMPL(WasmValue)
NEVER_READ_ONLY_SPACE_IMPL(WasmValue)
} // namespace internal
} // namespace v8

View File

@ -203,14 +203,6 @@ class BreakPoint : public TorqueGeneratedBreakPoint<BreakPoint, Struct> {
TQ_OBJECT_CONSTRUCTORS(BreakPoint)
};
// Holds Wasm values. This is used by the inspector.
class WasmValue : public TorqueGeneratedWasmValue<WasmValue, Struct> {
public:
NEVER_READ_ONLY_SPACE
TQ_OBJECT_CONSTRUCTORS(WasmValue)
};
} // namespace internal
} // namespace v8

View File

@ -70,17 +70,3 @@ extern class CoverageInfo extends HeapObject {
const slot_count: int32;
slots[slot_count]: CoverageInfoSlot;
}
@generateCppClass
@generatePrint
extern class WasmValue extends Struct {
// TODO(7748): Name and comment are outdated.
// The type, should map to ValueType::Kind values in value-type.h.
value_type: SmiTagged<WasmValueType>;
// Holds the actual value. For example, if this holds a Wasm i32, this will
// be of length 4, for s128, it will have length 16. These values are
// represented by the respective C++ types, and memcpy-ed in.
// When value_type is a externref, it holds the object that externref points
// to.
bytes_or_ref: Object|ByteArray;
}

View File

@ -154,8 +154,7 @@ namespace internal {
wasm_exported_function_data) \
V(_, WASM_INDIRECT_FUNCTION_TABLE_TYPE, WasmIndirectFunctionTable, \
wasm_indirect_function_table) \
V(_, WASM_JS_FUNCTION_DATA_TYPE, WasmJSFunctionData, wasm_js_function_data) \
V(_, WASM_VALUE_TYPE, WasmValue, wasm_value)
V(_, WASM_JS_FUNCTION_DATA_TYPE, WasmJSFunctionData, wasm_js_function_data)
#define STRUCT_LIST_GENERATOR(V, _) STRUCT_LIST_GENERATOR_BASE(V, _)

View File

@ -182,7 +182,6 @@
// - SourceTextModule
// - SyntheticModule
// - SourceTextModuleInfoEntry
// - WasmValue
// - FeedbackCell
// - FeedbackVector
// - PreparseData

View File

@ -55,55 +55,43 @@ Handle<String> PrintFToOneByteString(Isolate* isolate, const char* format,
: isolate->factory()->NewStringFromOneByte(name).ToHandleChecked();
}
Handle<Object> WasmValueToValueObject(Isolate* isolate, WasmValue value) {
Handle<ByteArray> bytes;
// Convert a WasmValue to an appropriate JS representation.
Handle<Object> WasmValueToObject(Isolate* isolate, wasm::WasmValue value) {
auto* factory = isolate->factory();
switch (value.type().kind()) {
case ValueType::kI32: {
int32_t val = value.to_i32();
bytes = isolate->factory()->NewByteArray(sizeof(val));
base::Memcpy(bytes->GetDataStartAddress(), &val, sizeof(val));
break;
}
case ValueType::kI64: {
int64_t val = value.to_i64();
bytes = isolate->factory()->NewByteArray(sizeof(val));
base::Memcpy(bytes->GetDataStartAddress(), &val, sizeof(val));
break;
}
case ValueType::kF32: {
float val = value.to_f32();
bytes = isolate->factory()->NewByteArray(sizeof(val));
base::Memcpy(bytes->GetDataStartAddress(), &val, sizeof(val));
break;
}
case ValueType::kF64: {
double val = value.to_f64();
bytes = isolate->factory()->NewByteArray(sizeof(val));
base::Memcpy(bytes->GetDataStartAddress(), &val, sizeof(val));
break;
}
case ValueType::kS128: {
Simd128 s128 = value.to_s128();
bytes = isolate->factory()->NewByteArray(kSimd128Size);
base::Memcpy(bytes->GetDataStartAddress(), s128.bytes(), kSimd128Size);
break;
}
case ValueType::kOptRef: {
if (value.type().is_reference_to(HeapType::kExtern)) {
return isolate->factory()->NewWasmValue(
static_cast<int32_t>(HeapType::kExtern), value.to_externref());
} else {
// TODO(7748): Implement.
UNIMPLEMENTED();
case wasm::ValueType::kI32:
return factory->NewNumberFromInt(value.to_i32());
case wasm::ValueType::kI64:
return BigInt::FromInt64(isolate, value.to_i64());
case wasm::ValueType::kF32:
return factory->NewNumber(value.to_f32());
case wasm::ValueType::kF64:
return factory->NewNumber(value.to_f64());
case wasm::ValueType::kS128: {
wasm::Simd128 s128 = value.to_s128();
Handle<JSArrayBuffer> buffer;
if (!factory
->NewJSArrayBufferAndBackingStore(
kSimd128Size, InitializedFlag::kUninitialized)
.ToHandle(&buffer)) {
isolate->FatalProcessOutOfHeapMemory(
"failed to allocate backing store");
}
base::Memcpy(buffer->allocation_base(), s128.bytes(),
buffer->byte_length());
auto array = factory->NewJSTypedArray(kExternalUint8Array, buffer, 0,
kSimd128Size);
JSObject::SetPrototype(array, factory->null_value(), false, kDontThrow)
.Check();
return array;
}
default: {
// TODO(7748): Implement.
UNIMPLEMENTED();
}
case wasm::ValueType::kRef:
return value.to_externref();
default:
break;
}
return isolate->factory()->NewWasmValue(
static_cast<int32_t>(value.type().kind()), bytes);
return factory->undefined_value();
}
MaybeHandle<String> GetLocalNameString(Isolate* isolate,
@ -243,7 +231,7 @@ Handle<JSObject> GetModuleScopeObject(Handle<WasmInstanceObject> instance) {
}
WasmValue value =
WasmInstanceObject::GetGlobalValue(instance, globals[i]);
Handle<Object> value_obj = WasmValueToValueObject(isolate, value);
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();
@ -318,7 +306,7 @@ class DebugInfoImpl {
}
WasmValue value =
GetValue(scope.debug_side_table_entry, i, fp, debug_break_fp);
Handle<Object> value_obj = WasmValueToValueObject(isolate, value);
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,
@ -350,7 +338,7 @@ class DebugInfoImpl {
for (int i = num_locals; i < value_count; ++i) {
WasmValue value =
GetValue(scope.debug_side_table_entry, i, fp, debug_break_fp);
Handle<Object> value_obj = WasmValueToValueObject(isolate, value);
Handle<Object> value_obj = WasmValueToObject(isolate, value);
JSObject::AddDataElement(stack_scope_obj,
static_cast<uint32_t>(i - num_locals), value_obj,
NONE);
@ -1514,43 +1502,6 @@ Address GetCalleeFP(Isolate* isolate, Handle<JSObject> handler) {
return Handle<BigInt>::cast(callee_fp)->AsUint64();
}
// Convert a WasmValue to an appropriate JS representation.
static Handle<Object> WasmValueToObject(Isolate* isolate,
wasm::WasmValue value) {
auto* factory = isolate->factory();
switch (value.type().kind()) {
case wasm::ValueType::kI32:
return factory->NewNumberFromInt(value.to_i32());
case wasm::ValueType::kI64:
return BigInt::FromInt64(isolate, value.to_i64());
case wasm::ValueType::kF32:
return factory->NewNumber(value.to_f32());
case wasm::ValueType::kF64:
return factory->NewNumber(value.to_f64());
case wasm::ValueType::kS128: {
wasm::Simd128 s128 = value.to_s128();
Handle<JSArrayBuffer> buffer;
if (!isolate->factory()
->NewJSArrayBufferAndBackingStore(
kSimd128Size, InitializedFlag::kUninitialized)
.ToHandle(&buffer)) {
isolate->FatalProcessOutOfHeapMemory(
"failed to allocate backing store");
}
base::Memcpy(buffer->allocation_base(), s128.bytes(),
buffer->byte_length());
return isolate->factory()->NewJSTypedArray(kExternalUint8Array, buffer, 0,
buffer->byte_length());
}
case wasm::ValueType::kRef:
return value.to_externref();
default:
break;
}
return factory->undefined_value();
}
base::Optional<int> HasLocalImpl(Isolate* isolate, Handle<Name> property,
Handle<JSObject> handler,
bool enable_index_lookup) {

View File

@ -30,26 +30,26 @@ Testing i64.
Waiting for wasm script.
Setting 20 breakpoints.
Calling main.
Paused at offset 48; wasm-expression-stack: []; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 50; wasm-expression-stack: [0]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 52; wasm-expression-stack: [0, 1]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 54; wasm-expression-stack: [0, 1, 2]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 56; wasm-expression-stack: [0, 1, 2, 3]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 58; wasm-expression-stack: [0, 1, 2, 3, 4]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 60; wasm-expression-stack: [0, 1, 2, 3, 4, 5]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 62; wasm-expression-stack: [0, 1, 2, 3, 4, 5, 6]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 64; wasm-expression-stack: [0, 1, 2, 3, 4, 5, 6, 7]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 66; wasm-expression-stack: [0, 1, 2, 3, 4, 5, 6, 7, 8]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 68; wasm-expression-stack: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 69; wasm-expression-stack: [0, 1, 2, 3, 4, 5, 6, 7, 17]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 70; wasm-expression-stack: [0, 1, 2, 3, 4, 5, 6, 24]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 71; wasm-expression-stack: [0, 1, 2, 3, 4, 5, 30]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 72; wasm-expression-stack: [0, 1, 2, 3, 4, 35]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 73; wasm-expression-stack: [0, 1, 2, 3, 39]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 74; wasm-expression-stack: [0, 1, 2, 42]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 75; wasm-expression-stack: [0, 1, 44]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 76; wasm-expression-stack: [0, 45]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 77; wasm-expression-stack: [45]; local: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Paused at offset 48; wasm-expression-stack: []; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 50; wasm-expression-stack: [0n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 52; wasm-expression-stack: [0n, 1n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 54; wasm-expression-stack: [0n, 1n, 2n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 56; wasm-expression-stack: [0n, 1n, 2n, 3n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 58; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 60; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 62; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n, 6n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 64; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 66; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 68; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 69; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 17n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 70; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 24n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 71; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 5n, 30n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 72; wasm-expression-stack: [0n, 1n, 2n, 3n, 4n, 35n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 73; wasm-expression-stack: [0n, 1n, 2n, 3n, 39n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 74; wasm-expression-stack: [0n, 1n, 2n, 42n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 75; wasm-expression-stack: [0n, 1n, 44n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 76; wasm-expression-stack: [0n, 45n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
Paused at offset 77; wasm-expression-stack: [45n]; local: [0n, 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n]
main returned.
Testing f32.
Waiting for wasm script.

View File

@ -16,39 +16,39 @@ Scope:
at C (interpreted) (0:169):
- scope (wasm-expression-stack):
- scope (local):
i32_arg: 42 (i32)
i32_local: 0 (i32)
var2: 0 (f32)
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 (i32)
globals: "exported_global": 0 (number)
at B (liftoff) (0:158):
- scope (wasm-expression-stack):
0: 42 (i32)
1: 3 (i32)
0: 42 (number)
1: 3 (number)
- scope (local):
0: 0 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 0 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
globals: "exported_global": 0 (number)
at (anonymous) (0:17):
- scope (global):
-- skipped globals
@ -58,41 +58,41 @@ Script wasm://wasm/e33badc2 byte offset 171: Wasm opcode 0x24 (kExprGlobalSet)
Scope:
at C (interpreted) (0:171):
- scope (wasm-expression-stack):
0: 42 (i32)
0: 42 (number)
- scope (local):
i32_arg: 42 (i32)
i32_local: 0 (i32)
var2: 0 (f32)
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 (i32)
globals: "exported_global": 0 (number)
at B (liftoff) (0:158):
- scope (wasm-expression-stack):
0: 42 (i32)
1: 3 (i32)
0: 42 (number)
1: 3 (number)
- scope (local):
0: 0 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 0 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
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 (i32)
i32_local: 0 (i32)
var2: 0 (f32)
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 (i32)
globals: "exported_global": 42 (number)
at B (liftoff) (0:158):
- scope (wasm-expression-stack):
0: 42 (i32)
1: 3 (i32)
0: 42 (number)
1: 3 (number)
- scope (local):
0: 0 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 42 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
globals: "exported_global": 42 (number)
at (anonymous) (0:17):
- scope (global):
-- skipped globals
@ -145,41 +145,41 @@ Script wasm://wasm/e33badc2 byte offset 175: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at C (interpreted) (0:175):
- scope (wasm-expression-stack):
0: 47 (i32)
0: 47 (number)
- scope (local):
i32_arg: 42 (i32)
i32_local: 0 (i32)
var2: 0 (f32)
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 (i32)
globals: "exported_global": 42 (number)
at B (liftoff) (0:158):
- scope (wasm-expression-stack):
0: 42 (i32)
1: 3 (i32)
0: 42 (number)
1: 3 (number)
- scope (local):
0: 0 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 42 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
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 (i32)
i32_local: 47 (i32)
var2: 0 (f32)
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 (i32)
globals: "exported_global": 42 (number)
at B (liftoff) (0:158):
- scope (wasm-expression-stack):
0: 42 (i32)
1: 3 (i32)
0: 42 (number)
1: 3 (number)
- scope (local):
0: 0 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 42 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
globals: "exported_global": 42 (number)
at (anonymous) (0:17):
- scope (global):
-- skipped globals
@ -232,29 +232,29 @@ Script wasm://wasm/e33badc2 byte offset 160: Wasm opcode 0x1a (kExprDrop)
Scope:
at B (liftoff) (0:160):
- scope (wasm-expression-stack):
0: 42 (i32)
1: 3 (i32)
0: 42 (number)
1: 3 (number)
- scope (local):
0: 0 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 42 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
globals: "exported_global": 42 (number)
at (anonymous) (0:17):
- scope (global):
-- skipped globals
@ -264,28 +264,28 @@ Script wasm://wasm/e33badc2 byte offset 161: Wasm opcode 0x1a (kExprDrop)
Scope:
at B (liftoff) (0:161):
- scope (wasm-expression-stack):
0: 42 (i32)
0: 42 (number)
- scope (local):
0: 0 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 42 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
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 (f32)
i32_arg: 42 (i32)
i32_local: 0 (i32)
f32_local: 7.199999809265137 (f32)
var5: 0 (f32)
v128_local: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 (v128)
0: 0 (number)
i32_arg: 42 (number)
i32_local: 0 (number)
f32_local: 7.199999809265137 (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 (i32)
globals: "exported_global": 42 (number)
at A (liftoff) (0:128):
- scope (wasm-expression-stack):
- scope (local):
var0: 42 (i32)
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 (i32)
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 (i32)
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 (i32)
globals: "exported_global": 42 (number)
at (anonymous) (0:17):
- scope (global):
-- skipped globals

View File

@ -17,7 +17,7 @@ at wasm_A (0:38):
at wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
var0: 3 (i32)
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 (i32)
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 (i32)
var0: 3 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -67,9 +67,9 @@ Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at wasm_B (0:47):
- scope (wasm-expression-stack):
0: 3 (i32)
0: 3 (number)
- scope (local):
var0: 3 (i32)
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 (i32)
var0: 3 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -92,9 +92,9 @@ Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
at wasm_B (0:51):
- scope (wasm-expression-stack):
0: 3 (i32)
0: 3 (number)
- scope (local):
var0: 3 (i32)
var0: 3 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -105,10 +105,10 @@ Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
at wasm_B (0:53):
- scope (wasm-expression-stack):
0: 3 (i32)
1: 1 (i32)
0: 3 (number)
1: 1 (number)
- scope (local):
var0: 3 (i32)
var0: 3 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -119,9 +119,9 @@ Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at wasm_B (0:54):
- scope (wasm-expression-stack):
0: 2 (i32)
0: 2 (number)
- scope (local):
var0: 3 (i32)
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 (i32)
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 (i32)
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 (i32)
var0: 2 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -180,9 +180,9 @@ Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at wasm_B (0:47):
- scope (wasm-expression-stack):
0: 2 (i32)
0: 2 (number)
- scope (local):
var0: 2 (i32)
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 (i32)
var0: 2 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -205,9 +205,9 @@ Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
at wasm_B (0:51):
- scope (wasm-expression-stack):
0: 2 (i32)
0: 2 (number)
- scope (local):
var0: 2 (i32)
var0: 2 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -218,10 +218,10 @@ Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
at wasm_B (0:53):
- scope (wasm-expression-stack):
0: 2 (i32)
1: 1 (i32)
0: 2 (number)
1: 1 (number)
- scope (local):
var0: 2 (i32)
var0: 2 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -232,9 +232,9 @@ Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at wasm_B (0:54):
- scope (wasm-expression-stack):
0: 1 (i32)
0: 1 (number)
- scope (local):
var0: 2 (i32)
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 (i32)
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 (i32)
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 (i32)
var0: 1 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -293,9 +293,9 @@ Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at wasm_B (0:47):
- scope (wasm-expression-stack):
0: 1 (i32)
0: 1 (number)
- scope (local):
var0: 1 (i32)
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 (i32)
var0: 1 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -318,9 +318,9 @@ Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
at wasm_B (0:51):
- scope (wasm-expression-stack):
0: 1 (i32)
0: 1 (number)
- scope (local):
var0: 1 (i32)
var0: 1 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -331,10 +331,10 @@ Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
at wasm_B (0:53):
- scope (wasm-expression-stack):
0: 1 (i32)
1: 1 (i32)
0: 1 (number)
1: 1 (number)
- scope (local):
var0: 1 (i32)
var0: 1 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -345,9 +345,9 @@ Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at wasm_B (0:54):
- scope (wasm-expression-stack):
0: 0 (i32)
0: 0 (number)
- scope (local):
var0: 1 (i32)
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 (i32)
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 (i32)
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 (i32)
var0: 0 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module
@ -406,9 +406,9 @@ Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
at wasm_B (0:47):
- scope (wasm-expression-stack):
0: 0 (i32)
0: 0 (number)
- scope (local):
var0: 0 (i32)
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 (i32)
var0: 0 (number)
- scope (module):
instance: exports: "main" (Function)
module: Module

View File

@ -35,10 +35,8 @@ WasmInspectorTest.dumpScopeProperties = async function(message) {
}
}
WasmInspectorTest.getWasmValue = function(wasmValue) {
return typeof (wasmValue.value) === 'undefined' ?
wasmValue.unserializableValue :
wasmValue.value;
WasmInspectorTest.getWasmValue = value => {
return value.unserializableValue ?? value.value;
}
function printIfFailure(message) {
@ -56,13 +54,12 @@ async function getScopeValues(name, value) {
let msg = await Protocol.Runtime.getProperties({objectId: value.objectId});
printIfFailure(msg);
const printProperty = function(elem) {
const wasmValue = WasmInspectorTest.getWasmValue(elem.value);
return `"${elem.name}": ${wasmValue} (${elem.value.subtype})`;
const printProperty = function({name, value}) {
return `"${name}": ${WasmInspectorTest.getWasmValue(value)} (${value.subtype ?? value.type})`;
}
return msg.result.result.map(printProperty).join(', ');
}
return WasmInspectorTest.getWasmValue(value) + ' (' + value.subtype + ')';
return `${WasmInspectorTest.getWasmValue(value)} (${value.subtype ?? value.type})`;
}
function recursiveGetPropertiesWrapper(value, depth) {

View File

@ -77,80 +77,79 @@ INSTANCE_TYPES = {
113: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
114: "WASM_INDIRECT_FUNCTION_TABLE_TYPE",
115: "WASM_JS_FUNCTION_DATA_TYPE",
116: "WASM_VALUE_TYPE",
117: "FIXED_ARRAY_TYPE",
118: "HASH_TABLE_TYPE",
119: "EPHEMERON_HASH_TABLE_TYPE",
120: "GLOBAL_DICTIONARY_TYPE",
121: "NAME_DICTIONARY_TYPE",
122: "NUMBER_DICTIONARY_TYPE",
123: "ORDERED_HASH_MAP_TYPE",
124: "ORDERED_HASH_SET_TYPE",
125: "ORDERED_NAME_DICTIONARY_TYPE",
126: "SIMPLE_NUMBER_DICTIONARY_TYPE",
127: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
128: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
129: "SCOPE_INFO_TYPE",
130: "SCRIPT_CONTEXT_TABLE_TYPE",
131: "BYTE_ARRAY_TYPE",
132: "BYTECODE_ARRAY_TYPE",
133: "FIXED_DOUBLE_ARRAY_TYPE",
134: "INTERNAL_CLASS_WITH_SMI_ELEMENTS_TYPE",
135: "SLOPPY_ARGUMENTS_ELEMENTS_TYPE",
136: "AWAIT_CONTEXT_TYPE",
137: "BLOCK_CONTEXT_TYPE",
138: "CATCH_CONTEXT_TYPE",
139: "DEBUG_EVALUATE_CONTEXT_TYPE",
140: "EVAL_CONTEXT_TYPE",
141: "FUNCTION_CONTEXT_TYPE",
142: "MODULE_CONTEXT_TYPE",
143: "NATIVE_CONTEXT_TYPE",
144: "SCRIPT_CONTEXT_TYPE",
145: "WITH_CONTEXT_TYPE",
146: "EXPORTED_SUB_CLASS_BASE_TYPE",
147: "EXPORTED_SUB_CLASS_TYPE",
148: "EXPORTED_SUB_CLASS2_TYPE",
149: "SMALL_ORDERED_HASH_MAP_TYPE",
150: "SMALL_ORDERED_HASH_SET_TYPE",
151: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
152: "DESCRIPTOR_ARRAY_TYPE",
153: "STRONG_DESCRIPTOR_ARRAY_TYPE",
154: "SOURCE_TEXT_MODULE_TYPE",
155: "SYNTHETIC_MODULE_TYPE",
156: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
157: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
158: "WEAK_FIXED_ARRAY_TYPE",
159: "TRANSITION_ARRAY_TYPE",
160: "CELL_TYPE",
161: "CODE_TYPE",
162: "CODE_DATA_CONTAINER_TYPE",
163: "COVERAGE_INFO_TYPE",
164: "EMBEDDER_DATA_ARRAY_TYPE",
165: "FEEDBACK_METADATA_TYPE",
166: "FEEDBACK_VECTOR_TYPE",
167: "FILLER_TYPE",
168: "FREE_SPACE_TYPE",
169: "INTERNAL_CLASS_TYPE",
170: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE",
171: "MAP_TYPE",
172: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE",
173: "PREPARSE_DATA_TYPE",
174: "PROPERTY_ARRAY_TYPE",
175: "PROPERTY_CELL_TYPE",
176: "SHARED_FUNCTION_INFO_TYPE",
177: "SMI_BOX_TYPE",
178: "SMI_PAIR_TYPE",
179: "SORT_STATE_TYPE",
180: "WASM_ARRAY_TYPE",
181: "WASM_CAPI_FUNCTION_DATA_TYPE",
182: "WASM_STRUCT_TYPE",
183: "WEAK_ARRAY_LIST_TYPE",
184: "WEAK_CELL_TYPE",
185: "JS_PROXY_TYPE",
116: "FIXED_ARRAY_TYPE",
117: "HASH_TABLE_TYPE",
118: "EPHEMERON_HASH_TABLE_TYPE",
119: "GLOBAL_DICTIONARY_TYPE",
120: "NAME_DICTIONARY_TYPE",
121: "NUMBER_DICTIONARY_TYPE",
122: "ORDERED_HASH_MAP_TYPE",
123: "ORDERED_HASH_SET_TYPE",
124: "ORDERED_NAME_DICTIONARY_TYPE",
125: "SIMPLE_NUMBER_DICTIONARY_TYPE",
126: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
127: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
128: "SCOPE_INFO_TYPE",
129: "SCRIPT_CONTEXT_TABLE_TYPE",
130: "BYTE_ARRAY_TYPE",
131: "BYTECODE_ARRAY_TYPE",
132: "FIXED_DOUBLE_ARRAY_TYPE",
133: "INTERNAL_CLASS_WITH_SMI_ELEMENTS_TYPE",
134: "SLOPPY_ARGUMENTS_ELEMENTS_TYPE",
135: "AWAIT_CONTEXT_TYPE",
136: "BLOCK_CONTEXT_TYPE",
137: "CATCH_CONTEXT_TYPE",
138: "DEBUG_EVALUATE_CONTEXT_TYPE",
139: "EVAL_CONTEXT_TYPE",
140: "FUNCTION_CONTEXT_TYPE",
141: "MODULE_CONTEXT_TYPE",
142: "NATIVE_CONTEXT_TYPE",
143: "SCRIPT_CONTEXT_TYPE",
144: "WITH_CONTEXT_TYPE",
145: "EXPORTED_SUB_CLASS_BASE_TYPE",
146: "EXPORTED_SUB_CLASS_TYPE",
147: "EXPORTED_SUB_CLASS2_TYPE",
148: "SMALL_ORDERED_HASH_MAP_TYPE",
149: "SMALL_ORDERED_HASH_SET_TYPE",
150: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
151: "DESCRIPTOR_ARRAY_TYPE",
152: "STRONG_DESCRIPTOR_ARRAY_TYPE",
153: "SOURCE_TEXT_MODULE_TYPE",
154: "SYNTHETIC_MODULE_TYPE",
155: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
156: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
157: "WEAK_FIXED_ARRAY_TYPE",
158: "TRANSITION_ARRAY_TYPE",
159: "CELL_TYPE",
160: "CODE_TYPE",
161: "CODE_DATA_CONTAINER_TYPE",
162: "COVERAGE_INFO_TYPE",
163: "EMBEDDER_DATA_ARRAY_TYPE",
164: "FEEDBACK_METADATA_TYPE",
165: "FEEDBACK_VECTOR_TYPE",
166: "FILLER_TYPE",
167: "FREE_SPACE_TYPE",
168: "INTERNAL_CLASS_TYPE",
169: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE",
170: "MAP_TYPE",
171: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE",
172: "PREPARSE_DATA_TYPE",
173: "PROPERTY_ARRAY_TYPE",
174: "PROPERTY_CELL_TYPE",
175: "SHARED_FUNCTION_INFO_TYPE",
176: "SMI_BOX_TYPE",
177: "SMI_PAIR_TYPE",
178: "SORT_STATE_TYPE",
179: "WASM_ARRAY_TYPE",
180: "WASM_CAPI_FUNCTION_DATA_TYPE",
181: "WASM_STRUCT_TYPE",
182: "WEAK_ARRAY_LIST_TYPE",
183: "WEAK_CELL_TYPE",
184: "JS_PROXY_TYPE",
1057: "JS_OBJECT_TYPE",
186: "JS_GLOBAL_OBJECT_TYPE",
187: "JS_GLOBAL_PROXY_TYPE",
188: "JS_MODULE_NAMESPACE_TYPE",
185: "JS_GLOBAL_OBJECT_TYPE",
186: "JS_GLOBAL_PROXY_TYPE",
187: "JS_MODULE_NAMESPACE_TYPE",
1040: "JS_SPECIAL_API_OBJECT_TYPE",
1041: "JS_PRIMITIVE_WRAPPER_TYPE",
1042: "JS_ARRAY_ITERATOR_PROTOTYPE_TYPE",
@ -217,76 +216,76 @@ INSTANCE_TYPES = {
# List of known V8 maps.
KNOWN_MAPS = {
("read_only_space", 0x02115): (171, "MetaMap"),
("read_only_space", 0x02115): (170, "MetaMap"),
("read_only_space", 0x0213d): (67, "NullMap"),
("read_only_space", 0x02165): (153, "StrongDescriptorArrayMap"),
("read_only_space", 0x0218d): (158, "WeakFixedArrayMap"),
("read_only_space", 0x02165): (152, "StrongDescriptorArrayMap"),
("read_only_space", 0x0218d): (157, "WeakFixedArrayMap"),
("read_only_space", 0x021cd): (96, "EnumCacheMap"),
("read_only_space", 0x02201): (117, "FixedArrayMap"),
("read_only_space", 0x02201): (116, "FixedArrayMap"),
("read_only_space", 0x0224d): (8, "OneByteInternalizedStringMap"),
("read_only_space", 0x02299): (168, "FreeSpaceMap"),
("read_only_space", 0x022c1): (167, "OnePointerFillerMap"),
("read_only_space", 0x022e9): (167, "TwoPointerFillerMap"),
("read_only_space", 0x02299): (167, "FreeSpaceMap"),
("read_only_space", 0x022c1): (166, "OnePointerFillerMap"),
("read_only_space", 0x022e9): (166, "TwoPointerFillerMap"),
("read_only_space", 0x02311): (67, "UninitializedMap"),
("read_only_space", 0x02389): (67, "UndefinedMap"),
("read_only_space", 0x023cd): (66, "HeapNumberMap"),
("read_only_space", 0x02401): (67, "TheHoleMap"),
("read_only_space", 0x02461): (67, "BooleanMap"),
("read_only_space", 0x02505): (131, "ByteArrayMap"),
("read_only_space", 0x0252d): (117, "FixedCOWArrayMap"),
("read_only_space", 0x02555): (118, "HashTableMap"),
("read_only_space", 0x02505): (130, "ByteArrayMap"),
("read_only_space", 0x0252d): (116, "FixedCOWArrayMap"),
("read_only_space", 0x02555): (117, "HashTableMap"),
("read_only_space", 0x0257d): (64, "SymbolMap"),
("read_only_space", 0x025a5): (40, "OneByteStringMap"),
("read_only_space", 0x025cd): (129, "ScopeInfoMap"),
("read_only_space", 0x025f5): (176, "SharedFunctionInfoMap"),
("read_only_space", 0x0261d): (161, "CodeMap"),
("read_only_space", 0x02645): (160, "CellMap"),
("read_only_space", 0x0266d): (175, "GlobalPropertyCellMap"),
("read_only_space", 0x025cd): (128, "ScopeInfoMap"),
("read_only_space", 0x025f5): (175, "SharedFunctionInfoMap"),
("read_only_space", 0x0261d): (160, "CodeMap"),
("read_only_space", 0x02645): (159, "CellMap"),
("read_only_space", 0x0266d): (174, "GlobalPropertyCellMap"),
("read_only_space", 0x02695): (70, "ForeignMap"),
("read_only_space", 0x026bd): (159, "TransitionArrayMap"),
("read_only_space", 0x026bd): (158, "TransitionArrayMap"),
("read_only_space", 0x026e5): (45, "ThinOneByteStringMap"),
("read_only_space", 0x0270d): (166, "FeedbackVectorMap"),
("read_only_space", 0x0270d): (165, "FeedbackVectorMap"),
("read_only_space", 0x02749): (67, "ArgumentsMarkerMap"),
("read_only_space", 0x027a9): (67, "ExceptionMap"),
("read_only_space", 0x02805): (67, "TerminationExceptionMap"),
("read_only_space", 0x0286d): (67, "OptimizedOutMap"),
("read_only_space", 0x028cd): (67, "StaleRegisterMap"),
("read_only_space", 0x0292d): (130, "ScriptContextTableMap"),
("read_only_space", 0x02955): (127, "ClosureFeedbackCellArrayMap"),
("read_only_space", 0x0297d): (165, "FeedbackMetadataArrayMap"),
("read_only_space", 0x029a5): (117, "ArrayListMap"),
("read_only_space", 0x0292d): (129, "ScriptContextTableMap"),
("read_only_space", 0x02955): (126, "ClosureFeedbackCellArrayMap"),
("read_only_space", 0x0297d): (164, "FeedbackMetadataArrayMap"),
("read_only_space", 0x029a5): (116, "ArrayListMap"),
("read_only_space", 0x029cd): (65, "BigIntMap"),
("read_only_space", 0x029f5): (128, "ObjectBoilerplateDescriptionMap"),
("read_only_space", 0x02a1d): (132, "BytecodeArrayMap"),
("read_only_space", 0x02a45): (162, "CodeDataContainerMap"),
("read_only_space", 0x02a6d): (163, "CoverageInfoMap"),
("read_only_space", 0x02a95): (133, "FixedDoubleArrayMap"),
("read_only_space", 0x02abd): (120, "GlobalDictionaryMap"),
("read_only_space", 0x029f5): (127, "ObjectBoilerplateDescriptionMap"),
("read_only_space", 0x02a1d): (131, "BytecodeArrayMap"),
("read_only_space", 0x02a45): (161, "CodeDataContainerMap"),
("read_only_space", 0x02a6d): (162, "CoverageInfoMap"),
("read_only_space", 0x02a95): (132, "FixedDoubleArrayMap"),
("read_only_space", 0x02abd): (119, "GlobalDictionaryMap"),
("read_only_space", 0x02ae5): (97, "ManyClosuresCellMap"),
("read_only_space", 0x02b0d): (117, "ModuleInfoMap"),
("read_only_space", 0x02b35): (121, "NameDictionaryMap"),
("read_only_space", 0x02b0d): (116, "ModuleInfoMap"),
("read_only_space", 0x02b35): (120, "NameDictionaryMap"),
("read_only_space", 0x02b5d): (97, "NoClosuresCellMap"),
("read_only_space", 0x02b85): (122, "NumberDictionaryMap"),
("read_only_space", 0x02b85): (121, "NumberDictionaryMap"),
("read_only_space", 0x02bad): (97, "OneClosureCellMap"),
("read_only_space", 0x02bd5): (123, "OrderedHashMapMap"),
("read_only_space", 0x02bfd): (124, "OrderedHashSetMap"),
("read_only_space", 0x02c25): (125, "OrderedNameDictionaryMap"),
("read_only_space", 0x02c4d): (173, "PreparseDataMap"),
("read_only_space", 0x02c75): (174, "PropertyArrayMap"),
("read_only_space", 0x02bd5): (122, "OrderedHashMapMap"),
("read_only_space", 0x02bfd): (123, "OrderedHashSetMap"),
("read_only_space", 0x02c25): (124, "OrderedNameDictionaryMap"),
("read_only_space", 0x02c4d): (172, "PreparseDataMap"),
("read_only_space", 0x02c75): (173, "PropertyArrayMap"),
("read_only_space", 0x02c9d): (93, "SideEffectCallHandlerInfoMap"),
("read_only_space", 0x02cc5): (93, "SideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02ced): (93, "NextCallSideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02d15): (126, "SimpleNumberDictionaryMap"),
("read_only_space", 0x02d3d): (149, "SmallOrderedHashMapMap"),
("read_only_space", 0x02d65): (150, "SmallOrderedHashSetMap"),
("read_only_space", 0x02d8d): (151, "SmallOrderedNameDictionaryMap"),
("read_only_space", 0x02db5): (154, "SourceTextModuleMap"),
("read_only_space", 0x02ddd): (155, "SyntheticModuleMap"),
("read_only_space", 0x02d15): (125, "SimpleNumberDictionaryMap"),
("read_only_space", 0x02d3d): (148, "SmallOrderedHashMapMap"),
("read_only_space", 0x02d65): (149, "SmallOrderedHashSetMap"),
("read_only_space", 0x02d8d): (150, "SmallOrderedNameDictionaryMap"),
("read_only_space", 0x02db5): (153, "SourceTextModuleMap"),
("read_only_space", 0x02ddd): (154, "SyntheticModuleMap"),
("read_only_space", 0x02e05): (71, "WasmTypeInfoMap"),
("read_only_space", 0x02e2d): (183, "WeakArrayListMap"),
("read_only_space", 0x02e55): (119, "EphemeronHashTableMap"),
("read_only_space", 0x02e7d): (164, "EmbedderDataArrayMap"),
("read_only_space", 0x02ea5): (184, "WeakCellMap"),
("read_only_space", 0x02e2d): (182, "WeakArrayListMap"),
("read_only_space", 0x02e55): (118, "EphemeronHashTableMap"),
("read_only_space", 0x02e7d): (163, "EmbedderDataArrayMap"),
("read_only_space", 0x02ea5): (183, "WeakCellMap"),
("read_only_space", 0x02ecd): (32, "StringMap"),
("read_only_space", 0x02ef5): (41, "ConsOneByteStringMap"),
("read_only_space", 0x02f1d): (33, "ConsStringMap"),
@ -342,40 +341,39 @@ KNOWN_MAPS = {
("read_only_space", 0x058cd): (113, "WasmExportedFunctionDataMap"),
("read_only_space", 0x058f5): (114, "WasmIndirectFunctionTableMap"),
("read_only_space", 0x0591d): (115, "WasmJSFunctionDataMap"),
("read_only_space", 0x05945): (116, "WasmValueMap"),
("read_only_space", 0x0596d): (135, "SloppyArgumentsElementsMap"),
("read_only_space", 0x05995): (152, "DescriptorArrayMap"),
("read_only_space", 0x059bd): (157, "UncompiledDataWithoutPreparseDataMap"),
("read_only_space", 0x059e5): (156, "UncompiledDataWithPreparseDataMap"),
("read_only_space", 0x05a0d): (172, "OnHeapBasicBlockProfilerDataMap"),
("read_only_space", 0x05a35): (181, "WasmCapiFunctionDataMap"),
("read_only_space", 0x05a5d): (169, "InternalClassMap"),
("read_only_space", 0x05a85): (178, "SmiPairMap"),
("read_only_space", 0x05aad): (177, "SmiBoxMap"),
("read_only_space", 0x05ad5): (146, "ExportedSubClassBaseMap"),
("read_only_space", 0x05afd): (147, "ExportedSubClassMap"),
("read_only_space", 0x05b25): (68, "AbstractInternalClassSubclass1Map"),
("read_only_space", 0x05b4d): (69, "AbstractInternalClassSubclass2Map"),
("read_only_space", 0x05b75): (134, "InternalClassWithSmiElementsMap"),
("read_only_space", 0x05b9d): (170, "InternalClassWithStructElementsMap"),
("read_only_space", 0x05bc5): (148, "ExportedSubClass2Map"),
("read_only_space", 0x05bed): (179, "SortStateMap"),
("read_only_space", 0x05c15): (86, "AllocationSiteWithWeakNextMap"),
("read_only_space", 0x05c3d): (86, "AllocationSiteWithoutWeakNextMap"),
("read_only_space", 0x05c65): (77, "LoadHandler1Map"),
("read_only_space", 0x05c8d): (77, "LoadHandler2Map"),
("read_only_space", 0x05cb5): (77, "LoadHandler3Map"),
("read_only_space", 0x05cdd): (78, "StoreHandler0Map"),
("read_only_space", 0x05d05): (78, "StoreHandler1Map"),
("read_only_space", 0x05d2d): (78, "StoreHandler2Map"),
("read_only_space", 0x05d55): (78, "StoreHandler3Map"),
("read_only_space", 0x05945): (134, "SloppyArgumentsElementsMap"),
("read_only_space", 0x0596d): (151, "DescriptorArrayMap"),
("read_only_space", 0x05995): (156, "UncompiledDataWithoutPreparseDataMap"),
("read_only_space", 0x059bd): (155, "UncompiledDataWithPreparseDataMap"),
("read_only_space", 0x059e5): (171, "OnHeapBasicBlockProfilerDataMap"),
("read_only_space", 0x05a0d): (180, "WasmCapiFunctionDataMap"),
("read_only_space", 0x05a35): (168, "InternalClassMap"),
("read_only_space", 0x05a5d): (177, "SmiPairMap"),
("read_only_space", 0x05a85): (176, "SmiBoxMap"),
("read_only_space", 0x05aad): (145, "ExportedSubClassBaseMap"),
("read_only_space", 0x05ad5): (146, "ExportedSubClassMap"),
("read_only_space", 0x05afd): (68, "AbstractInternalClassSubclass1Map"),
("read_only_space", 0x05b25): (69, "AbstractInternalClassSubclass2Map"),
("read_only_space", 0x05b4d): (133, "InternalClassWithSmiElementsMap"),
("read_only_space", 0x05b75): (169, "InternalClassWithStructElementsMap"),
("read_only_space", 0x05b9d): (147, "ExportedSubClass2Map"),
("read_only_space", 0x05bc5): (178, "SortStateMap"),
("read_only_space", 0x05bed): (86, "AllocationSiteWithWeakNextMap"),
("read_only_space", 0x05c15): (86, "AllocationSiteWithoutWeakNextMap"),
("read_only_space", 0x05c3d): (77, "LoadHandler1Map"),
("read_only_space", 0x05c65): (77, "LoadHandler2Map"),
("read_only_space", 0x05c8d): (77, "LoadHandler3Map"),
("read_only_space", 0x05cb5): (78, "StoreHandler0Map"),
("read_only_space", 0x05cdd): (78, "StoreHandler1Map"),
("read_only_space", 0x05d05): (78, "StoreHandler2Map"),
("read_only_space", 0x05d2d): (78, "StoreHandler3Map"),
("map_space", 0x02115): (1057, "ExternalMap"),
("map_space", 0x0213d): (1084, "JSMessageObjectMap"),
("map_space", 0x02165): (182, "WasmRttEqrefMap"),
("map_space", 0x0218d): (182, "WasmRttAnyrefMap"),
("map_space", 0x021b5): (182, "WasmRttExternrefMap"),
("map_space", 0x021dd): (182, "WasmRttFuncrefMap"),
("map_space", 0x02205): (182, "WasmRttI31refMap"),
("map_space", 0x02165): (181, "WasmRttEqrefMap"),
("map_space", 0x0218d): (181, "WasmRttAnyrefMap"),
("map_space", 0x021b5): (181, "WasmRttExternrefMap"),
("map_space", 0x021dd): (181, "WasmRttFuncrefMap"),
("map_space", 0x02205): (181, "WasmRttI31refMap"),
}
# List of known V8 objects.