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:
commit
11fa54646f
6 changed files with 23 additions and 20 deletions
|
@ -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,
|
||||
|
|
|
@ -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__)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue