#ifndef _HEAP_H_ #define _HEAP_H_ #include #include #include "slice.h" #include "value.h" struct heap { // The heap is divided into two halves for garbage collection. // buf holds the malloc'd heap buffer. value *buf; // active and standby are slices that partition buf. struct val_slice active; struct val_slice standby; size_t free_ptr; size_t last_free; struct val_slice gc_roots; }; struct heap new_heap(struct val_slice); value *alloc(struct heap *, int64_t); #endif