From 8567062f7186bbd1b22c6850a6bac0a860afb2cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20Gir=C3=A1ldez?= Date: Tue, 10 Oct 2023 18:36:42 -0400 Subject: [PATCH] chore: Apply suggestions from code review Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com> --- acvm-repo/acvm/src/pwg/mod.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/acvm-repo/acvm/src/pwg/mod.rs b/acvm-repo/acvm/src/pwg/mod.rs index 7407966d796..5b61e3910fa 100644 --- a/acvm-repo/acvm/src/pwg/mod.rs +++ b/acvm-repo/acvm/src/pwg/mod.rs @@ -306,15 +306,18 @@ impl<'backend, B: BlackBoxFunctionSolver> ACVM<'backend, B> { if BrilligSolver::::should_skip(witness, brillig)? { BrilligSolver::::zero_out_brillig_outputs(witness, brillig).map(|_| None) } else { - let mut solver = match self.brillig_solver.take() { + // If we're resuming execution after resolving a foreign call then + // there will be a cached `BrilligSolver` to avoid recomputation. + let mut solver: BrilligSolver<'_, B> = match self.brillig_solver.take() { + Some(solver) => solver, None => { BrilligSolver::new(witness, brillig, self.backend, self.instruction_pointer)? } - Some(solver) => solver, }; match solver.solve()? { BrilligSolverStatus::ForeignCallWait(foreign_call) => { - _ = self.brillig_solver.insert(solver); + // Cache the current state of the solver + self.brillig_solver = Some(solver); Ok(Some(foreign_call)) } BrilligSolverStatus::InProgress => {