diff options
author | Jean Boussier <[email protected]> | 2025-04-21 16:16:07 +0900 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2025-05-08 07:58:05 +0200 |
commit | f48e45d1e9c4412d5f3ee49241d0b9359651ce7c (patch) | |
tree | 88e53f6ef5e926b87f6ab620ca6ff23bf15380f3 /internal/variable.h | |
parent | d34c15054708c84e9d3305ede0752820b42ac498 (diff) |
Move `object_id` in object fields.
And get rid of the `obj_to_id_tbl`
It's no longer needed, the `object_id` is now stored inline
in the object alongside instance variables.
We still need the inverse table in case `_id2ref` is invoked, but
we lazily build it by walking the heap if that happens.
The `object_id` concern is also no longer a GC implementation
concern, but a generic implementation.
Co-Authored-By: Matt Valentine-House <[email protected]>
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/13159
Diffstat (limited to 'internal/variable.h')
-rw-r--r-- | internal/variable.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/internal/variable.h b/internal/variable.h index f0d714a20f..bb6324698b 100644 --- a/internal/variable.h +++ b/internal/variable.h @@ -48,8 +48,12 @@ VALUE rb_mod_set_temporary_name(VALUE, VALUE); struct gen_fields_tbl; int rb_gen_fields_tbl_get(VALUE obj, ID id, struct gen_fields_tbl **fields_tbl); void rb_obj_copy_ivs_to_hash_table(VALUE obj, st_table *table); -void rb_obj_convert_to_too_complex(VALUE obj, st_table *table); +void rb_obj_init_too_complex(VALUE obj, st_table *table); void rb_evict_ivars_to_hash(VALUE obj); +void rb_evict_fields_to_hash(VALUE obj); +VALUE rb_field_get(VALUE obj, rb_shape_t *target_shape); +void rb_ivar_set_internal(VALUE obj, ID id, VALUE val); +void rb_obj_field_set(VALUE obj, rb_shape_t *target_shape, VALUE val); RUBY_SYMBOL_EXPORT_BEGIN /* variable.c (export) */ |