guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 01/01: Fix compilation on GCC 5.5


From: Andy Wingo
Subject: [Guile-commits] 01/01: Fix compilation on GCC 5.5
Date: Thu, 20 Jun 2019 06:15:18 -0400 (EDT)

wingo pushed a commit to branch master
in repository guile.

commit cce222d18965e90db79ce6fefe6e812f9cc9c614
Author: Andy Wingo <address@hidden>
Date:   Thu Jun 20 12:06:37 2019 +0200

    Fix compilation on GCC 5.5
    
    * libguile/jit.c (OLD_FP_FOR_RETURN_TRAMPOLINE): Initialize static const
      var from CPP define instead of T0.
      (compile_return_values, emit_return_to_interpreter_trampoline): Adapt
      to upper-casing.
---
 libguile/jit.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/libguile/jit.c b/libguile/jit.c
index f17d61f..7722234 100644
--- a/libguile/jit.c
+++ b/libguile/jit.c
@@ -237,6 +237,11 @@ static const jit_gpr_t SP = JIT_R0;
    THREAD.  Like SP, it can move.  */
 static const jit_gpr_t FP = JIT_R1;
 
+/* When we return to a function that doesn't have mcode, the just-popped
+   FP is stored in this register.  The return-to-the-interpreter
+   trampoline reads the vRA from the just-popped frame.  */
+static const jit_gpr_t OLD_FP_FOR_RETURN_TRAMPOLINE = JIT_V1; /* T0 */
+
 /* Scratch registers.  */
 static const jit_gpr_t T0 = JIT_V1;
 static const jit_gpr_t T1 = JIT_V2;
@@ -1601,13 +1606,11 @@ compile_shuffle_down (scm_jit_state *j, uint16_t from, 
uint16_t to)
     j->frame_size_max -= (from - to);
 }
 
-static const jit_gpr_t old_fp_for_return_trampoline = T0;
-
 static void
 compile_return_values (scm_jit_state *j)
 {
-  emit_pop_fp (j, old_fp_for_return_trampoline);
-  emit_load_mra (j, JIT_LR, old_fp_for_return_trampoline);
+  emit_pop_fp (j, OLD_FP_FOR_RETURN_TRAMPOLINE);
+  emit_load_mra (j, JIT_LR, OLD_FP_FOR_RETURN_TRAMPOLINE);
   jit_push_link_register (j->jit);
   jit_ret (j->jit);
 
@@ -1620,7 +1623,7 @@ emit_return_to_interpreter_trampoline (scm_jit_state *j)
 {
   jit_gpr_t ra = T1;
 
-  emit_load_vra (j, ra, old_fp_for_return_trampoline);
+  emit_load_vra (j, ra, OLD_FP_FOR_RETURN_TRAMPOLINE);
   emit_store_ip (j, ra);
   emit_exit (j);
 }



reply via email to

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