Skip to content

Commit 4e0dacb

Browse files
committed
wip
1 parent 3aee7b9 commit 4e0dacb

File tree

3 files changed

+7
-13
lines changed

3 files changed

+7
-13
lines changed

imemo.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -408,14 +408,6 @@ rb_imemo_mark_and_move(VALUE obj, bool reference_updating)
408408
break;
409409
}
410410
case imemo_tmpbuf: {
411-
const rb_imemo_tmpbuf_t *m = (const rb_imemo_tmpbuf_t *)obj;
412-
413-
if (!reference_updating) {
414-
do {
415-
rb_gc_mark_locations(m->ptr, m->ptr + m->cnt);
416-
} while ((m = m->next) != NULL);
417-
}
418-
419411
break;
420412
}
421413
default:

process.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2653,13 +2653,13 @@ rb_execarg_init(int argc, const VALUE *orig_argv, int accept_shell, VALUE execar
26532653
struct rb_execarg *eargp = rb_execarg_get(execarg_obj);
26542654
VALUE prog, ret;
26552655
VALUE env = Qnil, opthash = Qnil;
2656-
VALUE argv_buf;
2657-
VALUE *argv = ALLOCV_N(VALUE, argv_buf, argc);
2658-
MEMCPY(argv, orig_argv, VALUE, argc);
2656+
VALUE argv_buf = rb_ary_hidden_new(argc);
2657+
rb_ary_cat(argv_buf, orig_argv, argc);
2658+
VALUE *argv = (VALUE *)RARRAY_CONST_PTR(argv_buf);
26592659
prog = rb_exec_getargs(&argc, &argv, accept_shell, &env, &opthash);
26602660
rb_exec_fillarg(prog, argc, argv, env, opthash, execarg_obj);
2661-
ALLOCV_END(argv_buf);
26622661
ret = eargp->use_shell ? eargp->invoke.sh.shell_script : eargp->invoke.cmd.command_name;
2662+
RB_GC_GUARD(argv_buf);
26632663
RB_GC_GUARD(execarg_obj);
26642664
return ret;
26652665
}

vm_insnhelper.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3858,7 +3858,9 @@ vm_call_cfunc_other(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, str
38583858
VM_ASSERT(RB_TYPE_P(argv_ary, T_ARRAY));
38593859
VM_ASSERT(RBASIC_CLASS(argv_ary) == 0); // hidden ary
38603860

3861-
return vm_call_cfunc_with_frame_(ec, reg_cfp, calling, argc, argv, stack_bottom);
3861+
VALUE ret = vm_call_cfunc_with_frame_(ec, reg_cfp, calling, argc, argv, stack_bottom);
3862+
RB_GC_GUARD(argv_ary);
3863+
return ret;
38623864
}
38633865
else {
38643866
CC_SET_FASTPATH(calling->cc, vm_call_cfunc_with_frame, !rb_splat_or_kwargs_p(ci) && !calling->kw_splat && !(vm_ci_flag(ci) & VM_CALL_FORWARDING));

0 commit comments

Comments
 (0)