feat: bumpalo
This commit is contained in:
@@ -1,15 +1,12 @@
|
||||
use hashbrown::HashMap;
|
||||
use std::rc::Rc;
|
||||
|
||||
use hashbrown::HashMap;
|
||||
|
||||
use crate::ty::common::Const;
|
||||
use crate::ty::internal::{AttrSet, PrimOp, Value};
|
||||
use crate::vm::{VM, VmEnv};
|
||||
|
||||
pub fn env<'jit, 'vm>(vm: &'vm VM<'jit>) -> VmEnv<'jit, 'vm> {
|
||||
let mut env_map = HashMap::new();
|
||||
env_map.insert(vm.new_sym("true"), Value::Const(Const::Bool(true)));
|
||||
env_map.insert(vm.new_sym("false"), Value::Const(Const::Bool(false)));
|
||||
|
||||
let primops = [
|
||||
PrimOp::new("add", 2, |_, args| {
|
||||
let [mut first, second]: [Value; 2] = args.try_into().unwrap();
|
||||
@@ -49,6 +46,11 @@ pub fn env<'jit, 'vm>(vm: &'vm VM<'jit>) -> VmEnv<'jit, 'vm> {
|
||||
}),
|
||||
];
|
||||
|
||||
let mut env_map = HashMap::new_in(&vm.bump);
|
||||
env_map.insert(vm.new_sym("true"), Value::Const(Const::Bool(true)));
|
||||
env_map.insert(vm.new_sym("false"), Value::Const(Const::Bool(false)));
|
||||
|
||||
|
||||
let mut map = HashMap::new();
|
||||
for primop in primops {
|
||||
let primop = Rc::new(primop);
|
||||
@@ -66,5 +68,5 @@ pub fn env<'jit, 'vm>(vm: &'vm VM<'jit>) -> VmEnv<'jit, 'vm> {
|
||||
let builtins = Value::AttrSet(attrs);
|
||||
|
||||
env_map.insert(sym, builtins);
|
||||
VmEnv::new(env_map.into())
|
||||
VmEnv::new(vm.bump.alloc(env_map), &vm.bump)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user