about summary refs log tree commit diff
path: root/tvix/eval/src/opcode.rs
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-08-26T17·54+0300
committertazjin <tazjin@tvl.su>2022-09-03T13·22+0000
commitc73e84d95777c304f1b208cbc43b01012df73262 (patch)
tree88efee3ba7d312afd5f9cc3875b960172aadd99d /tvix/eval/src/opcode.rs
parent2cdc6192b47dbba221d158de31800035c738fdc7 (diff)
refactor(tvix/eval): add opcode::StackIdx type for less ambiguity r/4621
Change-Id: I9b9de1f681972c205d4d20bc5731d2ce79858edb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6287
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'tvix/eval/src/opcode.rs')
-rw-r--r--tvix/eval/src/opcode.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/tvix/eval/src/opcode.rs b/tvix/eval/src/opcode.rs
index f265ef06d7..82b72952d6 100644
--- a/tvix/eval/src/opcode.rs
+++ b/tvix/eval/src/opcode.rs
@@ -11,6 +11,11 @@ pub struct ConstantIdx(pub usize);
 #[derive(Clone, Copy, Debug)]
 pub struct CodeIdx(pub usize);
 
+/// Index of a value in the runtime stack.
+#[repr(transparent)]
+#[derive(Clone, Copy, Debug)]
+pub struct StackIdx(pub usize);
+
 /// Offset by which an instruction pointer should change in a jump.
 #[repr(transparent)]
 #[derive(Clone, Copy, Debug)]
@@ -63,7 +68,7 @@ pub enum OpCode {
     OpAttrsIsSet,
 
     // `with`-handling
-    OpPushWith(usize),
+    OpPushWith(StackIdx),
     OpPopWith,
     OpResolveWith,
 
@@ -78,7 +83,7 @@ pub enum OpCode {
     OpAssertBool,
 
     // Access local identifiers with statically known positions.
-    OpGetLocal(usize),
+    OpGetLocal(StackIdx),
 
     // Close scopes while leaving their expression value around.
     OpCloseScope(usize), // number of locals to pop