use wasmparser::ValType;
#[derive(Eq, PartialEq)]
enum Base {
FP,
SP,
}
pub(crate) struct LocalSlot {
pub offset: u32,
pub ty: ValType,
base: Base,
}
impl LocalSlot {
pub fn new(ty: ValType, offset: u32) -> Self {
Self {
ty,
offset,
base: Base::SP,
}
}
pub fn i32(offset: u32) -> Self {
Self {
ty: ValType::I32,
offset,
base: Base::SP,
}
}
pub fn i64(offset: u32) -> Self {
Self {
ty: ValType::I64,
offset,
base: Base::SP,
}
}
pub fn stack_arg(ty: ValType, offset: u32) -> Self {
Self {
ty,
offset,
base: Base::FP,
}
}
pub fn addressed_from_sp(&self) -> bool {
self.base == Base::SP
}
}