Arena allocate bytes
All checks were successful
All checks were successful
This commit is contained in:
parent
d421189c45
commit
8bef7f8bd0
@ -233,12 +233,21 @@ arena_allocate_bytes = fn (arena: &Arena, size: u64, alignment: u64) &u8
|
||||
>aligned_offset = align_forward(arena.position, alignment);
|
||||
>aligned_size_after = aligned_offset + size;
|
||||
|
||||
>arena_byte_pointer: &u8 = #pointer_cast(arena);
|
||||
|
||||
if (aligned_size_after > arena.os_position)
|
||||
{
|
||||
#trap();
|
||||
>target_committed_size = align_forward(aligned_size_after, arena.granularity);
|
||||
>size_to_commit = target_committed_size - arena.os_position;
|
||||
>commit_pointer = arena_byte_pointer + arena.os_position;
|
||||
os_commit(#int_from_pointer(commit_pointer), size_to_commit, {
|
||||
.read = 1,
|
||||
.write = 1,
|
||||
zero,
|
||||
});
|
||||
arena.os_position = target_committed_size;
|
||||
}
|
||||
|
||||
>arena_byte_pointer: &u8 = #pointer_cast(arena);
|
||||
>result = arena_byte_pointer + aligned_offset;
|
||||
arena.position = aligned_size_after;
|
||||
assert(arena.position <= arena.os_position);
|
||||
@ -246,6 +255,10 @@ arena_allocate_bytes = fn (arena: &Arena, size: u64, alignment: u64) &u8
|
||||
return result;
|
||||
}
|
||||
|
||||
arena_join_string = fn (arena: &Arena, pieces: [][]u8) []u8
|
||||
{
|
||||
}
|
||||
|
||||
GlobalState = struct
|
||||
{
|
||||
arena: &Arena,
|
||||
|
Loading…
x
Reference in New Issue
Block a user