diff options
author | Andy Wingo <wingo@pobox.com> | 2019-05-27 19:05:10 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-05-27 19:05:10 +0200 |
commit | 1fb39929f9c1c292b11aedb7b29a166471b1c555 (patch) | |
tree | aa9f7f57e61f5fb51ca3f01e268e6dc458a93735 /libguile/jit.c | |
parent | 2ba50e2fe642b1a92b087ba4a18a71a2a67cd798 (diff) | |
download | guile-1fb39929f9c1c292b11aedb7b29a166471b1c555.tar.gz |
Reapply atomics inlining
This patch reapplies 230a5559764679d75e3e8941e97a268a2b2e6a53 and
e8d34258beab2799951e16d21d547299d4659364, but fixing a misplaced
comma (!).
Diffstat (limited to 'libguile/jit.c')
-rw-r--r-- | libguile/jit.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/libguile/jit.c b/libguile/jit.c index 20116c16a..6cea8bbc5 100644 --- a/libguile/jit.c +++ b/libguile/jit.c @@ -3010,16 +3010,8 @@ compile_handle_interrupts (scm_jit_state *j) void *again = jit_address (j->jit); -#if defined(__i386__) || defined(__x86_64__) - /* Disassembly of atomic_ref_scm is just a mov. */ - jit_ldxi (j->jit, T0, THREAD, thread_offset_pending_asyncs); -#else - emit_call_1 (j, scm_vm_intrinsics.atomic_ref_scm, - jit_operand_addi (thread_operand (), - thread_offset_pending_asyncs)); - emit_retval (j, T0); - restore_reloadable_register_state (j, saved_state); -#endif + jit_addi (j->jit, T0, THREAD, thread_offset_pending_asyncs); + jit_ldr_atomic (j->jit, T0, T0); jit_reloc_t none_pending = jit_beqi (j->jit, T0, SCM_UNPACK (SCM_EOL)); jit_ldxi_i (j->jit, T0, THREAD, thread_offset_block_asyncs); jit_reloc_t blocked = jit_bnei (j->jit, T0, 0); |