| // 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; |
| call_count: 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; |
| 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; |
| } |