From 38941772333d5d9298b76dfc8a97c5b076daedc2 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Wed, 13 Jun 2012 15:37:11 +0900 Subject: generate optimized OP_DIV instruction --- src/codegen.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/codegen.c b/src/codegen.c index e31e722eb..e76443a20 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -648,6 +648,9 @@ gen_call(codegen_scope *s, node *tree, mrb_sym name, int sp, int val) else if (!noop && name[0] == '*' && strlen(name) == 1) { genop(s, MKOP_ABC(OP_MUL, cursp(), idx, n)); } + else if (!noop && name[0] == '/' && strlen(name) == 1) { + genop(s, MKOP_ABC(OP_DIV, cursp(), idx, n)); + } else if (!noop && name[0] == '<' && strlen(name) == 1) { genop(s, MKOP_ABC(OP_LT, cursp(), idx, n)); } @@ -2163,6 +2166,11 @@ codedump(mrb_state *mrb, int n) mrb_sym2name(mrb, irep->syms[GETARG_B(c)]), GETARG_C(c)); break; + case OP_DIV: + printf("OP_DIV\tR%d\t'%s'\t%d\n", GETARG_A(c), + mrb_sym2name(mrb, irep->syms[GETARG_B(c)]), + GETARG_C(c)); + break; case OP_LT: printf("OP_LT\tR%d\t'%s'\t%d\n", GETARG_A(c), mrb_sym2name(mrb, irep->syms[GETARG_B(c)]), -- cgit v1.2.3