author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2014年10月14日 17:04:40 -0300 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2014年10月14日 17:04:40 -0300 |
commit | 839341a498b7b2077d715c2ca66d3debcddc0c30 (patch) | |
tree | c4fa2ea3b8cf6efb33e2fccc2b9bd8e2c750ff58 /lib/jit_arm-cpu.c | |
parent | 20a2f1f9c539c6b7509f9a32ef926b9b9dd98cc9 (diff) | |
download | lightning-839341a498b7b2077d715c2ca66d3debcddc0c30.tar.gz |
-rw-r--r-- | lib/jit_arm-cpu.c | 12 |
diff --git a/lib/jit_arm-cpu.c b/lib/jit_arm-cpu.c index 1be40b5..02edeed 100644 --- a/lib/jit_arm-cpu.c +++ b/lib/jit_arm-cpu.c @@ -3694,6 +3694,16 @@ _calli_p(jit_state_t *_jit, jit_word_t i0) static void _prolog(jit_state_t *_jit, jit_node_t *node) { + if (_jitc->function->define_frame || _jitc->function->assume_frame) { + jit_int32_t frame = -_jitc->function->frame; + assert(_jitc->function->self.aoff >= frame); + if (_jitc->function->assume_frame) { + if (jit_thumb_p() && !_jitc->thumb) + _jitc->thumb = _jit->pc.w; + return; + } + _jitc->function->self.aoff = frame; + } _jitc->function->stack = ((_jitc->function->self.alen - /* align stack at 8 bytes */ _jitc->function->self.aoff) + 7) & -8; @@ -3732,6 +3742,8 @@ _prolog(jit_state_t *_jit, jit_node_t *node) static void _epilog(jit_state_t *_jit, jit_node_t *node) { + if (_jitc->function->assume_frame) + return; addi(_SP_REGNO, _FP_REGNO, 16); if (jit_cpu.abi) VPOP_F64(_D8_REGNO, 8); |