feat: JIT (WIP)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::pin::Pin;
|
||||
use std::rc::Rc;
|
||||
|
||||
use crate::builtins::env;
|
||||
@@ -21,9 +22,9 @@ mod jit;
|
||||
#[cfg(test)]
|
||||
mod test;
|
||||
|
||||
const STACK_SIZE: usize = 8 * 1024 / size_of::<Value>();
|
||||
pub const STACK_SIZE: usize = 8 * 1024 / size_of::<Value>();
|
||||
|
||||
pub fn run(prog: Program, jit: JITContext<'_>) -> Result<p::Value> {
|
||||
pub fn run(prog: Program, jit: Pin<Box<JITContext<'_>>>) -> Result<p::Value> {
|
||||
let vm = VM::new(
|
||||
prog.thunks,
|
||||
prog.funcs,
|
||||
@@ -45,7 +46,7 @@ pub struct VM<'jit> {
|
||||
symbols: RefCell<Vec<EcoString>>,
|
||||
symmap: RefCell<HashMap<EcoString, usize>>,
|
||||
consts: Box<[Const]>,
|
||||
jit: JITContext<'jit>,
|
||||
jit: Pin<Box<JITContext<'jit>>>
|
||||
}
|
||||
|
||||
impl<'vm, 'jit: 'vm> VM<'jit> {
|
||||
|
||||
Reference in New Issue
Block a user