(&self, base: u64, offset: u64)
| 284 | |
| 285 | #[inline(always)] |
| 286 | fn read_16(&self, base: u64, offset: u64) -> core::result::Result<[u8; 2], crate::Trap> { |
| 287 | let addr = checked_effective_addr::<2>(self.len, base, offset)?; |
| 288 | let chunk_idx = addr >> self.chunk_shift; |
| 289 | let chunk_offset = addr & self.chunk_mask; |
| 290 | if chunk_offset + 2 <= self.chunk_size { |
| 291 | return Ok(match self.chunk_slice(chunk_idx) { |
| 292 | Some(chunk) => chunk[chunk_offset..chunk_offset + 2].try_into().unwrap_or_else(|_| unreachable!()), |
| 293 | None => [0; 2], |
| 294 | }); |
| 295 | } |
| 296 | |
| 297 | let mut bytes = [0; 2]; |
| 298 | self.read_exact(addr, &mut bytes).unwrap(); |
| 299 | Ok(bytes) |
| 300 | } |
| 301 | |
| 302 | #[inline(always)] |
| 303 | fn read_32(&self, base: u64, offset: u64) -> core::result::Result<[u8; 4], crate::Trap> { |
nothing calls this directly
no test coverage detected