mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-25 04:55:04 +02:00
WIP
This commit is contained in:
parent
ed77858901
commit
5a7be4f864
1 changed files with 20 additions and 19 deletions
39
gc.c
39
gc.c
|
@ -242,6 +242,7 @@ void gc_print_stats(gc_heap * h)
|
||||||
{
|
{
|
||||||
gc_free_list *f;
|
gc_free_list *f;
|
||||||
unsigned int free, free_chunks, free_min, free_max;
|
unsigned int free, free_chunks, free_min, free_max;
|
||||||
|
int heap_is_empty;
|
||||||
for (; h; h = h->next) {
|
for (; h; h = h->next) {
|
||||||
free = 0;
|
free = 0;
|
||||||
free_chunks = 0;
|
free_chunks = 0;
|
||||||
|
@ -255,16 +256,16 @@ void gc_print_stats(gc_heap * h)
|
||||||
if (f->size > free_max)
|
if (f->size > free_max)
|
||||||
free_max = f->size;
|
free_max = f->size;
|
||||||
}
|
}
|
||||||
if (free == 0){
|
//if (free == 0){
|
||||||
// Page is completely unused
|
// // Page is completely unused
|
||||||
free = h->size;
|
// free = h->size;
|
||||||
free_chunks = 1;
|
// free_chunks = 1;
|
||||||
free_min = free_max = h->size;
|
// free_min = free_max = h->size;
|
||||||
}
|
//}
|
||||||
|
heap_is_empty = gc_is_heap_empty(h);
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Heap page size=%u, used=%u, free=%u, free chunks=%u, min=%u, max=%u\n",
|
"Heap page size=%u, is empty=%d, used=%u, free=%u, free chunks=%u, min=%u, max=%u\n",
|
||||||
h->size, h->size - free, free, free_chunks, free_min, free_max);
|
h->size, heap_is_empty, h->size - free, free, free_chunks, free_min, free_max);
|
||||||
TODO: include gc_is_heap_empty in this printf
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -658,12 +659,12 @@ size_t gc_sweep(gc_heap * h, int heap_type, size_t * sum_freed_ptr)
|
||||||
// how much time is even spent sweeping
|
// how much time is even spent sweeping
|
||||||
//
|
//
|
||||||
pthread_mutex_lock(&heap_lock);
|
pthread_mutex_lock(&heap_lock);
|
||||||
//
|
|
||||||
//// DEBUGGING:
|
// DEBUGGING:
|
||||||
//fprintf(stderr, "\nBefore sweep -------------------------\n");
|
fprintf(stderr, "\nBefore sweep -------------------------\n");
|
||||||
//fprintf(stderr, "Heap %d diagnostics:\n", heap_type);
|
fprintf(stderr, "Heap %d diagnostics:\n", heap_type);
|
||||||
//gc_print_stats(orig_heap_ptr);
|
gc_print_stats(orig_heap_ptr);
|
||||||
//
|
|
||||||
for (; h; prev_h = h, h = h->next) { // All heaps
|
for (; h; prev_h = h, h = h->next) { // All heaps
|
||||||
#if GC_DEBUG_TRACE
|
#if GC_DEBUG_TRACE
|
||||||
fprintf(stderr, "sweep heap %p, size = %zu\n", h, (size_t) h->size);
|
fprintf(stderr, "sweep heap %p, size = %zu\n", h, (size_t) h->size);
|
||||||
|
@ -773,10 +774,10 @@ size_t gc_sweep(gc_heap * h, int heap_type, size_t * sum_freed_ptr)
|
||||||
heap_freed = 0;
|
heap_freed = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//// DEBUGGING:
|
// DEBUGGING:
|
||||||
//fprintf(stderr, "\nAfter sweep -------------------------\n");
|
fprintf(stderr, "\nAfter sweep -------------------------\n");
|
||||||
//fprintf(stderr, "Heap %d diagnostics:\n", heap_type);
|
fprintf(stderr, "Heap %d diagnostics:\n", heap_type);
|
||||||
//gc_print_stats(orig_heap_ptr);
|
gc_print_stats(orig_heap_ptr);
|
||||||
|
|
||||||
pthread_mutex_unlock(&heap_lock);
|
pthread_mutex_unlock(&heap_lock);
|
||||||
if (sum_freed_ptr)
|
if (sum_freed_ptr)
|
||||||
|
|
Loading…
Add table
Reference in a new issue