[kaffe] Freeing jit temp data on demand (Was: Re: JavaLayer 0.3.0

Dalibor Topic robilad at kaffe.org
Sat Sep 20 09:39:01 PDT 2003


Hi Tim,

thanks for taking the time to look into this. I've tried backing out the 
change as you propose, and it works for me (TM). But the jit-temp-data 
is no longer freed, so we are back at square one ;(

Timothy Stack wrote:

>>Okie, I've duplicated the problem, the gc is getting stuck and that eats 
>>up all the CPU.  In particular it gets stuck in startGC() looping on the 
>>finalizer list.  I tried backing out helmer's last changes to the GC and 
>>it seems to run fine again, but I'm not really sure where the bug is just 
>>yet.
> 
> 
> okie, the offending diff seems to be in gc-incremental.c:
> 
> @@ -639,7 +663,6 @@
>  startGC(Collector *gcif)
>  {
>  	gc_unit* unit;
> -	gc_unit* nunit;
>  
>  	gcStats.freedmem = 0;
>  	gcStats.freedobj = 0;
> @@ -663,9 +686,8 @@
>  	startTiming(&gc_time, "gctime-scan");
>  
>  	/* Walk all objects on the finalizer list */
> -	for (unit = gclists[finalise].cnext;
> -	     unit != &gclists[finalise]; unit = nunit) {
> -		nunit = unit->cnext;
> +	while (gclists[finalise].cnext != &gclists[finalise]) {
> +		unit = gclists[finalise].cnext;
>  		gcMarkObject(gcif, UTOMEM(unit));
>  	}
>  
> 
> Restoring the old version makes things work again, is this important for 
> the leak problem you found?

yep, jit-temp-data is back at 8M instead of a few 100K as before.

cheers,
dalibor topic





More information about the kaffe mailing list