Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › heap/ › SafeAllocator.zig › newAllocEntry
newAllocEntry
SafeAllocator.newAllocEntry
fn newAllocEntry (s : *SafeAllocator , t : *Thread , ra : usize ) error
File
Code
fn newAllocEntry (s : *SafeAllocator , t : *Thread , ra : usize ) error {OutOfMemory }!*Allocs .Entry {
if (t .free_entry ) |ent | {
@branchHint (.likely );
t .free_entry = ent .toFree ();
return ent ;
}
if (s .allocs_entry_count - t .allocs_next != 0 ) {
@branchHint (.likely );
const ent = &t .allocs_first .?.entries (s )[t .allocs_next ];
t .allocs_next += 1 ;
return ent ;
}
const new_segment : *Allocs = @ptrCast (@alignCast (s .backing .rawAlloc (
(1 + s .allocs_entry_count ) * @sizeOf (usize ),
.of (usize ),
ra ,
) orelse return error .OutOfMemory ));
new_segment .next = t .allocs_first ;
t .allocs_first = new_segment ;
t .allocs_next = 1 ;
return &new_segment .entries (s )[0 ];
}