guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 02/13: Fix implementation of jit_{gpr, fpr}_is_callee_sa


From: Andy Wingo
Subject: [Guile-commits] 02/13: Fix implementation of jit_{gpr, fpr}_is_callee_save
Date: Thu, 4 Apr 2019 06:11:42 -0400 (EDT)

wingo pushed a commit to branch lightening
in repository guile.

commit bbfb03ac300c9c389319c0e4351b308b0ecb1c94
Author: Andy Wingo <address@hidden>
Date:   Thu Apr 4 11:08:54 2019 +0200

    Fix implementation of jit_{gpr,fpr}_is_callee_save
---
 lightening.h            | 15 +++------------
 lightening/lightening.c | 12 ++++++++++++
 tests/qdivr.c           |  4 ++--
 tests/qdivr_u.c         |  4 ++--
 tests/qmulr.c           |  4 ++--
 tests/qmulr_u.c         |  4 ++--
 6 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/lightening.h b/lightening.h
index cb838c5..ba56513 100644
--- a/lightening.h
+++ b/lightening.h
@@ -122,18 +122,6 @@ jit_same_fprs (jit_fpr_t a, jit_fpr_t b)
   return a.bits == b.bits;
 }
 
-static inline jit_bool_t
-jit_gpr_is_callee_save (jit_gpr_t reg)
-{
-  return jit_class(reg.bits) & jit_class_sav;
-}
-
-static inline jit_bool_t
-jit_fpr_is_callee_save (jit_fpr_t reg)
-{
-  return jit_class(reg.bits) & jit_class_sav;
-}
-
 typedef struct jit_state       jit_state_t;
 enum jit_arg_loc
 {
@@ -194,6 +182,9 @@ JIT_API jit_pointer_t jit_address(jit_state_t*);
 JIT_API void jit_patch_here(jit_state_t*, jit_reloc_t);
 JIT_API void jit_patch_there(jit_state_t*, jit_reloc_t, jit_pointer_t);
 
+JIT_API jit_bool_t jit_gpr_is_callee_save (jit_state_t*, jit_gpr_t);
+JIT_API jit_bool_t jit_fpr_is_callee_save (jit_state_t*, jit_fpr_t);
+
 /* Note that all functions that take jit_arg_t args[] use the args as scratch
    space while shuffling values into position.  */
 JIT_API void jit_calli(jit_state_t *, jit_pointer_t f,
diff --git a/lightening/lightening.c b/lightening/lightening.c
index 11cc373..3409876 100644
--- a/lightening/lightening.c
+++ b/lightening/lightening.c
@@ -399,6 +399,18 @@ jit_patch_there(jit_state_t* _jit, jit_reloc_t reloc, 
jit_pointer_t addr)
     }
 }
 
+jit_bool_t
+jit_gpr_is_callee_save (jit_state_t *_jit, jit_gpr_t reg)
+{
+  return jit_class(_rvs[jit_regno(reg.bits)].spec) & jit_class_sav;
+}
+
+jit_bool_t
+jit_fpr_is_callee_save (jit_state_t *_jit, jit_fpr_t reg)
+{
+  return jit_class(_rvs[jit_regno(reg.bits)].spec) & jit_class_sav;
+}
+
 #if defined(__i386__) || defined(__x86_64__)
 # include "x86.c"
 #elif defined(__mips__)
diff --git a/tests/qdivr.c b/tests/qdivr.c
index 37871f3..d6e967c 100644
--- a/tests/qdivr.c
+++ b/tests/qdivr.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_popr(j, reg);
 }    
 
diff --git a/tests/qdivr_u.c b/tests/qdivr_u.c
index 84f101f..8b2f63e 100644
--- a/tests/qdivr_u.c
+++ b/tests/qdivr_u.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_popr(j, reg);
 }    
 
diff --git a/tests/qmulr.c b/tests/qmulr.c
index 7e3d4b0..a683cc4 100644
--- a/tests/qmulr.c
+++ b/tests/qmulr.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_popr(j, reg);
 }    
 
diff --git a/tests/qmulr_u.c b/tests/qmulr_u.c
index 6ac5cd0..e5e7277 100644
--- a/tests/qmulr_u.c
+++ b/tests/qmulr_u.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_class(reg.bits) & jit_class_sav)
+  if (jit_gpr_is_callee_save (j, reg))
     jit_popr(j, reg);
 }    
 



reply via email to

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