void heap_destroy(heap_t* heap) { chunk_list(destroy_large, heap->large); for(int i = 0; i < HEAP_SIZECLASSES; i++) { chunk_list(destroy_small, heap->small_free[i]); chunk_list(destroy_small, heap->small_full[i]); } }
bool heap_startgc(heap_t* heap) { if(heap->used <= heap->next_gc) return false; for(int i = 0; i < HEAP_SIZECLASSES; i++) { chunk_list(clear_small, heap->small_free[i]); chunk_list(clear_small, heap->small_full[i]); } chunk_list(clear_large, heap->large); // reset used to zero heap->used = 0; return true; }
bool ponyint_heap_startgc(heap_t* heap) { if(heap->used <= heap->next_gc) return false; for(int i = 0; i < HEAP_SIZECLASSES; i++) { uint32_t mark = sizeclass_empty[i]; chunk_list(clear_chunk, heap->small_free[i], mark); chunk_list(clear_chunk, heap->small_full[i], mark); } chunk_list(clear_chunk, heap->large, 1); // reset used to zero heap->used = 0; return true; }