summaryrefslogtreecommitdiffhomepage
path: root/src/codegen.c
diff options
context:
space:
mode:
authorMasamitsu MURASE <[email protected]>2013-02-24 16:20:31 +0900
committerMasamitsu MURASE <[email protected]>2013-02-24 16:20:31 +0900
commitb55c6c55d28119974376f85c6a2481ff0fef690a (patch)
treeae54b87910b7b27c5e86fd050f8885b5d769619e /src/codegen.c
parentbbd50cca2f78c642517beaeccd26400798b1ec46 (diff)
downloadmruby-b55c6c55d28119974376f85c6a2481ff0fef690a.tar.gz
mruby-b55c6c55d28119974376f85c6a2481ff0fef690a.zip
Make OP_ASGN faster.
I think that `*=` and `/=` can be compiled to `OP_MUL` and `OP_DIV`.
Diffstat (limited to 'src/codegen.c')
-rw-r--r--src/codegen.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 86d61fecf..1052f6dbf 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1488,6 +1488,12 @@ codegen(codegen_scope *s, node *tree, int val)
else if (len == 1 && name[0] == '-') {
genop_peep(s, MKOP_ABC(OP_SUB, cursp(), idx, 1), val);
}
+ else if (len == 1 && name[0] == '*') {
+ genop(s, MKOP_ABC(OP_MUL, cursp(), idx, 1));
+ }
+ else if (len == 1 && name[0] == '/') {
+ genop(s, MKOP_ABC(OP_DIV, cursp(), idx, 1));
+ }
else if (len == 1 && name[0] == '<') {
genop(s, MKOP_ABC(OP_LT, cursp(), idx, 1));
}