diff --git a/src/gc.c b/src/gc.c index a04d1984c37d6952e8dec17835a9463e7d6c2ebc..874968a489469ccbff2c0673cd37a3b9a9859c36 100644 --- a/src/gc.c +++ b/src/gc.c @@ -29,7 +29,7 @@ struct callback *gc_evaluator_callback=0; #include "block_alloc.h" -RCSID("$Id: gc.c,v 1.46 2000/02/02 00:38:27 hubbe Exp $"); +RCSID("$Id: gc.c,v 1.47 2000/02/02 22:57:09 hubbe Exp $"); /* Run garbage collect approximate every time we have * 20 percent of all arrays, objects and programs is @@ -47,6 +47,8 @@ INT32 num_allocs =0; INT32 alloc_threshold = MIN_ALLOC_THRESHOLD; static int in_gc = 0; struct pike_queue gc_mark_queue; +time_t last_gc; + static double objects_alloced = 0.0; static double objects_freed = 0.0; @@ -72,8 +74,6 @@ PTR_HASH_ALLOC(marker,MARKER_CHUNK_SIZE) #ifdef PIKE_DEBUG -time_t last_gc; - void dump_gc_info(void) { fprintf(stderr,"Current number of objects: %ld\n",(long)num_objects); @@ -612,10 +612,11 @@ void do_gc(void) if(num_objects < 0) fatal("Panic, less than zero objects!\n"); - last_gc=TIME(0); #endif + last_gc=TIME(0); + multiplier=pow(MULTIPLIER, (double) num_allocs / (double) alloc_threshold); objects_alloced*=multiplier; objects_alloced += (double) num_allocs;