mirror of
https://github.com/ilyakooo0/Idris-dev.git
synced 2024-11-15 01:25:05 +03:00
30 lines
738 B
C
30 lines
738 B
C
#ifndef _IDRIS_HEAP_H
|
|
#define _IDRIS_HEAP_H
|
|
|
|
#include <stddef.h>
|
|
|
|
typedef struct {
|
|
char* next; // Next allocated chunk. Should always (heap <= next < end).
|
|
char* heap; // Point to bottom of heap
|
|
char* end; // Point to top of heap
|
|
size_t size; // Size of _next_ heap. Size of current heap is /end - heap/.
|
|
size_t growth; // Quantity of heap growth in bytes.
|
|
|
|
char* old;
|
|
} Heap;
|
|
|
|
|
|
void alloc_heap(Heap * heap, size_t heap_size, size_t growth, char * old);
|
|
void free_heap(Heap * heap);
|
|
|
|
|
|
#ifdef IDRIS_DEBUG
|
|
void heap_check_all(Heap * heap);
|
|
// Should be used _between_ gc's.
|
|
#define HEAP_CHECK(vm) heap_check_all(&(vm->heap));
|
|
#else
|
|
#define HEAP_CHECK(vm)
|
|
#endif // IDRIS_DEBUG
|
|
|
|
#endif // _IDRIS_HEAP_H
|