Can these registers be cleared without doing much damage before doing
the garbage collection, thus providing a less conservative GC.start
function (perhaps with a parameter true or false for easy selection)? I
found a function rb_gc_start in gc.c. I'm guessing this can best be done
before the rb_gc call. Or are things more complicated as they seem...
The Garbage Collector is conservative. If the address of an object
stays in some register, or even some calculation filled a register
with a number that happens to equal the address, the pointed-to object
will not be gc'ed.