ruby/gc
Peter Zhu e15b454bc3 Simplify how finalizers are ran at shutdown
We don't need to build a linked list from the finalizer table and
instead we can just run the finalizers by iterating the ST table.

This also improves the performance at shutdown, for example:

    1_000_000.times.map do
      o = Object.new
      ObjectSpace.define_finalizer(o, proc { })
      o
    end

Before:

    Time (mean ± σ):      1.722 s ±  0.056 s    [User: 1.597 s, System: 0.113 s]
    Range (min … max):    1.676 s …  1.863 s    10 runs

After:

    Time (mean ± σ):      1.538 s ±  0.025 s    [User: 1.437 s, System: 0.093 s]
    Range (min … max):    1.510 s …  1.586 s    10 runs
2024-08-21 11:12:07 -04:00
..
default.c Simplify how finalizers are ran at shutdown 2024-08-21 11:12:07 -04:00
gc.h Fix GC_ASSERT for gc.c and gc/default.c 2024-08-15 10:38:24 -04:00
gc_impl.h Remove rb_gc_impl_objspace_mark 2024-08-09 10:27:40 -04:00