f30c268173
This reverts commit b77deeca4b
.
Reason for revert: MSVC compile fails: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Win64%20-%20msvc/16535/overview
Original change's description:
> [wasm-gc] Remove abstract rtts
>
> In the latest wasm-gc spec, rtts of abstract types are no longer
> allowed. Consequently, canonical rtts of concrete types always have
> a depth of 0.
>
> Changes:
> - Change the immediate argument of rtts to a type index over a heap
> type. Abstract it with TypeIndexImmediate in function body decoding.
> This affects:
> value_type.h, read_value_type(), decoding of relevant opcodes,
> wasm subtyping, WasmInitExpr, consume_init_expr(), and
> wasm-module-builder.cc.
> - In function-body-decoder-impl.h, update rtt.canon to always produce
> an rtt of depth 0.
> - Pass a unit32_t type index over a HeapType to all rtt-related
> utilities.
> - Remove infrastructure for abstract-type rtts from the wasm compilers,
> setup-heap-internal.cc, roots.h, and module-instantiate.cc.
> - Remove ObjectReferenceKnowledge::rtt_is_i31. Remove related branches
> from ref.test, ref.cast and br_on_cast implementations in the wasm
> compilers.
> - Remove unused 'parent' field from WasmTypeInfo.
> - Make the parent argument optional in NewWasmTypeInfo, CreateStructMap,
> and CreateArrayMap.
> - Use more convenient arguments in IsHeapSubtypeOf.
> - Update tests.
>
> Bug: v8:7748
> Change-Id: Ib45efe0741e6558c9b291fc8b4a75ae303146bdc
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2642248
> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#72321}
TBR=ulan@chromium.org,jkummerow@chromium.org,manoskouk@chromium.org
Change-Id: I2f0d97f1a34f7c81c5a97d7c37925cb84c66eea3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7748
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2650206
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72322}
125 lines
3.4 KiB
Plaintext
125 lines
3.4 KiB
Plaintext
// Copyright 2019 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
@useParentTypeChecker
|
|
type PodArrayOfWasmValueType extends ByteArray
|
|
constexpr 'PodArray<wasm::ValueType>';
|
|
@useParentTypeChecker
|
|
type ManagedWasmNativeModule extends Foreign
|
|
constexpr 'Managed<wasm::NativeModule>';
|
|
type WasmValueType extends uint8 constexpr 'wasm::ValueType::Kind';
|
|
|
|
extern class WasmInstanceObject extends JSObject;
|
|
|
|
extern class WasmExportedFunctionData extends Struct {
|
|
wrapper_code: Code;
|
|
instance: WasmInstanceObject;
|
|
jump_table_offset: Smi;
|
|
function_index: Smi;
|
|
signature: Foreign;
|
|
wrapper_budget: Smi;
|
|
// The remaining fields are for fast calling from C++. The contract is
|
|
// that they are lazily populated, and either all will be present or none.
|
|
c_wrapper_code: Object;
|
|
wasm_call_target: Smi|Foreign;
|
|
packed_args_size: Smi;
|
|
}
|
|
|
|
extern class WasmJSFunctionData extends Struct {
|
|
callable: JSReceiver;
|
|
wrapper_code: Code;
|
|
wasm_to_js_wrapper_code: Code;
|
|
serialized_return_count: Smi;
|
|
serialized_parameter_count: Smi;
|
|
serialized_signature: PodArrayOfWasmValueType;
|
|
}
|
|
|
|
@export
|
|
class WasmCapiFunctionData extends HeapObject {
|
|
call_target: RawPtr;
|
|
embedder_data: Foreign; // Managed<wasm::FuncData>
|
|
wrapper_code: Code;
|
|
serialized_signature: PodArrayOfWasmValueType;
|
|
}
|
|
|
|
extern class WasmIndirectFunctionTable extends Struct {
|
|
size: uint32;
|
|
@if(TAGGED_SIZE_8_BYTES) optional_padding: uint32;
|
|
@ifnot(TAGGED_SIZE_8_BYTES) optional_padding: void;
|
|
sig_ids: RawPtr;
|
|
targets: RawPtr;
|
|
managed_native_allocations: Foreign|Undefined;
|
|
refs: FixedArray;
|
|
}
|
|
|
|
@generateCppClass
|
|
extern class WasmExceptionTag extends Struct {
|
|
// Note that this index is only useful for debugging purposes and it is not
|
|
// unique across modules. The GC however does not allow objects without at
|
|
// least one field, hence this also serves as a padding field for now.
|
|
index: Smi;
|
|
}
|
|
|
|
extern class WasmModuleObject extends JSObject {
|
|
native_module: ManagedWasmNativeModule;
|
|
export_wrappers: FixedArray;
|
|
script: Script;
|
|
}
|
|
|
|
extern class WasmTableObject extends JSObject {
|
|
instance: WasmInstanceObject|Undefined;
|
|
entries: FixedArray;
|
|
current_length: Smi;
|
|
maximum_length: Smi|HeapNumber|Undefined;
|
|
dispatch_tables: FixedArray;
|
|
raw_type: Smi;
|
|
}
|
|
|
|
extern class WasmMemoryObject extends JSObject {
|
|
array_buffer: JSArrayBuffer;
|
|
maximum_pages: Smi;
|
|
instances: WeakArrayList|Undefined;
|
|
}
|
|
|
|
extern class WasmGlobalObject extends JSObject {
|
|
instance: WasmInstanceObject|Undefined;
|
|
untagged_buffer: JSArrayBuffer|Undefined;
|
|
tagged_buffer: FixedArray|Undefined;
|
|
offset: Smi;
|
|
raw_type: Smi;
|
|
is_mutable: Smi;
|
|
}
|
|
|
|
extern class WasmExceptionObject extends JSObject {
|
|
serialized_signature: PodArrayOfWasmValueType;
|
|
exception_tag: HeapObject;
|
|
}
|
|
|
|
type WasmExportedFunction extends JSFunction;
|
|
|
|
extern class AsmWasmData extends Struct {
|
|
managed_native_module: ManagedWasmNativeModule;
|
|
export_wrappers: FixedArray;
|
|
uses_bitset: HeapNumber;
|
|
}
|
|
|
|
@generateCppClass
|
|
extern class WasmTypeInfo extends Foreign {
|
|
parent: Map;
|
|
supertypes: FixedArray;
|
|
subtypes: ArrayList;
|
|
}
|
|
|
|
@generateCppClass
|
|
extern class WasmStruct extends HeapObject {
|
|
}
|
|
|
|
@generateCppClass
|
|
extern class WasmArray extends HeapObject {
|
|
length: uint32;
|
|
|
|
@if(TAGGED_SIZE_8_BYTES) optional_padding: uint32;
|
|
@ifnot(TAGGED_SIZE_8_BYTES) optional_padding: void;
|
|
}
|