gc.c: re-design the heap structure. (1) The heap is consists of a set of slots. (2) Each "slot" has a "slot_body". slot::start and slot::limit specify RVALUE beginning address and number of RVALUE in a "slot_body". (3) "slot_body" contains a pointer to slot (slot_body::header::slot) and an array of RVALUE. (4) heap::sorted is an array of "slots", sorted by an address of slot::body. See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design for more details (figure).
(1) The heap is consists of a set of slots.
(2) Each "slot" has a "slot_body".
slot::start and slot::limit specify RVALUE beginning address
and number of RVALUE in a "slot_body".
(3) "slot_body" contains a pointer to slot (slot_body::header::slot)
and an array of RVALUE.
(4) heap::sorted is an array of "slots", sorted by an address of
slot::body.
See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design
for more details (figure).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e