We're allocating as we fill in the ISEQ, which could cause GC, so we need to be careful values are marked and use write barriers. When we were loading values here we were issuing write barriers, however if the iseq was to be marked at t...jhawthorn (John Hawthorn)
This could contain other hidden objects, and so needs to be hidden itself so as to not be seen by ObjectSpace.each_object 1000.times { ObjectSpace.each_object(Hash){|o| puts o.inspect; ObjectSpace.reachable_objects_from(Class) } }' ...jhawthorn (John Hawthorn)
Applied in changeset commit:git|f2d0ef269b47af7d0e658016903bd8917c32899a. ---------- Add and use rb_ivar_foreach_buffered Previously, rb_ivar_foreach would walk up the shape tree, but yield instance variables to the callback as it went...jhawthorn (John Hawthorn)
Previously this branch forgot to assign iv_count when used with a generic ivar which is too_complex, which could result in it incorrectly returning 0.jhawthorn (John Hawthorn)
Previously, rb_ivar_foreach would walk up the shape tree, but yield instance variables to the callback as it went. If the object shape was modified during this callback, particularly with removing an instance variable, it could result in...jhawthorn (John Hawthorn)