use super::*;
pub const HEADER_SIZE: u32 = 24;
pub const HEADER_ALIGN: u32 = 8;
pub const ARRAY_LENGTH_OFFSET: u32 = HEADER_SIZE;
pub const EXCEPTION_TAG_INSTANCE_OFFSET: u32 = HEADER_SIZE;
pub const EXCEPTION_TAG_DEFINED_OFFSET: u32 = HEADER_SIZE + 4;
pub const HEADER_MARK_BIT: u32 = 1 << 0;
pub const HEADER_IN_OVER_APPROX_LIST_BIT: u32 = 1 << 1;
#[derive(Default)]
pub struct DrcTypeLayouts;
impl GcTypeLayouts for DrcTypeLayouts {
fn array_length_field_offset(&self) -> u32 {
ARRAY_LENGTH_OFFSET
}
fn exception_tag_instance_offset(&self) -> u32 {
EXCEPTION_TAG_INSTANCE_OFFSET
}
fn exception_tag_defined_offset(&self) -> u32 {
EXCEPTION_TAG_DEFINED_OFFSET
}
fn array_layout(&self, ty: &WasmArrayType) -> GcArrayLayout {
common_array_layout(ty, HEADER_SIZE, HEADER_ALIGN, ARRAY_LENGTH_OFFSET)
}
fn struct_layout(&self, ty: &WasmStructType) -> GcStructLayout {
common_struct_layout(ty, HEADER_SIZE, HEADER_ALIGN)
}
fn exn_layout(&self, ty: &WasmExnType) -> GcStructLayout {
common_exn_layout(ty, HEADER_SIZE, HEADER_ALIGN)
}
}