diff options
| author | Masaki Muranaka <[email protected]> | 2013-03-18 23:07:17 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2013-03-18 23:29:11 +0900 |
| commit | 3f3568a2c8e809578bd028a1f4cdbea847b7f08a (patch) | |
| tree | eea887df0c89acd00554c52ceec48be94a0bd3ce /src | |
| parent | 632875a61847a16beff5159bbf67e1bbee5bc91f (diff) | |
| download | mruby-3f3568a2c8e809578bd028a1f4cdbea847b7f08a.tar.gz mruby-3f3568a2c8e809578bd028a1f4cdbea847b7f08a.zip | |
Simplify conditional expressions. This is for speed tuning.
Diffstat (limited to 'src')
| -rw-r--r-- | src/vm.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -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, ®s[a], ci->argc+1); |
