From bbc237044d0fb1792dff8c5d2466f4e644821239 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sun, 27 Apr 2014 09:22:35 +0900 Subject: NODE_SUPER should preserve stack region for block; ref #2136 --- src/codegen.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/codegen.c b/src/codegen.c index 6c2ed41c9..0cecc8d28 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1688,6 +1688,7 @@ codegen(codegen_scope *s, node *tree, int val) } else { genop(s, MKOP_A(OP_LOADNIL, cursp())); + push(); pop(); } pop_n(n+1); if (sendv) n = CALL_MAXARGS; @@ -1709,12 +1710,12 @@ codegen(codegen_scope *s, node *tree, int val) } if (s2) ainfo = s2->ainfo; genop(s, MKOP_ABx(OP_ARGARY, cursp(), (ainfo<<4)|(lv & 0xf))); + push(); push(); pop(); /* ARGARY pushes two values */ if (tree && tree->cdr) { - push(); codegen(s, tree->cdr, VAL); - pop_n(2); + pop(); } - pop(); + pop(); pop(); genop(s, MKOP_ABC(OP_SUPER, cursp(), 0, CALL_MAXARGS)); if (val) push(); } -- cgit v1.2.3