MCPcopy Index your code
hub / github.com/RustPython/RustPython / resize

Method resize

crates/vm/src/dict_inner.rs:171–203  ·  view source on GitHub ↗
(&mut self, new_size: usize)

Source from the content-addressed store, hash-verified

169
170impl<T> DictInner<T> {
171 fn resize(&mut self, new_size: usize) {
172 let new_size = {
173 let mut i = 1;
174 while i < new_size {
175 i <<= 1;
176 }
177 i
178 };
179 self.indices = vec![IndexEntry::FREE; new_size];
180 let mask = (new_size - 1) as i64;
181 for (entry_idx, entry) in self.entries.iter_mut().enumerate() {
182 if let Some(entry) = entry {
183 let mut idxs = GenIndexes::new(entry.hash, mask);
184 loop {
185 let index_index = idxs.next();
186 unsafe {
187 // Safety: index is always valid here
188 // index_index is generated by idxs
189 // entry_idx is saved one
190 let idx = self.indices.get_unchecked_mut(index_index);
191 if *idx == IndexEntry::FREE {
192 *idx = IndexEntry::from_index_unchecked(entry_idx);
193 entry.index = index_index;
194 break;
195 }
196 }
197 }
198 } else {
199 //removed entry
200 }
201 }
202 self.filled = self.used;
203 }
204
205 fn unchecked_push(
206 &mut self,

Callers 2

unchecked_pushMethod · 0.45
clearMethod · 0.45

Calls 3

newFunction · 0.85
iter_mutMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected