summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c16
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");