(&self, base: u64, offset: u64)
| 301 | |
| 302 | #[inline(always)] |
| 303 | fn read_32(&self, base: u64, offset: u64) -> core::result::Result<[u8; 4], crate::Trap> { |
| 304 | let addr = checked_effective_addr::<4>(self.len, base, offset)?; |
| 305 | let chunk_idx = addr >> self.chunk_shift; |
| 306 | let chunk_offset = addr & self.chunk_mask; |
| 307 | if chunk_offset + 4 <= self.chunk_size { |
| 308 | return Ok(match self.chunk_slice(chunk_idx) { |
| 309 | Some(chunk) => chunk[chunk_offset..chunk_offset + 4].try_into().unwrap_or_else(|_| unreachable!()), |
| 310 | None => [0; 4], |
| 311 | }); |
| 312 | } |
| 313 | |
| 314 | let mut bytes = [0; 4]; |
| 315 | self.read_exact(addr, &mut bytes).unwrap(); |
| 316 | Ok(bytes) |
| 317 | } |
| 318 | |
| 319 | #[inline(always)] |
| 320 | fn read_64(&self, base: u64, offset: u64) -> core::result::Result<[u8; 8], crate::Trap> { |
nothing calls this directly
no test coverage detected