Remove redundant tail call resolution

The `resolve_tail_calls` function is being called twice in some
execution paths, which is unnecessary and can lead to incorrect
behavior. This commit removes the redundant calls and simplifies the
execution flow.
This commit is contained in:
Michael Schimmel
2026-03-06 12:45:08 +01:00
parent 13dc6beb52
commit 1f5aefb216
2 changed files with 12 additions and 15 deletions
+6 -2
View File
@@ -229,7 +229,9 @@ impl VM {
} else {
self.unpack(&closure.parameter_node, args, &mut 0)?;
}
self.eval(&closure.exec_node)
let result = self.eval(&closure.exec_node);
self.frames.pop();
self.resolve_tail_calls(&mut NoOpObserver, result)
}
pub fn run_with_args_observed<O: VMObserver>(
@@ -252,7 +254,9 @@ impl VM {
} else {
self.unpack(&closure.parameter_node, args, &mut 0)?;
}
self.eval_observed(observer, &closure.exec_node)
let result = self.eval_observed(observer, &closure.exec_node);
self.frames.pop();
self.resolve_tail_calls(observer, result)
}
pub fn run_with_observer<O: VMObserver>(