author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2012年12月22日 16:28:02 -0200 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2012年12月22日 16:28:02 -0200 |
commit | adc854f1a7fa688f4cb3882a32f087cc89b116f6 (patch) | |
tree | 21ac7ddd9b99355bb14ba42e3f4693411e318fd0 /lib | |
parent | 59255a493c517c18de633d8aa860c75d4936bb70 (diff) | |
download | lightning-adc854f1a7fa688f4cb3882a32f087cc89b116f6.tar.gz |
-rw-r--r-- | lib/jit_arm.c | 49 |
diff --git a/lib/jit_arm.c b/lib/jit_arm.c index fab42aa..0a11070 100644 --- a/lib/jit_arm.c +++ b/lib/jit_arm.c @@ -388,8 +388,8 @@ _jit_arg_d(jit_state_t *_jit) if (_jit->function->self.argi < 3) { if (_jit->function->self.argi & 1) ++_jit->function->self.argi; - offset = _jit->function->self.argf; - _jit->function->self.argf += 2; + offset = _jit->function->self.argi; + _jit->function->self.argi += 2; return (offset); } } @@ -409,7 +409,12 @@ _jit_arg_d_reg_p(jit_state_t *_jit, jit_int32_t offset) void _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) { - if (v < 4) + if (jit_swf_p()) { + if (v < 4) + v <<= 2; + jit_ldxi_c(u, JIT_FP, v); + } + else if (v < 4) jit_extr_c(u, JIT_RA0 - v); else jit_ldxi_c(u, JIT_FP, v); @@ -418,7 +423,12 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) void _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) { - if (v < 4) + if (jit_swf_p()) { + if (v < 4) + v <<= 2; + jit_ldxi_uc(u, JIT_FP, v); + } + else if (v < 4) jit_extr_uc(u, JIT_RA0 - v); else jit_ldxi_uc(u, JIT_FP, v); @@ -427,7 +437,12 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) void _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) { - if (v < 4) + if (jit_swf_p()) { + if (v < 4) + v <<= 2; + jit_ldxi_s(u, JIT_FP, v); + } + else if (v < 4) jit_extr_s(u, JIT_RA0 - v); else jit_ldxi_s(u, JIT_FP, v); @@ -436,7 +451,12 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) void _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) { - if (v < 4) + if (jit_swf_p()) { + if (v < 4) + v <<= 2; + jit_ldxi_us(u, JIT_FP, v); + } + else if (v < 4) jit_extr_us(u, JIT_RA0 - v); else jit_ldxi_us(u, JIT_FP, v); @@ -445,7 +465,12 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) void _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) { - if (v < 4) + if (jit_swf_p()) { + if (v < 4) + v <<= 2; + jit_ldxi_i(u, JIT_FP, v); + } + else if (v < 4) jit_movr(u, JIT_RA0 - v); else jit_ldxi_i(u, JIT_FP, v); @@ -460,6 +485,11 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) else jit_ldxi_f(u, JIT_FP, v); } + else if (jit_swf_p()) { + if (v < 4) + v <<= 2; + jit_ldxi_f(u, JIT_FP, v); + } else { if (v < 4) jit_movr_f(u, JIT_RA0 - v); @@ -477,6 +507,11 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) else jit_ldxi_d(u, JIT_FP, v); } + else if (jit_swf_p()) { + if (v < 4) + v <<= 2; + jit_ldxi_d(u, JIT_FP, v); + } else { if (v < 4) jit_movr_d(u, JIT_RA0 - v); |