summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean Boussier <[email protected]>2025-05-08 20:30:30 +0200
committerJean Boussier <[email protected]>2025-05-09 10:22:51 +0200
commite0200cfba03bf7d23b6e298c35ca2636cbbdbd91 (patch)
treef38ade682e862be72229da0209e2372973306652
parent3f7c0af05191c6120db1617fef1d5be18151dfe6 (diff)
Refactor `rb_shape_transition_shape_remove_ivar` to not take a shape pointer
It's more consistent with other transition functions.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/13283
-rw-r--r--shape.c4
-rw-r--r--shape.h2
-rw-r--r--variable.c4
3 files changed, 5 insertions, 5 deletions
diff --git a/shape.c b/shape.c
index 886e2d259d..a7b68c05a3 100644
--- a/shape.c
+++ b/shape.c
@@ -645,8 +645,10 @@ remove_shape_recursive(rb_shape_t *shape, ID id, rb_shape_t **removed_shape)
}
bool
-rb_shape_transition_shape_remove_ivar(VALUE obj, ID id, rb_shape_t *shape, VALUE *removed)
+rb_shape_transition_remove_ivar(VALUE obj, ID id, VALUE *removed)
{
+ rb_shape_t *shape = rb_shape_get_shape(obj);
+
if (UNLIKELY(rb_shape_too_complex_p(shape))) {
return false;
}
diff --git a/shape.h b/shape.h
index 668e0e1eda..b543fdd960 100644
--- a/shape.h
+++ b/shape.h
@@ -167,7 +167,7 @@ rb_shape_t *rb_shape_get_shape(VALUE obj);
bool rb_shape_frozen_shape_p(rb_shape_t *shape);
shape_id_t rb_shape_transition_frozen(VALUE obj);
shape_id_t rb_shape_transition_complex(VALUE obj);
-bool rb_shape_transition_shape_remove_ivar(VALUE obj, ID id, rb_shape_t *shape, VALUE *removed);
+bool rb_shape_transition_remove_ivar(VALUE obj, ID id, VALUE *removed);
rb_shape_t *rb_shape_get_next(rb_shape_t *shape, VALUE obj, ID id);
rb_shape_t *rb_shape_get_next_no_warnings(rb_shape_t *shape, VALUE obj, ID id);
rb_shape_t *rb_shape_object_id_shape(VALUE obj);
diff --git a/variable.c b/variable.c
index f914e5a8f8..92206e4b11 100644
--- a/variable.c
+++ b/variable.c
@@ -1460,13 +1460,11 @@ rb_ivar_delete(VALUE obj, ID id, VALUE undef)
rb_check_frozen(obj);
VALUE val = undef;
- rb_shape_t *shape = rb_shape_get_shape(obj);
-
if (BUILTIN_TYPE(obj) == T_CLASS || BUILTIN_TYPE(obj) == T_MODULE) {
IVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR(id);
}
- if (!rb_shape_transition_shape_remove_ivar(obj, id, shape, &val)) {
+ if (!rb_shape_transition_remove_ivar(obj, id, &val)) {
if (!rb_shape_obj_too_complex_p(obj)) {
rb_evict_fields_to_hash(obj);
}