tvl-depot/tvix/eval/src
sterni 7046604cfe fix(tvix/eval): place plain inherits in correct stack slots
We need to make sure that we compile all plain inherits in a let
expression before declaring any other locals. Plain inherits are special
in the sense that they can never be recursive, instead resolving to a
higher scope. Thus we need to compile their value, before declaring
them. If we don't do that, before any other local can be declared,
we cause a situation where the plain inherits' values are placed into
other locals' stack slots.

Note that we can't integrate the plain inherit compilation into the
regular 2-3 phase model where we defer the compilation of the value or
we'd compile `let inherit x; in …` as `let x = x; in …`.

Change-Id: I951d5df3c9661a054e12401546875f4685b5bf08
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6496
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: sterni <sternenseemann@systemli.org>
2022-09-11 12:26:23 +00:00
..
builtins fix(tvix/eval): fix doc comment syntax where applicable 2022-09-10 21:57:13 +00:00
compiler fix(tvix/eval): place plain inherits in correct stack slots 2022-09-11 12:26:23 +00:00
tests fix(tvix/eval): place plain inherits in correct stack slots 2022-09-11 12:26:23 +00:00
value refactor(tvix/eval): introduce Upvalues struct in closures & thunks 2022-09-11 12:16:46 +00:00
chunk.rs fix(tvix/eval): fix doc comment syntax where applicable 2022-09-10 21:57:13 +00:00
errors.rs fix(tvix/eval): reintroduce 'InvalidAttribuetName' error variant 2022-09-10 21:57:13 +00:00
eval.rs feat(tvix/eval): conditionally use tracing/disassembling observers 2022-09-10 21:57:13 +00:00
lib.rs chore(tvix/eval): clean up remains of previous disassembler impl 2022-09-09 21:14:56 +00:00
main.rs fix(tvix/eval): always add history entries in REPL 2022-09-10 21:57:13 +00:00
observer.rs fix(tvix/eval): use correct lambda address in observer 2022-09-11 12:16:46 +00:00
opcode.rs refactor(tvix/eval): capture entire with_stack in upvalues 2022-09-11 12:26:23 +00:00
upvalues.rs refactor(tvix/eval): capture entire with_stack in upvalues 2022-09-11 12:26:23 +00:00
vm.rs refactor(tvix/eval): capture entire with_stack in upvalues 2022-09-11 12:26:23 +00:00
warnings.rs feat(tvix/eval): implement "formals" function parameters 2022-09-11 10:32:10 +00:00