MCPcopy Create free account
hub / github.com/explodingcamera/tinywasm / build_engine

Method build_engine

crates/cli/src/engine_flags.rs:79–122  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

77
78impl EngineFlags {
79 pub fn build_engine(&self) -> Result<Engine> {
80 let mut config = tinywasm::engine::Config::new();
81
82 if let Some(fuel_policy) = self.fuel_policy {
83 config = config.with_fuel_policy(match fuel_policy {
84 FuelPolicyArg::PerInstruction => FuelPolicy::PerInstruction,
85 FuelPolicyArg::Weighted => FuelPolicy::Weighted,
86 });
87 }
88
89 if let Some(memory_backend) = self.memory_backend {
90 config = config.with_memory_backend(match memory_backend {
91 MemoryBackendArg::Vec => tinywasm::MemoryBackend::vec(),
92 MemoryBackendArg::Paged => {
93 if self.memory_page_chunk_size == 0 {
94 bail!("--memory-page-chunk-size must be greater than zero")
95 }
96 tinywasm::MemoryBackend::paged(self.memory_page_chunk_size)
97 }
98 });
99 }
100
101 if let Some(value_stack_size) = self.value_stack_size {
102 config = config.with_value_stack(StackConfig::fixed(value_stack_size));
103 }
104
105 if let Some(value_stack_dynamic) = self.value_stack_dynamic.clone() {
106 config = config.with_value_stack(value_stack_dynamic.into_stack_config());
107 }
108
109 if let Some(call_stack_size) = self.call_stack_size {
110 config = config.with_call_stack(StackConfig::fixed(call_stack_size));
111 }
112
113 if let Some(call_stack_dynamic) = self.call_stack_dynamic.clone() {
114 config = config.with_call_stack(call_stack_dynamic.into_stack_config());
115 }
116
117 if self.trap_on_oom {
118 config = config.with_trap_on_oom(true);
119 }
120
121 Ok(Engine::new(config))
122 }
123}
124
125#[cfg(test)]

Callers 2

runFunction · 0.80

Calls 6

with_fuel_policyMethod · 0.80
with_memory_backendMethod · 0.80
with_value_stackMethod · 0.80
into_stack_configMethod · 0.80
with_call_stackMethod · 0.80
with_trap_on_oomMethod · 0.80

Tested by 1