feat: gc-arena (WIP, does not compile)

This commit is contained in:
2025-05-25 17:18:54 +08:00
parent b41fd38bcc
commit cc06369c5e
17 changed files with 882 additions and 585 deletions

View File

@@ -1,6 +1,6 @@
use hashbrown::HashMap;
use ecow::EcoString;
use gc_arena::Collect;
use crate::ty::common::Const;
use crate::ty::internal::Param;
@@ -9,7 +9,8 @@ type Slice<T> = Box<[T]>;
pub type OpCodes = Slice<OpCode>;
#[derive(Debug, Clone, Copy)]
#[derive(Debug, Clone, Copy, Collect)]
#[collect(no_drop)]
pub enum OpCode {
/// load a constant onto stack
Const { idx: usize },
@@ -103,7 +104,8 @@ pub enum UnOp {
Not,
}
#[derive(Debug)]
#[derive(Debug, Collect)]
#[collect(no_drop)]
pub struct Func {
pub param: Param,
pub opcodes: OpCodes,