refactor(tvix/eval): capture entire with_stack in upvalues
This completely rewrites the handling of "dynamic upvalues" to, instead of resolving them at thunk/closure instantiation time (which forces some values too early), capture the entire with stack of parent contexts if it exists. There are a couple of things in here that could be written more efficiently, but I'm first working through this to get to a bug related to with + recursion and the code complexity of some of the optimisations is distracting. Change-Id: Ia538e06c9146e3bf8decb9adf02dd726d2c651cf Reviewed-on: https://cl.tvl.fyi/c/depot/+/6486 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
d75b207a63
commit
07ea30370e
5 changed files with 122 additions and 148 deletions
|
|
@ -125,6 +125,5 @@ pub enum OpCode {
|
|||
DataLocalIdx(StackIdx),
|
||||
DataDeferredLocal(StackIdx),
|
||||
DataUpvalueIdx(UpvalueIdx),
|
||||
DataDynamicIdx(ConstantIdx),
|
||||
DataDynamicAncestor(UpvalueIdx),
|
||||
DataCaptureWith,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue