fn remove_arena(&mut self, type_info: &GcTypeInfo, free: &mut FreeList) -> DropedBounds {
        if let Some((header, (next, top))) = self.iter().next().map(|(h, (n, t))| (*h, (*n, *t))) {
            self.remove(&header);
            (next as _, top)
        } else {
            let next = free.alloc() as *mut _ as usize
                + HeaderUnTyped::high_offset(type_info.align, type_info.size) as usize;
            (next as *mut u8, next as _)
        }
    }
/// Reuse or allocate a new Arena
Reuse or allocate a new Arena
Reuse or allocate a new Arena
fn remove_arena(&mut self, type_info: &GcTypeInfo, free: &mut FreeList) -> DropedBounds {
        if let Some((header, (next, top))) = self.iter().next().map(|(h, (n, t))| (*h, (*n, *t))) {
            self.remove(&header);
            (next as _, top)
        } else {
            let next = free.alloc() as *mut _ as usize
                + HeaderUnTyped::high_offset(type_info.align, type_info.size) as usize;
            (next as *mut u8, next as _)
        }
    }
fn remove_arena ( & mut self , type_info : & GcTypeInfo , free : & mut FreeList ) -> DropedBounds { if let Some ( ( header , ( next , top ) ) ) = self . iter ( ) . next ( ) . map ( | ( h , ( n , t ) ) | ( * h , ( * n , * t ) ) ) { self . remove ( & header ) ; ( next as _ , top ) } else { let next = free . alloc ( ) as * mut _ as usize + HeaderUnTyped :: high_offset ( type_info . align , type_info . size ) as usize ; ( next as * mut u8 , next as _ ) } }
Reuse or allocate a new Arena
Reuse or allocate a new Arena
&mut self
type_info
&GcTypeInfo
free
&mut FreeList
&mut self
type_info
&GcTypeInfo
free
&mut FreeList