Ejemplo n.º 1
0
Archivo: heap.c Proyecto: jonas-l/ponyc
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]);
  }
}
Ejemplo n.º 2
0
Archivo: heap.c Proyecto: jonas-l/ponyc
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;
}
Ejemplo n.º 3
0
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;
}