summaryrefslogtreecommitdiff
path: root/libguile/jit.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2019-05-27 19:05:10 +0200
committerAndy Wingo <wingo@pobox.com>2019-05-27 19:05:10 +0200
commit1fb39929f9c1c292b11aedb7b29a166471b1c555 (patch)
treeaa9f7f57e61f5fb51ca3f01e268e6dc458a93735 /libguile/jit.c
parent2ba50e2fe642b1a92b087ba4a18a71a2a67cd798 (diff)
downloadguile-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.c12
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);