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:
parent
b3c34c3c61
commit
e04b1697e4
6 changed files with 34 additions and 61 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue