(
&mut self,
mem_addr: tinywasm_types::MemAddr,
offset: u64,
lane: u8,
)
| 1424 | } |
| 1425 | |
| 1426 | fn exec_mem_store_lane<U: MemValue<N> + Copy, const N: usize>( |
| 1427 | &mut self, |
| 1428 | mem_addr: tinywasm_types::MemAddr, |
| 1429 | offset: u64, |
| 1430 | lane: u8, |
| 1431 | ) -> Result<(), Trap> { |
| 1432 | let bytes = <Value128>::stack_pop(&mut self.store.value_stack).to_mem_bytes(); |
| 1433 | let lane_offset = lane as usize * N; |
| 1434 | let mut val = [0u8; N]; |
| 1435 | val.copy_from_slice(&bytes[lane_offset..lane_offset + N]); |
| 1436 | let mem_addr = self.module.resolve_mem_addr(mem_addr); |
| 1437 | let mem = self.store.state.get_mem_mut(mem_addr); |
| 1438 | let addr = match mem.is_64bit() { |
| 1439 | true => <i64>::stack_pop(&mut self.store.value_stack) as u64, |
| 1440 | false => <i32>::stack_pop(&mut self.store.value_stack) as u32 as u64, |
| 1441 | }; |
| 1442 | match mem.store(addr, offset, val) { |
| 1443 | Ok(()) => Ok(()), |
| 1444 | Err(e) => { |
| 1445 | cold_path(); |
| 1446 | Err(e) |
| 1447 | } |
| 1448 | } |
| 1449 | } |
| 1450 | |
| 1451 | fn exec_mem_store<T: InternalValue, U: MemValue<N>, const N: usize>( |
| 1452 | &mut self, |
nothing calls this directly
no test coverage detected