示例#1
0
文件: heap.c 项目: 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]);
  }
}
示例#2
0
文件: heap.c 项目: 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;
}
示例#3
0
文件: heap.c 项目: JamesLinus/ponyc
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;
}