mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 05:50:26 +02:00
Add out-of-line slow path for abort
* libguile/jit.c (compile_abort, compile_abort_slow): Move interpreter fallback to slow path.
This commit is contained in:
parent
7a6fdd4fb5
commit
45b936a8e3
1 changed files with 3 additions and 7 deletions
|
@ -1828,23 +1828,18 @@ compile_capture_continuation_slow (scm_jit_state *j, uint32_t dst)
|
|||
static void
|
||||
compile_abort (scm_jit_state *j)
|
||||
{
|
||||
jit_reloc_t k, interp;
|
||||
|
||||
jit_movi (j->jit, T0, (intptr_t) (j->ip + 1));
|
||||
emit_store_ip (j, T0);
|
||||
k = jit_mov_addr (j->jit, T0);
|
||||
jit_reloc_t k = jit_mov_addr (j->jit, T0);
|
||||
emit_call_2 (j, scm_vm_intrinsics.abort_to_prompt, thread_operand (),
|
||||
jit_operand_gpr (JIT_OPERAND_ABI_POINTER, T0));
|
||||
jit_retval (j->jit, T1_PRESERVED);
|
||||
|
||||
interp = jit_beqi (j->jit, T1_PRESERVED, 0);
|
||||
add_slow_path_patch(j, jit_beqi (j->jit, T1_PRESERVED, 0));
|
||||
emit_reload_sp (j);
|
||||
emit_reload_fp (j);
|
||||
jit_jmpr (j->jit, T1_PRESERVED);
|
||||
|
||||
jit_patch_here (j->jit, interp);
|
||||
emit_exit (j);
|
||||
|
||||
jit_patch_here (j->jit, k);
|
||||
|
||||
j->frame_size_min = 0;
|
||||
|
@ -1853,6 +1848,7 @@ compile_abort (scm_jit_state *j)
|
|||
static void
|
||||
compile_abort_slow (scm_jit_state *j)
|
||||
{
|
||||
emit_exit (j);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue