1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

Merge from upstream Lightening

This commit is contained in:
Andy Wingo 2019-04-04 11:09:24 +02:00
commit 11fa54646f
6 changed files with 23 additions and 20 deletions

View file

@ -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,

View file

@ -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__)

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}