summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-03-24 13:49:19 +0900
committerMasaki Muranaka <[email protected]>2013-03-24 13:49:19 +0900
commit3401ed7bab639f6c3b820cf7d15b1c7417d4b585 (patch)
treec9140fde99304b5c48cad70ab1f04fc69b38a703 /src/codegen.c
parent29d84a163508b6246d6ebb3fe088bb73682c07e7 (diff)
downloadmruby-3401ed7bab639f6c3b820cf7d15b1c7417d4b585.tar.gz
mruby-3401ed7bab639f6c3b820cf7d15b1c7417d4b585.zip
Reduce using snprintf(). They can replace by mruby API.
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();
}