[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);
}
- [Guile-commits] branch lightening updated (2db4ccd -> 39d1ed3), Andy Wingo, 2019/04/04
- [Guile-commits] 04/13: Fix reloc for jmpi and calli, Andy Wingo, 2019/04/04
- [Guile-commits] 03/13: Merge from upstream Lightening, Andy Wingo, 2019/04/04
- [Guile-commits] 02/13: Fix implementation of jit_{gpr, fpr}_is_callee_save,
Andy Wingo <=
- [Guile-commits] 01/13: jit: Fix inter-instruction relocs., Andy Wingo, 2019/04/04
- [Guile-commits] 05/13: Fix jit_gpr_is_callee_save usage, Andy Wingo, 2019/04/04
- [Guile-commits] 07/13: Fix JIT bugs, Andy Wingo, 2019/04/04
- [Guile-commits] 08/13: Add assert for jit_address, Andy Wingo, 2019/04/04
- [Guile-commits] 10/13: Merge from upstream Lightening, Andy Wingo, 2019/04/04
- [Guile-commits] 06/13: Merge from upstream Lightening, Andy Wingo, 2019/04/04
- [Guile-commits] 09/13: Fix some aspects of instruction mcode addresses, Andy Wingo, 2019/04/04
- [Guile-commits] 12/13: More various JIT fixen, Andy Wingo, 2019/04/04
- [Guile-commits] 11/13: Support immediate arguments, Andy Wingo, 2019/04/04
- [Guile-commits] 13/13: Merge from upstream Lightening, Andy Wingo, 2019/04/04