summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-08-02 00:43:38 +0900
committerYukihiro Matsumoto <[email protected]>2012-08-02 00:43:38 +0900
commit47ff5a06430a3e8cf00f53a585cef1013ff8011d (patch)
tree64346f534fc53eb36b4eade03663675a285e7494 /src
parent1ff6dfd081664625d71c0f6fcb3c2c1ae58ef1f5 (diff)
downloadmruby-47ff5a06430a3e8cf00f53a585cef1013ff8011d.tar.gz
mruby-47ff5a06430a3e8cf00f53a585cef1013ff8011d.zip
move OP_LOADNIL just before OP_SEND to improve performance on some platforms
Diffstat (limited to 'src')
-rw-r--r--src/vm.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/vm.c b/src/vm.c
index 130e56071..9075f74bd 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -481,14 +481,6 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
NEXT;
}
- CASE(OP_LOADNIL) {
- /* A B R(A) := nil */
- int a = GETARG_A(i);
-
- SET_NIL_VALUE(regs[a]);
- NEXT;
- }
-
CASE(OP_LOADSELF) {
/* A R(A) := self */
regs[GETARG_A(i)] = mrb->stack[0];
@@ -680,6 +672,14 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
NEXT;
}
+ CASE(OP_LOADNIL) {
+ /* A B R(A) := nil */
+ int a = GETARG_A(i);
+
+ SET_NIL_VALUE(regs[a]);
+ NEXT;
+ }
+
L_SEND:
CASE(OP_SEND) {
/* A B C R(A) := call(R(A),Sym(B),R(A+1),... ,R(A+C-1)) */