From bfb787a6c5dc6ccd9a25efc015770f20702c2a55 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sun, 26 Feb 2023 18:40:52 +0300 Subject: refactor(tvix/eval): remove VM argument from suspended native thunks Because they do not use it, and it can not be passed with the coming generator refactoring. Change-Id: I0d96f2357a7ee79cd8a0f401583d4286230d4a6b Reviewed-on: https://cl.tvl.fyi/c/depot/+/8146 Tested-by: BuildkiteCI Reviewed-by: raitobezarius --- tvix/eval/src/builtins/impure.rs | 8 +------- tvix/eval/src/compiler/mod.rs | 4 ++-- tvix/eval/src/value/thunk.rs | 8 ++++---- 3 files changed, 7 insertions(+), 13 deletions(-) (limited to 'tvix') diff --git a/tvix/eval/src/builtins/impure.rs b/tvix/eval/src/builtins/impure.rs index 80736708118c..91dce152e54a 100644 --- a/tvix/eval/src/builtins/impure.rs +++ b/tvix/eval/src/builtins/impure.rs @@ -6,13 +6,7 @@ use std::{ time::{SystemTime, UNIX_EPOCH}, }; -use crate::{ - errors::ErrorKind, - io::FileType, - value::{NixAttrs, Thunk}, - vm::VM, - Value, -}; +use crate::{errors::ErrorKind, io::FileType, value::NixAttrs, vm::VM, Value}; #[builtins] mod impure_builtins { diff --git a/tvix/eval/src/compiler/mod.rs b/tvix/eval/src/compiler/mod.rs index 83b1f01a8047..6dd0b669f957 100644 --- a/tvix/eval/src/compiler/mod.rs +++ b/tvix/eval/src/compiler/mod.rs @@ -1329,7 +1329,7 @@ fn compile_src_builtin( let file = source.add_file(format!("", name), code.to_string()); let weak = weak.clone(); - Value::Thunk(Thunk::new_suspended_native(Box::new(move |_| { + Value::Thunk(Thunk::new_suspended_native(Box::new(move || { let result = compile( &parsed.tree().expr().unwrap(), None, @@ -1390,7 +1390,7 @@ pub fn prepare_globals( let weak_globals = weak.clone(); builtins.insert( "builtins", - Value::Thunk(Thunk::new_suspended_native(Box::new(move |_| { + Value::Thunk(Thunk::new_suspended_native(Box::new(move || { Ok(weak_globals .upgrade() .unwrap() diff --git a/tvix/eval/src/value/thunk.rs b/tvix/eval/src/value/thunk.rs index 1c7ed615527c..43adb314a211 100644 --- a/tvix/eval/src/value/thunk.rs +++ b/tvix/eval/src/value/thunk.rs @@ -39,7 +39,7 @@ use crate::{ use super::{Lambda, TotalDisplay}; /// Internal representation of a suspended native thunk. -struct SuspendedNative(Box Result>); +struct SuspendedNative(Box Result>); impl Debug for SuspendedNative { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { @@ -109,7 +109,7 @@ impl Thunk { }))) } - pub fn new_suspended_native(native: Box Result>) -> Self { + pub fn new_suspended_native(native: Box Result>) -> Self { Thunk(Rc::new(RefCell::new(ThunkRepr::Native(SuspendedNative( native, ))))) @@ -199,7 +199,7 @@ impl Thunk { // the trampoline, to handle the case of the native function // returning another thunk. ThunkRepr::Native(native) => { - let value = native.0(vm)?; + let value = native.0()?; self.0.replace(ThunkRepr::Evaluated(value)); let self_clone = self.clone(); @@ -277,7 +277,7 @@ impl Thunk { // Same as for the native case above, but results are placed // in *both* thunks. ThunkRepr::Native(native) => { - let value = native.0(vm)?; + let value = native.0()?; self.0.replace(ThunkRepr::Evaluated(value.clone())); inner.0.replace(ThunkRepr::Evaluated(value)); let self_clone = self.clone(); -- cgit 1.4.1