summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-01-09 15:39:23 -0500
committerPeter Zhu <peter@peterzhu.ca>2023-01-10 08:59:38 -0500
commit2861c8deafe5e513fc59048198cbe70359d0f16d (patch)
treeeda0c03ddcd95264b05c62df45a074abfe941c3d /array.c
parent97f8f2c4703361624823ef76d6cfe804ba1e651b (diff)
downloadruby-2861c8deafe5e513fc59048198cbe70359d0f16d.tar.gz
Remove ARY_SET_SHARED
We don't need ARY_SET_SHARED since we already have rb_ary_set_shared.
Diffstat (limited to 'array.c')
-rw-r--r--array.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/array.c b/array.c
index 654c79a44d..bef8c34f3e 100644
--- a/array.c
+++ b/array.c
@@ -161,16 +161,6 @@ should_be_T_ARRAY(VALUE ary)
RARRAY(ary)->as.heap.aux.capa = (n); \
} while (0)
-#define ARY_SET_SHARED(ary, value) do { \
- const VALUE _ary_ = (ary); \
- const VALUE _value_ = (value); \
- assert(!ARY_EMBED_P(_ary_)); \
- assert(ARY_SHARED_P(_ary_)); \
- assert(!OBJ_FROZEN(_ary_)); \
- assert(ARY_SHARED_ROOT_P(_value_) || OBJ_FROZEN(_value_)); \
- RB_OBJ_WRITE(_ary_, &RARRAY(_ary_)->as.heap.aux.shared_root, _value_); \
-} while (0)
-
#define ARY_SHARED_ROOT_OCCUPIED(ary) (!OBJ_FROZEN(ary) && ARY_SHARED_ROOT_REFCNT(ary) == 1)
#define ARY_SET_SHARED_ROOT_REFCNT(ary, value) do { \
assert(ARY_SHARED_ROOT_P(ary)); \
@@ -643,10 +633,15 @@ rb_ary_increment_share(VALUE shared_root)
static void
rb_ary_set_shared(VALUE ary, VALUE shared_root)
{
+ assert(!ARY_EMBED_P(ary));
+ assert(!OBJ_FROZEN(ary));
+ assert(ARY_SHARED_ROOT_P(shared_root) || OBJ_FROZEN(shared_root));
+
rb_ary_increment_share(shared_root);
FL_SET_SHARED(ary);
+ RB_OBJ_WRITE(ary, &RARRAY(ary)->as.heap.aux.shared_root, shared_root);
+
RB_DEBUG_COUNTER_INC(obj_ary_shared_create);
- ARY_SET_SHARED(ary, shared_root);
}
static inline void
@@ -1082,10 +1077,7 @@ ary_make_shared(VALUE ary)
ARY_SET_LEN(shared, capa);
ary_mem_clear(shared, len, capa - len);
- ARY_SET_SHARED_ROOT_REFCNT(shared, 1);
- FL_SET_SHARED(ary);
- RB_DEBUG_COUNTER_INC(obj_ary_shared_create);
- ARY_SET_SHARED(ary, shared);
+ rb_ary_set_shared(ary, shared);
ary_verify(shared);
ary_verify(ary);