From 3b92ff454f574ce3ece912ebf26790c0228cc48a Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Wed, 23 Nov 2022 00:32:55 -0800 Subject: feat(tvix/eval): inline(always) tail_call_value Rust doesn't do tail-call elimination (still!) so the best we can hope for here is to inline non-recursive invocations. Change-Id: I78949967e48b006fcbf31786d8f6281cd122f36f Reviewed-on: https://cl.tvl.fyi/c/depot/+/7360 Reviewed-by: tazjin Tested-by: BuildkiteCI Autosubmit: Adam Joseph --- tvix/eval/src/vm.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tvix/eval/src/vm.rs b/tvix/eval/src/vm.rs index b5f948a96a..bfca5d5984 100644 --- a/tvix/eval/src/vm.rs +++ b/tvix/eval/src/vm.rs @@ -304,6 +304,7 @@ impl<'o> VM<'o> { Ok(res) } + #[inline(always)] fn tail_call_value(&mut self, callable: Value) -> EvalResult<()> { match callable { Value::Builtin(builtin) => self.call_builtin(builtin), -- cgit 1.4.1