(&mut self, dst_table: u32, src_table: u32)
| 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, |
no test coverage detected