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

Method grow_to

crates/tinywasm/src/store/memory/paged.rs:131–152  ·  view source on GitHub ↗
(&mut self, new_len: usize)

Source from the content-addressed store, hash-verified

129
130 #[inline(always)]
131 fn grow_to(&mut self, new_len: usize) -> Result<(), crate::Trap> {
132 if new_len < self.len {
133 return Err(crate::Trap::MemoryOutOfBounds { offset: new_len, len: 0, max: self.len });
134 }
135
136 let new_chunk_count = if new_len == 0 { 0 } else { new_len.div_ceil(self.chunk_size) };
137 if new_chunk_count > self.chunks.len() {
138 match self.chunks.try_reserve_exact(new_chunk_count - self.chunks.len()) {
139 Ok(()) => {}
140 Err(_) => {
141 cold_path();
142 return Err(crate::Trap::OutOfMemory);
143 }
144 }
145 self.chunks.resize_with(new_chunk_count, || None);
146 } else {
147 self.chunks.truncate(new_chunk_count);
148 }
149
150 self.len = new_len;
151 Ok(())
152 }
153
154 #[inline(always)]
155 fn read(&self, addr: usize, dst: &mut [u8]) -> usize {

Callers 1

try_newMethod · 0.45

Calls 1

lenMethod · 0.45

Tested by

no test coverage detected