From 1a2bc7f3801c565c2dab22021255a164c05a7f76 Mon Sep 17 00:00:00 2001 From: Jay Geng Date: Thu, 1 Jun 2023 19:26:16 -0400 Subject: [PATCH] Access and set `FuelCosts` --- crates/wasmi/src/engine/config.rs | 5 +++++ crates/wasmi/src/engine/executor.rs | 3 ++- crates/wasmi/src/engine/mod.rs | 2 +- crates/wasmi/src/lib.rs | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/wasmi/src/engine/config.rs b/crates/wasmi/src/engine/config.rs index 5340b2fb57..00ec4890b4 100644 --- a/crates/wasmi/src/engine/config.rs +++ b/crates/wasmi/src/engine/config.rs @@ -390,6 +390,11 @@ impl Config { self } + pub fn set_fuel_costs(&mut self, costs: FuelCosts) -> &mut Self { + self.fuel_costs = costs; + self + } + /// Returns the [`FuelConsumptionMode`] for the [`Engine`]. /// /// Returns `None` if fuel metering is disabled for the [`Engine`]. diff --git a/crates/wasmi/src/engine/executor.rs b/crates/wasmi/src/engine/executor.rs index d4006345f5..c25d7c9926 100644 --- a/crates/wasmi/src/engine/executor.rs +++ b/crates/wasmi/src/engine/executor.rs @@ -727,7 +727,8 @@ impl<'ctx, 'engine> Executor<'ctx, 'engine> { } } - /// Consume an amount of memory fuel specified by `delta`. + /// Consume an amount of memory fuel specified by `bytes`. The memory fuel cost + /// is always 1 per byte. #[inline(always)] fn consume_mem_fuel(&mut self, bytes: u64) -> Result { diff --git a/crates/wasmi/src/engine/mod.rs b/crates/wasmi/src/engine/mod.rs index 49912efef8..01577db2d9 100644 --- a/crates/wasmi/src/engine/mod.rs +++ b/crates/wasmi/src/engine/mod.rs @@ -19,7 +19,7 @@ mod tests; pub use self::{ bytecode::DropKeep, code_map::CompiledFunc, - config::{Config, FuelConsumptionMode}, + config::{Config, FuelConsumptionMode, FuelCosts}, func_builder::{ FuncBuilder, FuncTranslatorAllocations, diff --git a/crates/wasmi/src/lib.rs b/crates/wasmi/src/lib.rs index 3144bf2031..197807b5ef 100644 --- a/crates/wasmi/src/lib.rs +++ b/crates/wasmi/src/lib.rs @@ -123,6 +123,7 @@ pub use self::{ Config, Engine, FuelConsumptionMode, + FuelCosts, ResumableCall, ResumableInvocation, StackLimits,