mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-11 06:20:23 +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
|
static void
|
||||||
compile_abort (scm_jit_state *j)
|
compile_abort (scm_jit_state *j)
|
||||||
{
|
{
|
||||||
jit_reloc_t k, interp;
|
|
||||||
|
|
||||||
jit_movi (j->jit, T0, (intptr_t) (j->ip + 1));
|
jit_movi (j->jit, T0, (intptr_t) (j->ip + 1));
|
||||||
emit_store_ip (j, T0);
|
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 (),
|
emit_call_2 (j, scm_vm_intrinsics.abort_to_prompt, thread_operand (),
|
||||||
jit_operand_gpr (JIT_OPERAND_ABI_POINTER, T0));
|
jit_operand_gpr (JIT_OPERAND_ABI_POINTER, T0));
|
||||||
jit_retval (j->jit, T1_PRESERVED);
|
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_sp (j);
|
||||||
emit_reload_fp (j);
|
emit_reload_fp (j);
|
||||||
jit_jmpr (j->jit, T1_PRESERVED);
|
jit_jmpr (j->jit, T1_PRESERVED);
|
||||||
|
|
||||||
jit_patch_here (j->jit, interp);
|
|
||||||
emit_exit (j);
|
|
||||||
|
|
||||||
jit_patch_here (j->jit, k);
|
jit_patch_here (j->jit, k);
|
||||||
|
|
||||||
j->frame_size_min = 0;
|
j->frame_size_min = 0;
|
||||||
|
@ -1853,6 +1848,7 @@ compile_abort (scm_jit_state *j)
|
||||||
static void
|
static void
|
||||||
compile_abort_slow (scm_jit_state *j)
|
compile_abort_slow (scm_jit_state *j)
|
||||||
{
|
{
|
||||||
|
emit_exit (j);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue