about summary refs log tree commit diff
path: root/tvix/eval/src/eval.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-09-03T11·52+0300
committertazjin <tazjin@tvl.su>2022-09-08T20·17+0000
commit48d5f4fd573e05410a3b0dfc3bb2a0289e8736b1 (patch)
tree5f3a0683f7d0bd7948ab4ee336b0b7cceca0efd1 /tvix/eval/src/eval.rs
parentd3421c1cb9fc52a583b888e5040ea6d60a4d02ac (diff)
feat(tvix/eval): print lambda memory adresses in disassembler r/4768
This makes it easier to track exactly which lambda is which when
inspecting e.g. the concrete representation of a thunk.

At runtime all lambdas live in an Rc. To make this print the right
address, the construction of these Rcs had to be moved up right to the
point where the lambda is first emitted (and disassembled).

Change-Id: I6070e6c8ac55f0bd697966c4e7c5565c20d19106
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6435
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval/src/eval.rs')
-rw-r--r--tvix/eval/src/eval.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/tvix/eval/src/eval.rs b/tvix/eval/src/eval.rs
index ecf0824871..c2fe7f1513 100644
--- a/tvix/eval/src/eval.rs
+++ b/tvix/eval/src/eval.rs
@@ -1,4 +1,4 @@
-use std::path::PathBuf;
+use std::{path::PathBuf, rc::Rc};
 
 use crate::{
     builtins::global_builtins,
@@ -45,11 +45,12 @@ pub fn interpret(code: &str, location: Option<PathBuf>) -> EvalResult<Value> {
         &file,
         global_builtins(),
         #[cfg(feature = "disassembler")]
-        std::rc::Rc::new(codemap),
+        Rc::new(codemap),
     )?;
+    let lambda = Rc::new(result.lambda);
 
     #[cfg(feature = "disassembler")]
-    crate::disassembler::disassemble_chunk(&result.lambda.chunk);
+    crate::disassembler::disassemble_lambda(lambda.clone());
 
     for warning in result.warnings {
         eprintln!(
@@ -73,5 +74,5 @@ pub fn interpret(code: &str, location: Option<PathBuf>) -> EvalResult<Value> {
         return Err(err.clone());
     }
 
-    crate::vm::run_lambda(result.lambda)
+    crate::vm::run_lambda(lambda)
 }