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

Method exec_table_copy

crates/tinywasm/src/interpreter/executor.rs:1359–1374  ·  view source on GitHub ↗
(&mut self, dst_table: u32, src_table: u32)

Source from the content-addressed store, hash-verified

1357 }
1358
1359 fn exec_table_copy(&mut self, dst_table: u32, src_table: u32) -> Result<(), Trap> {
1360 let size = i32::stack_pop(&mut self.store.value_stack);
1361 let src = i32::stack_pop(&mut self.store.value_stack);
1362 let dst = i32::stack_pop(&mut self.store.value_stack);
1363 let dst_table_addr = self.module.resolve_table_addr(dst_table);
1364
1365 if dst_table == src_table {
1366 // copy within the same table
1367 self.store.state.get_table_mut(dst_table_addr).copy_within(dst as usize, src as usize, size as usize)
1368 } else {
1369 // copy between two tables
1370 let src_table_addr = self.module.resolve_table_addr(src_table);
1371 let (dst_table_ref, src_table_ref) = self.store.state.get_tables_mut(dst_table_addr, src_table_addr);
1372 dst_table_ref.copy_from_slice(dst as usize, src_table_ref.load(src as usize, size as usize)?)
1373 }
1374 }
1375
1376 fn exec_mem_load_lane<LOAD: MemValue<LOAD_SIZE>, const LOAD_SIZE: usize>(
1377 &mut self,

Callers 1

execMethod · 0.80

Calls 6

resolve_table_addrMethod · 0.80
get_table_mutMethod · 0.80
get_tables_mutMethod · 0.80
copy_withinMethod · 0.45
copy_from_sliceMethod · 0.45
loadMethod · 0.45

Tested by

no test coverage detected