summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-03-18 23:07:17 +0900
committerMasaki Muranaka <[email protected]>2013-03-18 23:29:11 +0900
commit3f3568a2c8e809578bd028a1f4cdbea847b7f08a (patch)
treeeea887df0c89acd00554c52ceec48be94a0bd3ce
parent632875a61847a16beff5159bbf67e1bbee5bc91f (diff)
downloadmruby-3f3568a2c8e809578bd028a1f4cdbea847b7f08a.tar.gz
mruby-3f3568a2c8e809578bd028a1f4cdbea847b7f08a.zip
Simplify conditional expressions. This is for speed tuning.
-rw-r--r--src/vm.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/vm.c b/src/vm.c
index 1179c6113..881acf4fc 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -885,8 +885,12 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
ci->mid = mid;
ci->proc = m;
ci->stackidx = mrb->stack - mrb->stbase;
- ci->argc = n;
- if (ci->argc == CALL_MAXARGS) ci->argc = -1;
+ if (n == CALL_MAXARGS) {
+ ci->argc = -1;
+ }
+ else {
+ ci->argc = n;
+ }
ci->target_class = c;
ci->pc = pc + 1;
ci->acc = a;
@@ -1023,8 +1027,12 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
ci->mid = mid;
ci->proc = m;
ci->stackidx = mrb->stack - mrb->stbase;
- ci->argc = n;
- if (ci->argc == CALL_MAXARGS) ci->argc = -1;
+ if (n == CALL_MAXARGS) {
+ ci->argc = -1;
+ }
+ else {
+ ci->argc = n;
+ }
ci->target_class = m->target_class;
ci->pc = pc + 1;
@@ -1051,7 +1059,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
pool = irep->pool;
syms = irep->syms;
ci->nregs = irep->nregs;
- if (ci->argc < 0) {
+ if (n == CALL_MAXARGS) {
stack_extend(mrb, (irep->nregs < 3) ? 3 : irep->nregs, 3);
}
else {
@@ -1341,8 +1349,12 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
ci = mrb->ci;
ci->mid = mid;
ci->target_class = m->target_class;
- ci->argc = n;
- if (ci->argc == CALL_MAXARGS) ci->argc = -1;
+ if (n == CALL_MAXARGS) {
+ ci->argc = -1;
+ }
+ else {
+ ci->argc = n;
+ }
/* move stack */
value_move(mrb->stack, &regs[a], ci->argc+1);