summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-07-13 10:36:49 -0400
committerPeter Zhu <peter@peterzhu.ca>2023-07-13 14:48:14 -0400
commit62ecf78b87c29038acaee427a4e9bd149fb876fe (patch)
tree14424c8492fd3a0a2af73311d8cc2a13652e9317 /array.c
parent87e1486d31b26749cc2768ca299faed1b7629d57 (diff)
Don't pass array into ary_heap_alloc
We no longer need a reference to the array when allocating the buffer because we no longer allocate through the transient heap.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/8071
Diffstat (limited to 'array.c')
-rw-r--r--array.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/array.c b/array.c
index c216c05d61..d5e9d62c37 100644
--- a/array.c
+++ b/array.c
@@ -351,7 +351,7 @@ ary_memcpy(VALUE ary, long beg, long argc, const VALUE *argv)
}
static VALUE *
-ary_heap_alloc(VALUE ary, size_t capa)
+ary_heap_alloc(size_t capa)
{
return ALLOC_N(VALUE, capa);
}
@@ -405,7 +405,7 @@ ary_resize_capa(VALUE ary, long capacity)
size_t new_capa = capacity;
if (ARY_EMBED_P(ary)) {
long len = ARY_EMBED_LEN(ary);
- VALUE *ptr = ary_heap_alloc(ary, capacity);
+ VALUE *ptr = ary_heap_alloc(capacity);
MEMCPY(ptr, ARY_EMBED_PTR(ary), VALUE, len);
FL_UNSET_EMBED(ary);
@@ -556,7 +556,7 @@ rb_ary_cancel_sharing(VALUE ary)
rb_ary_decrement_share(shared_root);
}
else {
- VALUE *ptr = ary_heap_alloc(ary, len);
+ VALUE *ptr = ary_heap_alloc(len);
MEMCPY(ptr, ARY_HEAP_PTR(ary), VALUE, len);
rb_ary_unshare(ary);
ARY_SET_CAPA(ary, len);
@@ -696,7 +696,7 @@ empty_ary_alloc(VALUE klass)
static VALUE
ary_new(VALUE klass, long capa)
{
- VALUE ary,*ptr;
+ VALUE ary;
if (capa < 0) {
rb_raise(rb_eArgError, "negative array size (or size too big)");
@@ -715,8 +715,7 @@ ary_new(VALUE klass, long capa)
ARY_SET_CAPA(ary, capa);
assert(!ARY_EMBED_P(ary));
- ptr = ary_heap_alloc(ary, capa);
- ARY_SET_PTR(ary, ptr);
+ ARY_SET_PTR(ary, ary_heap_alloc(capa));
ARY_SET_HEAP_LEN(ary, 0);
}
@@ -801,7 +800,7 @@ ec_ary_alloc_heap(rb_execution_context_t *ec, VALUE klass)
static VALUE
ec_ary_new(rb_execution_context_t *ec, VALUE klass, long capa)
{
- VALUE ary,*ptr;
+ VALUE ary;
if (capa < 0) {
rb_raise(rb_eArgError, "negative array size (or size too big)");
@@ -820,8 +819,7 @@ ec_ary_new(rb_execution_context_t *ec, VALUE klass, long capa)
ARY_SET_CAPA(ary, capa);
assert(!ARY_EMBED_P(ary));
- ptr = ary_heap_alloc(ary, capa);
- ARY_SET_PTR(ary, ptr);
+ ARY_SET_PTR(ary, ary_heap_alloc(capa));
ARY_SET_HEAP_LEN(ary, 0);
}
@@ -921,9 +919,7 @@ ary_make_shared(VALUE ary)
FL_SET_SHARED_ROOT(shared);
if (ARY_EMBED_P(ary)) {
- /* Cannot use ary_heap_alloc because we don't want to allocate
- * on the transient heap. */
- VALUE *ptr = ALLOC_N(VALUE, capa);
+ VALUE *ptr = ary_heap_alloc(capa);
ARY_SET_PTR(shared, ptr);
ary_memcpy(shared, 0, len, RARRAY_CONST_PTR(ary));
@@ -4537,7 +4533,7 @@ rb_ary_replace(VALUE copy, VALUE orig)
* contents of orig. */
else if (ARY_EMBED_P(orig)) {
long len = ARY_EMBED_LEN(orig);
- VALUE *ptr = ary_heap_alloc(copy, len);
+ VALUE *ptr = ary_heap_alloc(len);
FL_UNSET_EMBED(copy);
ARY_SET_PTR(copy, ptr);