guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 57/437: don't truncate function pointers on amd64


From: Andy Wingo
Subject: [Guile-commits] 57/437: don't truncate function pointers on amd64
Date: Mon, 2 Jul 2018 05:13:45 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 07379b8a010bbba59a6916b3e0a4ab58e6d36295
Author: Paolo Bonzini <address@hidden>
Date:   Sun Jan 13 10:22:29 2008 +0100

    don't truncate function pointers on amd64
    
    2008-01-13  Paolo Bonzini  <address@hidden>
    
        * lightning/i386/core-i386.h: Move jit_calli and jit_callr...
        * lightning/i386/core-32.h: ... here.
        * lightning/i386/core-64.h: Redefine them.
---
 ChangeLog                  |  6 ++++++
 lightning/i386/core-32.h   |  3 +++
 lightning/i386/core-64.h   | 12 +++++++++---
 lightning/i386/core-i386.h |  2 --
 4 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a7e8841..cbe534d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-01-13  Paolo Bonzini  <address@hidden>
+
+       * 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  <address@hidden>
 
        * lightning/i386/fp-32.h: Fix sub(a,0,a).
diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h
index c48c44a..48153e6 100644
--- a/lightning/i386/core-32.h
+++ b/lightning/i386/core-32.h
@@ -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)
diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h
index 03d1053..917a212 100644
--- a/lightning/i386/core-64.h
+++ b/lightning/i386/core-64.h
@@ -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. */
diff --git a/lightning/i386/core-i386.h b/lightning/i386/core-i386.h
index 754cdff..f8df54b 100644
--- a/lightning/i386/core-i386.h
+++ b/lightning/i386/core-i386.h
@@ -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 */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]