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:
+6
-2
@@ -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>(
|
||||
|
||||
Reference in New Issue
Block a user