Mark H Weaver
f65ccc6afe
Fix 'atomic-box-compare-and-swap!'.
...
Fixes <https://bugs.gnu.org/32786 >.
'scm_atomic_compare_and_swap_scm' is a thin wrapper around
'atomic_compare_exchange_weak' (where available), and therefore it may
spuriously fail on some platforms, leaving the atomic object unchanged
even when the observed value is equal to the expected value. Since
'scm_atomic_compare_and_swap_scm' returns both a boolean result and the
observed value, the caller is able to detect spurious failures when
using that API.
'atomic-box-compare-and-swap!' presents a simpler API, returning only
the observed value. The documentation advises callers to assume that
the exchange succeeded if the observed value is 'eq?' to the expected
value. It's therefore not possible to report spurious failures with
this API.
'atomic-box-compare-and-swap!' uses 'scm_atomic_compare_and_swap_scm',
and prior to this commit would simply ignore the boolean result and
return the observed value. In case of spurious failures, the caller
would legitimately conclude that the exchange had succeeded.
With this commit, 'atomic-box-compare-and-swap!' now retries in case of
spurious failures.
* libguile/atomic.c (scm_atomic_box_compare_and_swap_x): If
'scm_atomic_compare_and_swap_scm' returns false and the observed value
is equal to 'expected', then try again.
* libguile/intrinsics.c (atomic_compare_and_swap_scm): Ditto.
2019-05-23 15:52:32 +02:00
Ludovic Courtès
827e88b4b7
Define AT_SYMLINK_NOFOLLOW et al.
...
* libguile/posix.c (scm_init_posix): Define AT_SYMLINK_NOFOLLOW,
AT_SYMLINK_FOLLOW, AT_NO_AUTOMOUNT, and AT_EMPTY_PATH when available.
(scm_utime): Mention AT_SYMLINK_NOFOLLOW.
* doc/ref/posix.texi (File System): Update accordingly.
* test-suite/tests/posix.test ("utime")["AT_SYMLINK_NOFOLLOW"]: New test.
2019-05-23 15:43:28 +02:00
Ludovic Courtès
176bfd0bce
time: Use #: for 'define-module' clauses.
...
* module/ice-9/time.scm: Use #: instead of : in 'define-module' form.
2019-05-23 15:41:32 +02:00
Ludovic Courtès
24f45332b0
time: Support expressions that return any number of values.
...
* module/ice-9/time.scm (time-proc): Call PROC with 'call-with-values';
return all its values.
2019-05-23 15:41:29 +02:00
Ludovic Courtès
53c3d27bfc
time: Use 'syntax-rules' instead of 'define-macro'.
...
* module/ice-9/time.scm (time): Rewrite using 'define-syntax-rule'.
2019-05-23 15:41:27 +02:00
Andy Wingo
63de1893c3
Merge remote-tracking branch 'lightening/master'
2019-05-23 10:04:52 +02:00
Andy Wingo
7c73f5f949
Add includable automake file
2019-05-23 10:02:00 +02:00
Andy Wingo
9ffda1ce61
Update NEWS
...
* NEWS: Add 2.9.2 information.
2019-05-23 09:34:54 +02:00
Andy Wingo
e9e52b6ab9
Mark a couple functions as maybe-unused.
...
* libguile/jit.c (fp_scm_operand, sp_slot_operand): Maybe unused.
2019-05-23 09:34:08 +02:00
Andy Wingo
be8ac3589e
Merge remote-tracking branch 'lightening/master'
2019-05-22 23:05:06 +02:00
Andy Wingo
ff6ab1d2b1
Silence "unused" warnings
2019-05-22 23:04:30 +02:00
Andy Wingo
5c700ae832
Enable JIT on aarch64 and armv7
...
* acinclude.m4 (GUILE_ENABLE_JIT): For MIPS, PPC, sparc, ia64, hppa,
s390, and alpha: mark JIT as unavailable. Only architectures left are
x86-64, i686, aarch64, and armv7. If JIT is available, enable it by
default; previously only x86-64 and i686 were supported.
2019-05-22 17:36:02 +02:00
Andy Wingo
3b707bb43d
Merge remote-tracking branch 'lightening/master'
2019-05-22 17:30:25 +02:00
Andy Wingo
0b3393415e
Allow add_pending_literal to return false
...
This avoids invalidating offsets for the reloc.
2019-05-22 17:29:10 +02:00
Andy Wingo
9b4870cad3
Merge remote-tracking branch 'lightening/master'
2019-05-21 16:06:11 +02:00
Andy Wingo
b67c4ed1e1
Avoid recursive pool emit for aarch64; add another overflow check
2019-05-21 16:05:03 +02:00
Andy Wingo
ec9fa9561b
Merge remote-tracking branch 'lightening/master'
2019-05-21 15:35:15 +02:00
Andy Wingo
33754ba8c7
AArch64 fix
2019-05-21 15:34:40 +02:00
Andy Wingo
7bc95fde98
Merge remote-tracking branch 'lightening/master'
2019-05-21 15:30:56 +02:00
Andy Wingo
b7f367165f
Various fixes for as-needed emission of literal pool
2019-05-21 15:25:08 +02:00
Andy Wingo
12e0063022
Merge remote-tracking branch 'lightening/master'
2019-05-21 14:21:42 +02:00
Andy Wingo
568fdecc86
Fix literal pool emission on armv7
2019-05-21 14:19:48 +02:00
Andy Wingo
da0cc5d3e6
Bless enter_mcode as a function pointer
...
* libguile/jit.c (initialize_jit): Bless enter_mcode, to allow ARMv7
interworking.
2019-05-21 14:02:27 +02:00
Andy Wingo
2feb4cf419
Merge remote-tracking branch 'lightening/master'
2019-05-21 14:00:55 +02:00
Andy Wingo
0518651bfd
Expose API to bless function pointers
...
On ARMv7, we need to set the low bit to indicate that we're in
thumb-land.
2019-05-21 14:00:04 +02:00
Andy Wingo
e00936d46b
Allow jit_end to fail
...
* libguile/jit.c (emit_code): Emitting a constant table might cause us
to fail.
2019-05-21 13:36:37 +02:00
Andy Wingo
2876f054e8
Merge remote-tracking branch 'lightening/master'
2019-05-21 12:44:23 +02:00
Andy Wingo
ef7abb568a
Fix typo in previous commit, doh
2019-05-21 12:44:00 +02:00
Andy Wingo
107926f8dd
Fix allocator passed to lightening
...
* libguile/jit.c (jit_alloc_fn): On targets that need a dynamically
allocated literal pool, we will need to trace that pool, so pass a
pointerful malloc. Fixes JIT on AArch64.
2019-05-21 12:39:55 +02:00
Andy Wingo
a4875baa4e
Merge remote-tracking branch 'lightening/master'
2019-05-21 12:39:34 +02:00
Andy Wingo
d2c15dd6cd
Clear literal pool more thoroughly
2019-05-21 12:38:53 +02:00
Andy Wingo
03ceca9a2b
Merge remote-tracking branch 'lightening/master'
2019-05-21 12:25:14 +02:00
Andy Wingo
723f70ee11
Clear missing bit from literal pool
2019-05-21 12:24:20 +02:00
Andy Wingo
f81f43591f
Merge remote-tracking branch 'lightening/master'
2019-05-21 12:14:50 +02:00
Andy Wingo
f49752eac0
Avoid using x18 on AArch64
2019-05-21 12:02:40 +02:00
Andy Wingo
66b96f9359
Merge remote-tracking branch 'lightening/master'
2019-05-20 21:36:17 +02:00
Andy Wingo
58fc136722
Fix bounds checking on negative ldr offsets for aarch64
2019-05-20 21:35:42 +02:00
Andy Wingo
e057ea01f6
Merge remote-tracking branch 'lightening/master'
2019-05-20 15:48:27 +02:00
Andy Wingo
2e53911c22
Update README
2019-05-20 15:45:51 +02:00
Andy Wingo
c671c0868e
Fix CI on ARMv7
2019-05-20 15:38:37 +02:00
Andy Wingo
0b5f05a8a5
Attempt to get CI working on ARMv7
2019-05-20 15:30:06 +02:00
Andy Wingo
0b7c0367d4
Add ARMv7 testing to CI
2019-05-20 15:25:03 +02:00
Andy Wingo
0b723c0401
ARMv7 backend passing all tests!
2019-05-20 15:20:33 +02:00
Andy Wingo
7dd18bddd7
ARMv7 backend compiling without warnings
2019-05-20 11:02:21 +02:00
Andy Wingo
8ce07131f1
Beginnings of VFP port to lightening
2019-05-19 23:29:10 +02:00
Andy Wingo
1ea34693cb
Port of arm-cpu.c to current lightening
2019-05-19 22:21:50 +02:00
Andy Wingo
b71ddba1f7
Beginnings of ARMv7 backend
2019-05-17 10:59:59 +02:00
Andy Wingo
0da87968d1
Remove unused jit_{gpr,fpr}_is_callee_save
2019-05-17 10:59:05 +02:00
Andy Wingo
eaf702765d
Remove software floating-point ARMv7 support; ARMv7 test env
2019-05-17 09:39:01 +02:00
Andy Wingo
c0e9302e9f
Update README and guix invocations in test suite
2019-05-16 13:56:56 +02:00