feat(tvix/eval): wrap Closure in Rc<> to match cppnix semantics

Change-Id: I595087eff943d38a9fc78a83d37e207bb2ab79bc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7443
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This commit is contained in:
Adam Joseph 2022-11-27 00:54:39 -08:00 committed by tazjin
parent b3c34c3c61
commit e04b1697e4
6 changed files with 34 additions and 61 deletions

View file

@ -66,9 +66,6 @@ impl Lambda {
pub struct Closure {
pub lambda: Rc<Lambda>,
pub upvalues: Rc<Upvalues>,
/// true if all upvalues have been realised
#[cfg(debug_assertions)]
pub is_finalised: bool,
}
impl Closure {
@ -79,19 +76,8 @@ impl Closure {
)
}
/// Do not call this function unless you have read
/// `tvix/docs/value-pointer-equality.md` carefully.
pub fn ptr_eq(&self, other: &Self) -> bool {
Rc::ptr_eq(&self.lambda, &other.lambda) && Rc::ptr_eq(&self.upvalues, &other.upvalues)
}
pub fn new_with_upvalues(upvalues: Rc<Upvalues>, lambda: Rc<Lambda>) -> Self {
Closure {
upvalues,
lambda,
#[cfg(debug_assertions)]
is_finalised: true,
}
Closure { upvalues, lambda }
}
pub fn chunk(&self) -> &Chunk {