summaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-18 15:48:55 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-18 15:48:55 +0000
commit823a4fe7d1d8ebb6dd62c815dad4d57c01946add (patch)
tree69b89b5280c5b86fa4d09bce1873a30d5f4756b5 /compile.c
parentce7ad3a84eb4fb063f008073fd926298aedb6f2a (diff)
compile.c: use ALLOCV_N
* compile.c (ibf_dump_object_list): allocate known-size array by ALLOCV_N instead of rb_ary_tmp_new. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/compile.c b/compile.c
index 7b3bd00137..c3afd6c121 100644
--- a/compile.c
+++ b/compile.c
@@ -9295,21 +9295,23 @@ ibf_load_object(const struct ibf_load *load, VALUE object_index)
static void
ibf_dump_object_list(struct ibf_dump *dump, struct ibf_header *header)
{
- VALUE list = rb_ary_tmp_new(RARRAY_LEN(dump->obj_list));
+ VALUE listv;
+ ibf_offset_t *list = ALLOCV_N(ibf_offset_t, listv, RARRAY_LEN(dump->obj_list));
int i, size;
for (i=0; i<RARRAY_LEN(dump->obj_list); i++) {
VALUE obj = RARRAY_AREF(dump->obj_list, i);
ibf_offset_t offset = lbf_dump_object_object(dump, obj);
- rb_ary_push(list, UINT2NUM(offset));
+ list[i] = offset;
}
size = i;
header->object_list_offset = ibf_dump_pos(dump);
for (i=0; i<size; i++) {
- ibf_offset_t offset = NUM2UINT(RARRAY_AREF(list, i));
+ ibf_offset_t offset = list[i];
IBF_WV(offset);
}
+ ALLOCV_END(listv);
header->object_list_size = size;
}