Path: blob/main/crates/environ/src/gc/null.rs
1693 views
//! Layout of Wasm GC objects in the null garbage collector.12use super::*;34/// The size of the `VMNullHeader` header for GC objects.5pub const HEADER_SIZE: u32 = 8;67/// The align of the `VMNullHeader` header for GC objects.8pub const HEADER_ALIGN: u32 = 8;910/// The offset of the length field in a `VMNullArrayHeader`.11pub const ARRAY_LENGTH_OFFSET: u32 = HEADER_SIZE;1213/// The offset of the tag-instance-index field in an exception header.14pub const EXCEPTION_TAG_INSTANCE_OFFSET: u32 = HEADER_SIZE;1516/// The offset of the tag-defined-index field in an exception header.17pub const EXCEPTION_TAG_DEFINED_OFFSET: u32 = HEADER_SIZE + 4;1819/// The layout of Wasm GC objects in the null collector.20#[derive(Default)]21pub struct NullTypeLayouts;2223impl GcTypeLayouts for NullTypeLayouts {24fn array_length_field_offset(&self) -> u32 {25ARRAY_LENGTH_OFFSET26}2728fn exception_tag_instance_offset(&self) -> u32 {29EXCEPTION_TAG_INSTANCE_OFFSET30}3132fn exception_tag_defined_offset(&self) -> u32 {33EXCEPTION_TAG_DEFINED_OFFSET34}3536fn array_layout(&self, ty: &WasmArrayType) -> GcArrayLayout {37common_array_layout(ty, HEADER_SIZE, HEADER_ALIGN, ARRAY_LENGTH_OFFSET)38}3940fn struct_layout(&self, ty: &WasmStructType) -> GcStructLayout {41common_struct_layout(ty, HEADER_SIZE, HEADER_ALIGN)42}4344fn exn_layout(&self, ty: &WasmExnType) -> GcStructLayout {45common_exn_layout(ty, HEADER_SIZE, HEADER_ALIGN)46}47}484950