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

Method freeze

crates/vm/src/gc_state.rs:792–807  ·  view source on GitHub ↗

Freeze all tracked objects (move to permanent generation). Lock order: generation_lists[i] → permanent_list (consistent with unfreeze).

(&self)

Source from the content-addressed store, hash-verified

790 /// Freeze all tracked objects (move to permanent generation).
791 /// Lock order: generation_lists[i] → permanent_list (consistent with unfreeze).
792 pub fn freeze(&self) {
793 let mut count = 0usize;
794
795 for (gen_idx, gen_list) in self.generation_lists.iter().enumerate() {
796 let mut list = gen_list.write();
797 let mut perm = self.permanent_list.write();
798 while let Some(ptr) = list.pop_front() {
799 perm.push_front(ptr);
800 unsafe { ptr.as_ref().set_gc_generation(GC_PERMANENT) };
801 count += 1;
802 }
803 self.generations[gen_idx].count.store(0, Ordering::SeqCst);
804 }
805
806 self.permanent.count.fetch_add(count, Ordering::SeqCst);
807 }
808
809 /// Unfreeze all objects (move from permanent to gen2).
810 /// Lock order: generation_lists[2] → permanent_list (consistent with freeze).

Callers 1

freezeFunction · 0.45

Calls 7

pop_frontMethod · 0.80
push_frontMethod · 0.80
set_gc_generationMethod · 0.80
iterMethod · 0.45
writeMethod · 0.45
as_refMethod · 0.45
storeMethod · 0.45

Tested by

no test coverage detected