Hi,

Peter Bex <peter....@xs4all.nl> writes:
> I decided to take another look at the GC in an attempt to
> understand it better, and found yet another iffy line of code:
>
> When comparing the heap growth to the current heap size plus
> the stack size, two unsigned quantities are subtracted from
> eachother (size is a C_uword parameter to C_rereclaim2,
> heap_size is a size_t, which is also unsigned), and then
> compared to be less than stack_size * 2.
>
> If the heap is not growing, but shrinking, this unsigned
> subtraction will underflow and cause it to result in a
> huge value.  This happens to work, but I think the attached
> patch makes it more explicit what's really happening: it
> only does the subtraction and comparison when the new size
> is bigger than the old heap size (so we're growing the heap,
> due to memory pressure).

looks OK and works fine AFAICT. Pushed!


> When shrinking the heap, this check won't need to be run because
> we've just done a GC, so there *should be* no pressure on
> the nursery, so it won't get copied to the heap.  But I don't
> fully grok this part yet, so don't take my word for it.

So this would get rid of one comparsion operation per major GC? I'd
guess this is negligible, no?

Thanks!
Moritz

_______________________________________________
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers

Reply via email to