1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-27 15:30:19 +02:00

don't truncate function pointers on amd64

2008-01-13  Paolo Bonzini  <bonzini@gnu.org>

	* lightning/i386/core-i386.h: Move jit_calli and jit_callr...
	* lightning/i386/core-32.h: ... here.
	* lightning/i386/core-64.h: Redefine them.
This commit is contained in:
Paolo Bonzini 2008-01-13 10:22:29 +01:00
parent 950b2cefe9
commit 07379b8a01
4 changed files with 18 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2008-01-13 Paolo Bonzini <bonzini@gnu.org>
* lightning/i386/core-i386.h: Move jit_calli and jit_callr...
* lightning/i386/core-32.h: ... here.
* lightning/i386/core-64.h: Redefine them.
2008-01-05 Paolo Bonzini <bonzini@gnu.org>
* lightning/i386/fp-32.h: Fix sub(a,0,a).

View file

@ -85,6 +85,9 @@ struct jit_local_state {
jit_allocai_internal ((n), 0)
#endif
#define jit_calli(label) (CALLm( ((unsigned long) (label))), _jit.x.pc)
#define jit_callr(reg) CALLsr(reg)
#define jit_pusharg_i(rs) PUSHLr(rs)
#define jit_finish(sub) ((void)jit_calli((sub)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
#define jit_finishr(reg) (jit_callr((reg)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)

View file

@ -120,15 +120,21 @@ struct jit_local_state {
#define jit_base_prolog() (PUSHQr(_EBX), PUSHQr(_R12), PUSHQr(_R13), PUSHQr(_EBP), MOVQrr(_ESP, _EBP))
#define jit_prolog(n) (_jitl.nextarg_getfp = _jitl.nextarg_geti = 0, _jitl.alloca_offset = 0, jit_base_prolog())
#define jit_calli(sub) (MOVQir((long) (sub), JIT_REXTMP), CALLLsr(JIT_REXTMP))
#define jit_callr(reg) CALLLsr((reg))
/* Stack isn't used for arguments: */
#define jit_prepare_i(ni) (_jitl.argssize = 0)
#define jit_pusharg_i(rs) (_jitl.argssize++, MOVQrr(rs, JIT_CALLTMPSTART + _jitl.argssize - 1))
#define jit_finish(sub) (jit_shift_args(), (void)jit_calli((sub)), jit_restore_locals())
#define jit_reg_is_arg(reg) ((reg == _EDI) || (reg ==_ESI) || (reg == _EDX))
#define jit_finish(sub) (MOVQir((long) (sub), JIT_REXTMP), \
jit_shift_args(), \
CALLLsr(JIT_REXTMP), \
jit_restore_locals())
#define jit_reg_is_arg(reg) ((reg == _EDI) || (reg ==_ESI) || (reg == _EDX))
#define jit_finishr(reg) ((jit_reg_is_arg((reg)) ? MOVQrr(reg, JIT_REXTMP) : (void)0), \
jit_shift_args(), \
jit_reg_is_arg((reg)) ? CALLsr((JIT_REXTMP)) : jit_callr((reg)), \
CALLLsr(jit_reg_is_arg((reg)) ? JIT_REXTMP : (reg)), \
jit_restore_locals())
/* R12 and R13 are callee-save, instead of EDI and ESI. Can be improved. */

View file

@ -316,8 +316,6 @@
#define jit_bmci_i(label, rs, is) (jit_reduce(TEST, (is), (rs)), JZm(label), _jit.x.pc)
#define jit_jmpi(label) (JMPm( ((unsigned long) (label))), _jit.x.pc)
#define jit_calli(label) (CALLm( ((unsigned long) (label))), _jit.x.pc)
#define jit_callr(reg) CALLsr(reg)
#define jit_jmpr(reg) JMPsr(reg)
/* Memory */