From 8bfa99975c8fc9ed171549b0710cab7a395116c5 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 18 Sep 2021 12:29:58 +0900 Subject: codegen.c: unify `OP_ARYPUSH` and `OP_ARYPUSH_N`. - `OP_ARYPUSH` now takes operand for the number of pushing elements - the code generator consume the stack no more than `64` for `mruby/c` --- src/codedump.c | 8 ++------ src/vm.c | 7 +------ 2 files changed, 3 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/codedump.c b/src/codedump.c index 3128d7467..ab5804e20 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -431,12 +431,8 @@ codedump(mrb_state *mrb, const mrb_irep *irep) printf("OP_ARYCAT\tR%d\tR%d\t", a, a+1); print_lv_a(mrb, irep, a); break; - CASE(OP_ARYPUSH, B): - printf("OP_ARYPUSH\tR%d\t", a); - print_lv_a(mrb, irep, a); - break; - CASE(OP_ARYPUSH_N, BB): - printf("OP_ARYPUSH_N\tR%d\t%d\t", a, b); + CASE(OP_ARYPUSH, BB): + printf("OP_ARYPUSH\tR%d\t%d\t", a, b); print_lv_a(mrb, irep, a); break; CASE(OP_ARYDUP, B): diff --git a/src/vm.c b/src/vm.c index 5690684cb..b50354061 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2546,12 +2546,7 @@ RETRY_TRY_BLOCK: NEXT; } - CASE(OP_ARYPUSH, B) { - mrb_ary_push(mrb, regs[a], regs[a+1]); - NEXT; - } - - CASE(OP_ARYPUSH_N, BB) { + CASE(OP_ARYPUSH, BB) { for (mrb_int i=0; i