This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gh_enter reconsidered



hjstein@bfr.co.il writes:
> 
> Maciej Stachowiak <mstachow@mit.edu> writes:
> 
>  > Of course, the Boehm code needs to find the _absolute_ top of the
>  > stack when possible, while Guile can get away with anything closer
>  > to the stack bottom than main()'s frame pointer is.
> 
> Why is this?
> 

The Boehm collector, as I understand it, does conservative GC for
actual C and C++ objects by scanning the stack and the heap
conservatively for pointers. It must not free objects your code has
dropped references to if they might be referenced by whatever is on
the heap before main() (which is quite possible if you mutate argv or
envp). However, Guile only needs to find possible references to SCM
objects, and you can't have one higher on the stack than main().

 - Maciej