summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorLian Cheng <[email protected]>2012-12-12 21:05:02 +0800
committerLian Cheng <[email protected]>2012-12-12 21:05:02 +0800
commit2fa0be2a3013478275fb392b267a99ae2425be65 (patch)
tree25f05c3212ddc635a54dc26b70bea04a86b1f683 /src/codegen.c
parent975adbfb5fde10f797480efb3f97b6d8bf659443 (diff)
downloadmruby-2fa0be2a3013478275fb392b267a99ae2425be65.tar.gz
mruby-2fa0be2a3013478275fb392b267a99ae2425be65.zip
Call mrb_gc_arena_save/mrb_gc_arena_restore instead of manipulating arena index directly
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 75ccce648..4244370e5 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1812,10 +1812,10 @@ codegen(codegen_scope *s, node *tree, int val)
if (val) {
char *p = (char*)tree->car;
size_t len = (intptr_t)tree->cdr;
- int ai = s->mrb->arena_idx;
+ int ai = mrb_gc_arena_save(s->mrb);
int off = new_lit(s, mrb_str_new(s->mrb, p, len));
- s->mrb->arena_idx = ai;
+ mrb_gc_arena_restore(s->mrb, ai);
genop(s, MKOP_ABx(OP_STRING, cursp(), off));
push();
}
@@ -2083,7 +2083,7 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *lv)
p->lv = lv;
p->sp += node_len(lv)+1; /* add self */
p->nlocals = p->sp;
- p->ai = mrb->arena_idx;
+ p->ai = mrb_gc_arena_save(mrb);
p->filename = prev->filename;
if (p->filename) {
@@ -2118,7 +2118,7 @@ scope_finish(codegen_scope *s)
irep->nlocals = s->nlocals;
irep->nregs = s->nregs;
- mrb->arena_idx = s->ai;
+ mrb_gc_arena_restore(mrb, s->ai);
mrb_pool_close(s->mpool);
}