Skip to content
  • John Hawthorn's avatar
    b99833ba
    Use a monotonically increasing number for object_id · b99833ba
    John Hawthorn authored
    
    
    This changes object_id from being based on the objects location in
    memory (or a nearby memory location in the case of a conflict) to be
    based on an always increasing number.
    
    This number is a Ruby Integer which allows it to overflow the size of a
    pointer without issue (very unlikely to happen in real programs
    especially on 64-bit, but a nice guarantee).
    
    This changes obj_to_id_tbl and id_to_obj_tbl to both be maps of Ruby
    objects to Ruby objects (previously they were Ruby object to C integer)
    which simplifies updating them after compaction as we can run them
    through gc_update_table_refs.
    
    Co-authored-by: default avatarAaron Patterson <tenderlove@ruby-lang.org>
    b99833ba
    Use a monotonically increasing number for object_id
    John Hawthorn authored
    
    
    This changes object_id from being based on the objects location in
    memory (or a nearby memory location in the case of a conflict) to be
    based on an always increasing number.
    
    This number is a Ruby Integer which allows it to overflow the size of a
    pointer without issue (very unlikely to happen in real programs
    especially on 64-bit, but a nice guarantee).
    
    This changes obj_to_id_tbl and id_to_obj_tbl to both be maps of Ruby
    objects to Ruby objects (previously they were Ruby object to C integer)
    which simplifies updating them after compaction as we can run them
    through gc_update_table_refs.
    
    Co-authored-by: default avatarAaron Patterson <tenderlove@ruby-lang.org>
Loading