allocator

struct Allocator

Members:

  • addr alloc (function pointer: usize sz -> addr address)
  • addr realloc (function pointer: addr address, usize sz -> addr address)
  • addr free (function pointer: addr address)

a_alloc

Parameters: ptr Allocator allocator, usize sz

Returns: addr address

Calls the alloc function on the given allocator, and throws if this method is not implemented

a_realloc

Parameters: ptr Allocator allocator, addr address, usize sz Returns: addr address

Calls the realloc function on the given allocator, and throws if this method is not implemented

a_free

Parameters: ptr Allocator allocator, addr address

Calls the free function on the given allocator, and throws if this method is not implemented

struct HeapAllocator

Inherits from Allocator, is used for allocating on the heap

Only exists if the Heap version is enabled

struct BlockAllocator

Inherits from Allocator, is used for allocating in a buffer

Members:

  • usize blockSize - The size of each block
  • usize blockCount - The amount of blocks the buffer has
  • addr allocatedBlocks - The bit array of allocated blocks
  • addr buffer - The buffer to allocate from

block_allocator_init

Parameters: ptr BlockAllocator allocator, usize blockSize, usize blockCount, addr allocatedBlocks, addr buffer

Initializes a block allocator allocatedBlocks points to ceil(blockCount / 8) bytes of memory to keep track of blocks that have been allocated buffer points to blockSize * blockCount bytes of memory

struct ArenaAllocator

Inherits from Allocator, is used as an arena allocator

Members:

  • addr buffer - pointer to the buffer to allocate memory from
  • usize bufferSize - size of the buffer
  • usize offset - offset of the next block to be allocated

arena_allocator_init

Parameters: ptr BlockAllocator allocator, addr buffer, usize bufferSize

Initializes an arena allocator