mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-22 04:30:19 +02:00
Fix assertion error running compile-file with threshold 0
* libguile/jit.c (emit_alloc_frame_for_sp): Don't require that FP be in a register, but if it was and we call out, do restore it.
This commit is contained in:
parent
54b23adc13
commit
e9b44c00fd
1 changed files with 3 additions and 3 deletions
|
@ -681,8 +681,9 @@ static void
|
||||||
emit_alloc_frame_for_sp (scm_jit_state *j, jit_gpr_t t)
|
emit_alloc_frame_for_sp (scm_jit_state *j, jit_gpr_t t)
|
||||||
{
|
{
|
||||||
jit_node_t *k, *fast, *watermark;
|
jit_node_t *k, *fast, *watermark;
|
||||||
|
uint32_t saved_state = save_reloadable_register_state (j);
|
||||||
|
|
||||||
ASSERT_HAS_REGISTER_STATE (SP_IN_REGISTER | FP_IN_REGISTER);
|
ASSERT_HAS_REGISTER_STATE (SP_IN_REGISTER);
|
||||||
|
|
||||||
emit_ldxi (j, t, THREAD, thread_offset_sp_min_since_gc);
|
emit_ldxi (j, t, THREAD, thread_offset_sp_min_since_gc);
|
||||||
fast = jit_bger (SP, t);
|
fast = jit_bger (SP, t);
|
||||||
|
@ -692,8 +693,7 @@ emit_alloc_frame_for_sp (scm_jit_state *j, jit_gpr_t t)
|
||||||
/* Slow case: call out to expand stack. */
|
/* Slow case: call out to expand stack. */
|
||||||
emit_store_current_ip (j, t);
|
emit_store_current_ip (j, t);
|
||||||
emit_call_r_r (j, scm_vm_intrinsics.expand_stack, THREAD, SP);
|
emit_call_r_r (j, scm_vm_intrinsics.expand_stack, THREAD, SP);
|
||||||
emit_reload_sp (j);
|
restore_reloadable_register_state (j, saved_state);
|
||||||
emit_reload_fp (j);
|
|
||||||
k = jit_jmpi ();
|
k = jit_jmpi ();
|
||||||
|
|
||||||
/* Past sp_min_since_gc, but within stack_limit: update watermark and
|
/* Past sp_min_since_gc, but within stack_limit: update watermark and
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue