summaryrefslogtreecommitdiff
path: root/src/runtime/c/pgf/lightning
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/c/pgf/lightning')
-rw-r--r--src/runtime/c/pgf/lightning/core-common.h8
-rw-r--r--src/runtime/c/pgf/lightning/i386/core-32.h12
-rw-r--r--src/runtime/c/pgf/lightning/i386/core-64.h9
3 files changed, 10 insertions, 19 deletions
diff --git a/src/runtime/c/pgf/lightning/core-common.h b/src/runtime/c/pgf/lightning/core-common.h
index 04dbb2c7b..3cda23322 100644
--- a/src/runtime/c/pgf/lightning/core-common.h
+++ b/src/runtime/c/pgf/lightning/core-common.h
@@ -52,6 +52,12 @@ typedef struct {
#define JIT_V0 JIT_V(0)
#define JIT_V1 JIT_V(1)
#define JIT_V2 JIT_V(2)
+#define JIT_FPR0 JIT_FPR(0)
+#define JIT_FPR1 JIT_FPR(1)
+#define JIT_FPR2 JIT_FPR(2)
+#define JIT_FPR3 JIT_FPR(3)
+#define JIT_FPR4 JIT_FPR(4)
+#define JIT_FPR5 JIT_FPR(5)
#define _jitl _jit.jitl
@@ -149,7 +155,7 @@ typedef union jit_code {
#define jit_xorr_ul(d, s1, s2) jit_xorr_l((d), (s1), (s2))
#define jit_addr_p(d, s1, s2) jit_addr_ul((d), (s1), (s2))
-#define jit_addi_p(d, rs, is) jit_addi_ul((d), (rs), (long) (is))
+#define jit_addi_p(d, rs, is) (jit_addi_ul((d), (rs), (long) (is)), _jit.x.pc)
#define jit_movr_p(d, rs) jit_movr_ul((d), (rs))
#define jit_subr_p(d, s1, s2) jit_subr_ul((d), (s1), (s2))
#define jit_subi_p(d, rs, is) jit_subi_ul((d), (rs), (long) (is))
diff --git a/src/runtime/c/pgf/lightning/i386/core-32.h b/src/runtime/c/pgf/lightning/i386/core-32.h
index 561fab5fb..9de85b86e 100644
--- a/src/runtime/c/pgf/lightning/i386/core-32.h
+++ b/src/runtime/c/pgf/lightning/i386/core-32.h
@@ -101,6 +101,8 @@ struct jit_local_state {
#define jit_ret() jit_base_ret (_jitl.alloca_offset)
#endif
+#define jit_bare_ret(IM) ((IM == 0) ? RET_() : RETi(IM))
+
#define jit_calli(label) (CALLm( ((unsigned long) (label))), _jit.x.pc)
#define jit_callr(reg) CALLsr(reg)
@@ -108,16 +110,6 @@ struct jit_local_state {
#define jit_finish(sub) (_jitl.finish_ref = jit_calli((sub)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0, _jitl.finish_ref)
#define jit_finishr(reg) (jit_callr((reg)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
-#ifdef __APPLE__
-#define jit_tail_finishr(reg) jit_base_tail_finishr(-12, reg)
-#else
-#define jit_tail_finishr(reg) jit_base_tail_finishr(_jitl.alloca_offset, reg)
-#endif
-
-#define jit_base_tail_finishr(ofs, reg) \
- (((ofs) < 0 ? LEAVE_() : POPLr(_EBP)), \
- POPLr(_EDI), POPLr(_ESI), POPLr(_EBX), jit_jmpr(reg))
-
#define jit_arg_c() ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_uc() ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_s() ((_jitl.framesize += sizeof(int)) - sizeof(int))
diff --git a/src/runtime/c/pgf/lightning/i386/core-64.h b/src/runtime/c/pgf/lightning/i386/core-64.h
index 70b4d6069..bd53d9744 100644
--- a/src/runtime/c/pgf/lightning/i386/core-64.h
+++ b/src/runtime/c/pgf/lightning/i386/core-64.h
@@ -190,14 +190,6 @@ struct jit_local_state {
? (ADDQir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0) \
: 0))
-#ifdef __APPLE__
-#define jit_tail_finishr(reg) jit_base_tail_finishr(-12, reg)
-#else
-#define jit_tail_finishr(reg) jit_base_tail_finishr(_jitl.alloca_offset, reg)
-#endif
-
-#define jit_base_tail_finishr(ofs, reg)
-
#define jit_retval_l(rd) ((void)jit_movr_l ((rd), _EAX))
#define jit_arg_i() (_jitl.nextarg_geti < JIT_ARG_MAX \
? _jitl.nextarg_geti++ \
@@ -273,6 +265,7 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX, _R8D, _R9D };
#define jit_patch_at(jump_pc,v) (_jitl.long_jumps ? jit_patch_long_at((jump_pc)-3, v) : jit_patch_short_at(jump_pc, v))
#define jit_patch_calli(pa,pv) (*_PSL((pa) - sizeof(long)) = _jit_SL((pv)))
#define jit_ret() (LEAVE_(), POPQr(_R14), POPQr(_R13), POPQr(_R12), POPQr(_EBX), RET_())
+#define jit_bare_ret(IM) ((IM == 0) ? RET_() : RETi(IM))
/* Memory */