summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-10-23 14:15:29 +0900
committerYukihiro Matsumoto <[email protected]>2012-10-23 14:15:29 +0900
commit32f9cdc97d769554f01543ede73a702e0c973346 (patch)
tree18cc7e0d0d880fb4284bbf9db7651cc0ac8962e9 /src/codegen.c
parent09376f9b2a6ce2c56f5a4fc7abb88ea4e68c59e3 (diff)
downloadmruby-32f9cdc97d769554f01543ede73a702e0c973346.tar.gz
mruby-32f9cdc97d769554f01543ede73a702e0c973346.zip
adjust regsiter stack for NODE_OP_ASGN that use OP_SEND
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/codegen.c b/src/codegen.c
index b0e6f8fd1..2d01ed701 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -853,8 +853,11 @@ gen_assignment(codegen_scope *s, node *node, int sp, int val)
case NODE_CALL:
push();
- gen_call(s, node, attrsym(s, sym(node->cdr->car)), sp, val);
- val = NOVAL; /* push should have done in gen_call() */
+ gen_call(s, node, attrsym(s, sym(node->cdr->car)), sp, NOVAL);
+ pop();
+ if (val) {
+ genop_peep(s, MKOP_AB(OP_MOVE, cursp(), sp), val);
+ }
break;
default: