MCPcopy Create free account
hub / github.com/explodingcamera/tinywasm / fill

Method fill

crates/tinywasm/src/store/memory/paged.rs:212–238  ·  view source on GitHub ↗
(&mut self, addr: usize, len: usize, val: u8)

Source from the content-addressed store, hash-verified

210
211 #[inline(always)]
212 fn fill(&mut self, addr: usize, len: usize, val: u8) -> Option<()> {
213 let end = self.checked_end(addr, len)?;
214 let mut pos = addr;
215
216 while pos < end {
217 let chunk_idx = pos >> self.chunk_shift;
218 let chunk_offset = pos & self.chunk_mask;
219 let chunk_start = chunk_idx << self.chunk_shift;
220 let chunk_full_len = min(self.chunk_size, self.len - chunk_start);
221 let chunk_end = min(chunk_start + self.chunk_size, end);
222 let fill_len = chunk_end - pos;
223
224 if val == 0 {
225 if chunk_offset == 0 && fill_len == chunk_full_len {
226 self.chunks[chunk_idx] = None;
227 } else if let Some(Some(chunk)) = self.chunks.get_mut(chunk_idx) {
228 chunk[chunk_offset..chunk_offset + fill_len].fill(0);
229 }
230 } else {
231 self.chunk_mut(chunk_idx).ok()?[chunk_offset..chunk_offset + fill_len].fill(val);
232 }
233
234 pos = chunk_end;
235 }
236
237 Some(())
238 }
239
240 #[inline(always)]
241 fn copy_within(&mut self, dst: usize, src: usize, len: usize) -> Option<()> {

Callers 1

readMethod · 0.45

Calls 2

checked_endMethod · 0.80
chunk_mutMethod · 0.80

Tested by

no test coverage detected