diff options
author | Jean Boussier <[email protected]> | 2023-11-16 17:50:21 +0100 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2023-11-17 09:19:21 +0100 |
commit | 94c9f166632a901e563463933efd42e618432d70 () | |
tree | 948304c7e1b048d53cba547c49c0bac828066659 /shape.h | |
parent | 498b086c374608005278c0f7d105df1925e13a22 (diff) |
Refactor rb_obj_evacuate_ivs_to_hash_table
That function is a bit too low level to called from multiple places. It's always used in tandem with `rb_shape_set_too_complex` and both have to know how the object is laid out to update the `iv_ptr`. So instead we can provide two higher level function: - `rb_obj_copy_ivs_to_hash_table` to prepare a `st_table` from an arbitrary oject. - `rb_obj_convert_to_too_complex` to assign the new `st_table` to the old object, and safely free the old `iv_ptr`. Unfortunately both can't be combined into one, because `rb_obj_copy_ivar` need `rb_obj_copy_ivs_to_hash_table` to copy from one object to another.
-rw-r--r-- | shape.h | 1 |
1 files changed, 0 insertions, 1 deletions
@@ -226,7 +226,6 @@ rb_shape_t *rb_shape_traverse_from_new_root(rb_shape_t *initial_shape, rb_shape_ bool rb_shape_set_shape_id(VALUE obj, shape_id_t shape_id); VALUE rb_obj_debug_shape(VALUE self, VALUE obj); -void rb_shape_set_too_complex(VALUE obj); // For ext/objspace RUBY_SYMBOL_EXPORT_BEGIN |