summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-03-25 07:36:47 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-03-25 07:36:47 -0700
commit9d550390e5e3e85daffc0d430abad8291d472380 (patch)
tree0acd012a0b8f8f28628a4834191bb183ab6f0020 /src/codegen.c
parent2d77dcc9bc91a1d975640c6f97a74279e1f1355e (diff)
parented2da91d12f0b35d223e03cae91c7556c43fb6f9 (diff)
downloadmruby-9d550390e5e3e85daffc0d430abad8291d472380.tar.gz
mruby-9d550390e5e3e85daffc0d430abad8291d472380.zip
Merge pull request #1065 from monaka/pr-reduce-stdio-dependency
Reduce stdio dependency
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 5b86c90a9..e8fcce5c2 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1848,12 +1848,13 @@ codegen(codegen_scope *s, node *tree, int val)
case NODE_BACK_REF:
{
- char buf[4];
- int len;
+ char buf[2] = { '$' };
+ mrb_value str;
int sym;
- len = snprintf(buf, sizeof(buf), "$%c", (int)(intptr_t)tree);
- sym = new_sym(s, mrb_intern2(s->mrb, buf, len));
+ buf[1] = (char)(intptr_t)tree;
+ str = mrb_str_new(s->mrb, buf, 2);
+ sym = new_sym(s, mrb_intern_str(s->mrb, str));
genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym));
push();
}
@@ -1861,12 +1862,14 @@ codegen(codegen_scope *s, node *tree, int val)
case NODE_NTH_REF:
{
- char buf[4];
- int len;
int sym;
+ mrb_state *mrb = s->mrb;
+ mrb_value fix = mrb_fixnum_value((intptr_t)tree);
+ mrb_value str = mrb_str_buf_new(mrb, 4);
- len = snprintf(buf, sizeof(buf), "$%d", (int)(intptr_t)tree);
- sym = new_sym(s, mrb_intern2(s->mrb, buf, len));
+ mrb_str_buf_cat(mrb, str, "$", 1);
+ mrb_str_buf_append(mrb, str, mrb_fix2str(mrb, fix, 10));
+ sym = new_sym(s, mrb_intern_str(mrb, str));
genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym));
push();
}