diff options
| -rw-r--r-- | src/codegen.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/codegen.c b/src/codegen.c index b8500292e..e31e722eb 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -645,6 +645,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_SUB, cursp(), idx, n)); } + 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_LT, cursp(), idx, n)); } @@ -657,6 +660,9 @@ gen_call(codegen_scope *s, node *tree, mrb_sym name, int sp, int val) else if (!noop && name[0] == '>' && strlen(name) == 2 && name[1] == '=') { genop(s, MKOP_ABC(OP_GE, cursp(), idx, n)); } + else if (!noop && name[0] == '=' && strlen(name) == 2 && name[1] == '=') { + genop(s, MKOP_ABC(OP_EQ, cursp(), idx, n)); + } else { if (sendv) n = CALL_MAXARGS; genop(s, MKOP_ABC(OP_SEND, cursp(), idx, n)); @@ -2152,6 +2158,11 @@ codedump(mrb_state *mrb, int n) mrb_sym2name(mrb, irep->syms[GETARG_B(c)]), GETARG_C(c)); break; + case OP_MUL: + printf("OP_MUL\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)]), @@ -2172,6 +2183,11 @@ codedump(mrb_state *mrb, int n) mrb_sym2name(mrb, irep->syms[GETARG_B(c)]), GETARG_C(c)); break; + case OP_EQ: + printf("OP_EQ\tR%d\t'%s'\t%d\n", GETARG_A(c), + mrb_sym2name(mrb, irep->syms[GETARG_B(c)]), + GETARG_C(c)); + break; case OP_STOP: printf("OP_STOP\n"); |
