optimize(env): single arg
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
use std::rc::Rc;
|
||||
|
||||
use inkwell::AddressSpace;
|
||||
use inkwell::context::Context;
|
||||
use inkwell::execution_engine::ExecutionEngine;
|
||||
@@ -205,7 +207,11 @@ extern "C" fn helper_debug(value: JITValue) {
|
||||
#[unsafe(no_mangle)]
|
||||
extern "C" fn helper_capture_env(thunk: JITValue, env: *const LetEnv) {
|
||||
let thunk: &Thunk = unsafe { std::mem::transmute(thunk.data.ptr.as_ref().unwrap()) };
|
||||
thunk.capture(unsafe { env.as_ref().unwrap() }.clone());
|
||||
let env = unsafe {
|
||||
Rc::from_raw(env)
|
||||
};
|
||||
thunk.capture(env.clone());
|
||||
std::mem::forget(env);
|
||||
}
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
|
||||
@@ -32,7 +32,7 @@ fn test_expr(expr: &str, expected: Value) {
|
||||
);
|
||||
let env = env(&vm);
|
||||
let value = vm
|
||||
.eval(prog.top_level.into_iter(), env)
|
||||
.eval(prog.top_level.into_iter(), env.into())
|
||||
.unwrap()
|
||||
.to_public(&vm, &mut HashSet::new());
|
||||
assert_eq!(value, expected);
|
||||
|
||||
Reference in New Issue
Block a user