diff options
author | Andy Wingo <wingo@pobox.com> | 2019-12-10 22:07:26 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-12-10 22:20:51 +0100 |
commit | 45b936a8e3e6244849c43a81319b6e82b82c5dc4 (patch) | |
tree | 3fc674fce6f0e99f2b0de71982ac12d85c82dae7 | |
parent | 7a6fdd4fb58237b9213ffe9ce7a8e5b2ac659c54 (diff) | |
download | guile-45b936a8e3e6244849c43a81319b6e82b82c5dc4.tar.gz |
Add out-of-line slow path for abort
* libguile/jit.c (compile_abort, compile_abort_slow): Move interpreter
fallback to slow path.
-rw-r--r-- | libguile/jit.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/libguile/jit.c b/libguile/jit.c index 2b66e82e9..b9deaae83 100644 --- a/libguile/jit.c +++ b/libguile/jit.c @@ -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 |