summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorPaolo Bosetti <[email protected]>2012-05-29 14:32:05 -0700
committerPaolo Bosetti <[email protected]>2012-05-29 14:32:05 -0700
commitd73517877847dab5b345c7fa98091647737bbfe0 (patch)
tree6090a2df49b8093606181e5416e6aa6a5040b0ec /src/codegen.c
parent391f8dcef02cdafeb4e0acc693945acb166a8d09 (diff)
parent1e5d15dbcb977f6d197c24eca4a973ee1c5bf521 (diff)
downloadmruby-d73517877847dab5b345c7fa98091647737bbfe0.tar.gz
mruby-d73517877847dab5b345c7fa98091647737bbfe0.zip
Merge branch 'master' of git://github.com/mruby/mruby into XCode
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 087dd3165..11e9eb236 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -64,6 +64,7 @@ typedef struct scope {
int nlocals;
int nregs;
+ int ai;
int idx;
} codegen_scope;
@@ -1234,25 +1235,25 @@ codegen(codegen_scope *s, node *tree, int val)
int idx = new_msym(s, sym);
if (name[0] == '+' && strlen(name) == 1) {
- genop(s, MKOP_ABC(OP_ADD, cursp(), idx, 2));
+ genop(s, MKOP_ABC(OP_ADD, cursp(), idx, 1));
}
else if (name[0] == '-' && strlen(name) == 1) {
- genop(s, MKOP_ABC(OP_SUB, cursp(), idx, 2));
+ genop(s, MKOP_ABC(OP_SUB, cursp(), idx, 1));
}
else if (name[0] == '<' && strlen(name) == 1) {
- genop(s, MKOP_ABC(OP_LT, cursp(), idx, 2));
+ genop(s, MKOP_ABC(OP_LT, cursp(), idx, 1));
}
else if (name[0] == '<' && strlen(name) == 2 && name[1] == '=') {
- genop(s, MKOP_ABC(OP_LE, cursp(), idx, 2));
+ genop(s, MKOP_ABC(OP_LE, cursp(), idx, 1));
}
else if (name[0] == '>' && strlen(name) == 1) {
- genop(s, MKOP_ABC(OP_GT, cursp(), idx, 2));
+ genop(s, MKOP_ABC(OP_GT, cursp(), idx, 1));
}
else if (name[0] == '>' && strlen(name) == 2 && name[1] == '=') {
- genop(s, MKOP_ABC(OP_GE, cursp(), idx, 2));
+ genop(s, MKOP_ABC(OP_GE, cursp(), idx, 1));
}
else {
- genop(s, MKOP_ABC(OP_SEND, cursp(), idx, 2));
+ genop(s, MKOP_ABC(OP_SEND, cursp(), idx, 1));
}
}
gen_assignment(s, tree->car, cursp(), val);
@@ -1849,6 +1850,7 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *lv)
p->lv = lv;
p->sp += node_len(lv)+2;
p->nlocals = p->sp;
+ p->ai = mrb->arena_idx;
p->idx = mrb->irep_len++;
@@ -1882,6 +1884,7 @@ scope_finish(codegen_scope *s, int idx)
irep->nlocals = s->nlocals;
irep->nregs = s->nregs;
+ s->mrb->arena_idx = s->ai;
mrb_pool_close(s->mpool);
}