From 370137974526ef9af1f0d3496d17e4232e3babfe Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Mon, 11 Dec 2023 01:04:04 -0800 Subject: feat(tvix/eval): nonrecursive deep_force() This commit implements deep_force() nonrecursively, by maintaining an explicit stack rather than using the call stack for recursion. As an added bonus, we don't need to pass around the SharedThunkSet anymore, and can in fact completely eliminate SharedThunkSet. Change-Id: I7c4f59f37834d451a28bf6be317eb0a90eac4ee6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10252 Tested-by: BuildkiteCI Reviewed-by: tazjin Autosubmit: Adam Joseph --- tvix/eval/src/value/thunk.rs | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'tvix/eval/src/value/thunk.rs') diff --git a/tvix/eval/src/value/thunk.rs b/tvix/eval/src/value/thunk.rs index cafa8275dec6..a67537f945a9 100644 --- a/tvix/eval/src/value/thunk.rs +++ b/tvix/eval/src/value/thunk.rs @@ -432,14 +432,3 @@ impl ThunkSet { self.0.insert(ptr) } } - -#[derive(Default, Clone)] -pub struct SharedThunkSet(Rc>); - -impl SharedThunkSet { - /// Check whether the given thunk has already been seen. Will mark the thunk - /// as seen otherwise. - pub fn insert(&self, thunk: &Thunk) -> bool { - self.0.borrow_mut().insert(thunk) - } -} -- cgit 1.4.1