codegen.c: remove code duplication from NODE_ARRAY.

This commit is contained in:
Yukihiro "Matz" Matsumoto
2021-08-05 16:59:32 +09:00
parent 9cb44f5ae3
commit 7ecc16f97a
+1 -10
View File
@@ -1480,6 +1480,7 @@ gen_values(codegen_scope *s, node *t, int val, int extra)
if (is_splat && n == 0 && nint(t->car->cdr->car) == NODE_ARRAY) {
codegen(s, t->car->cdr, VAL);
pop();
t = t->cdr;
}
else {
pop_n(n);
@@ -1489,17 +1490,7 @@ gen_values(codegen_scope *s, node *t, int val, int extra)
else {
genop_2(s, OP_ARRAY, cursp(), n);
}
push();
codegen(s, t->car, VAL);
pop(); pop();
if (is_splat) {
genop_1(s, OP_ARYCAT, cursp());
}
else {
genop_1(s, OP_ARYPUSH, cursp());
}
}
t = t->cdr;
while (t) {
push();
codegen(s, t->car, VAL);