From ad705a6edeb8652c6282dcb96bddf3859ac08445 Mon Sep 17 00:00:00 2001 From: Jay Geng Date: Tue, 29 Nov 2022 17:08:19 -0500 Subject: [PATCH] Optimize metering flushes (#10) * Remove premature metering flushes * git workflow --- wasmi_v1/src/engine/exec_context.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/wasmi_v1/src/engine/exec_context.rs b/wasmi_v1/src/engine/exec_context.rs index 5bee1a5395..c79b8bc130 100644 --- a/wasmi_v1/src/engine/exec_context.rs +++ b/wasmi_v1/src/engine/exec_context.rs @@ -101,17 +101,16 @@ impl<'engine, 'func> FunctionExecutor<'engine, 'func> { Instr::GetLocal { local_depth } => { exec_ctx.visit_get_local(*local_depth)?; } Instr::SetLocal { local_depth } => { exec_ctx.visit_set_local(*local_depth)?; } Instr::TeeLocal { local_depth } => { exec_ctx.visit_tee_local(*local_depth)?; } - Instr::Br(target) => { step_meter.flush()?; exec_ctx.visit_br(*target)?; } - Instr::BrIfEqz(target) => { step_meter.flush()?; exec_ctx.visit_br_if_eqz(*target)?; } - Instr::BrIfNez(target) => { step_meter.flush()?; exec_ctx.visit_br_if_nez(*target)?; } + Instr::Br(target) => { exec_ctx.visit_br(*target)?; } + Instr::BrIfEqz(target) => { exec_ctx.visit_br_if_eqz(*target)?; } + Instr::BrIfNez(target) => { exec_ctx.visit_br_if_nez(*target)?; } Instr::ReturnIfNez(drop_keep) => { - step_meter.flush()?; if let MaybeReturn::Return = exec_ctx.visit_return_if_nez(*drop_keep)? { + step_meter.flush()?; return Ok(CallOutcome::Return) } } Instr::BrTable { len_targets } => { - step_meter.flush()?; exec_ctx.visit_br_table(*len_targets)?; } Instr::Unreachable => { step_meter.flush()?; exec_ctx.visit_unreachable()?; }