It explains how to write a ruby extension in C, and explains how to
make the GC work with the new types you’ve defined.
However, it leaves me with one question:
What happens if you create a new object inside the C code, and this
triggers a garbage collection?
When you create new objects in the C code, are they automatically
added to the ‘current’ scope, so that the GC sees them? If so, then
how does it know when to remove them from the scope, and if not, then
what would happen if a GC cycle was triggered during C code execution?
In message “Re: Ruby Extension Code in C, GC Question”
on Mon, 3 Mar 2008 11:19:56 +0900, Pie Squared [email protected] writes:
|What happens if you create a new object inside the C code, and this
|triggers a garbage collection?
|When you create new objects in the C code, are they automatically
|added to the ‘current’ scope, so that the GC sees them? If so, then
|how does it know when to remove them from the scope, and if not, then
|what would happen if a GC cycle was triggered during C code execution?
The object will be marked by Ruby’s conservative garbage collector,
which marks objects seemed to be referenced from system stack.