diff options
author | Jean Boussier <[email protected]> | 2025-04-21 12:01:01 +0900 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2025-05-08 07:58:05 +0200 |
commit | d34c15054708c84e9d3305ede0752820b42ac498 (patch) | |
tree | f961697097f2a560edf636701809e5d1c96e66ee /object.c | |
parent | 6c9b3ac232fc65f6019af28ec836aa59b8657b70 (diff) |
shape.c: refactor frozen shape to no longer be final
This opens the door to store more informations in shapes, such
as the `object_id` or object address in case it has been observed
and the object has to be moved.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/13159
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -358,7 +358,7 @@ rb_obj_copy_ivar(VALUE dest, VALUE obj) rb_shape_t *initial_shape = rb_shape_get_shape(dest); - if (initial_shape->heap_index != src_shape->heap_index) { + if (initial_shape->heap_index != src_shape->heap_index || !rb_shape_canonical_p(src_shape)) { RUBY_ASSERT(initial_shape->type == SHAPE_T_OBJECT); shape_to_set_on_dest = rb_shape_rebuild_shape(initial_shape, src_shape); |