MCPcopy Index your code
hub / github.com/explodingcamera/tinywasm / exec_memory_grow

Method exec_memory_grow

crates/tinywasm/src/interpreter/executor.rs:1261–1276  ·  view source on GitHub ↗
(&mut self, addr: u32)

Source from the content-addressed store, hash-verified

1259 }
1260
1261 fn exec_memory_grow(&mut self, addr: u32) -> Result<(), Trap> {
1262 let mem = self.store.state.get_mem_mut(self.module.resolve_mem_addr(addr));
1263 let is_64bit = mem.is_64bit();
1264 let pages_delta = match is_64bit {
1265 true => <i64>::stack_pop(&mut self.store.value_stack),
1266 false => i64::from(<i32>::stack_pop(&mut self.store.value_stack)),
1267 };
1268
1269 let size = mem.grow(pages_delta, self.store.engine.config().trap_on_oom())?.unwrap_or(-1);
1270 match is_64bit {
1271 true => self.store.value_stack.push::<i64>(size)?,
1272 false => self.store.value_stack.push::<i32>(size as i32)?,
1273 };
1274
1275 Ok(())
1276 }
1277
1278 fn exec_memory_copy(&mut self, dst_mem: u32, src_mem: u32) -> Result<(), Trap> {
1279 let size = i32::stack_pop(&mut self.store.value_stack);

Callers 1

execMethod · 0.80

Calls 6

get_mem_mutMethod · 0.80
resolve_mem_addrMethod · 0.80
is_64bitMethod · 0.80
trap_on_oomMethod · 0.80
configMethod · 0.80
growMethod · 0.45

Tested by

no test coverage detected