summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/codegen.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/codegen.c b/src/codegen.c
index c6afa0184..eefd9f045 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1205,6 +1205,7 @@ codegen(codegen_scope *s, node *tree, int val)
pop();
genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern(s->mrb, "===")), 1));
}
+ pop();
tmp = new_label(s);
genop(s, MKOP_AsBx(OP_JMPIF, cursp(), pos2));
pos2 = tmp;
@@ -1215,7 +1216,6 @@ codegen(codegen_scope *s, node *tree, int val)
genop(s, MKOP_sBx(OP_JMP, 0));
dispatch_linked(s, pos2);
}
- pop(); /* pop HEAD */
codegen(s, tree->car->cdr, val);
if (val) pop();
tmp = new_label(s);
@@ -1223,11 +1223,11 @@ codegen(codegen_scope *s, node *tree, int val)
pos3 = tmp;
if (pos1) dispatch(s, pos1);
tree = tree->cdr;
- push(); /* push HEAD */
}
- pop(); /* pop HEAD */
- genop(s, MKOP_A(OP_LOADNIL, cursp()));
- if (val) push();
+ if (val) {
+ genop(s, MKOP_A(OP_LOADNIL, cursp()));
+ push();
+ }
if (pos3) dispatch_linked(s, pos3);
}
break;