1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-29 14:30:34 +02:00
Commit graph

21803 commits

Author SHA1 Message Date
Andy Wingo
05d2c95950 mt-gcbench: Only crash when tracing holes for precise GC 2022-10-03 16:09:21 +02:00
Andy Wingo
e328346bbd Refactor alignment utilities in whippet.c
Add align_up and align_down helpers.
2022-10-03 15:37:16 +02:00
Andy Wingo
24bd94d9f7 Fix race condition in computation of mark-while-stopping
Choose the ragged stop strategy when the GC kind is determined, so that
we do so with respect to a single measurement of pending unavailable
bytes.

Also remove assert in heap_should_mark_while_stopping, as it can be
called after stopping too, when evacuation is enabled.
2022-10-03 15:37:16 +02:00
Andy Wingo
1e3122d054 trace_worker_steal first does a try_pop on its own deque
Before asking other threads for values, see if there is any pending data
that overflowed from the local mark stack.
2022-10-03 15:37:16 +02:00
Andy Wingo
8b8ddaf6e2 work-stealing optimization: stay with last-stolen worker
Previously we were always going round-robin.  Now a thief tries to
plunder its victim again directly.  Should result in less churn.
2022-10-03 15:37:16 +02:00
Andy Wingo
56aad402c9 Fix bug in try_pop on chase-lev deque
The counters are unsigned, so that they can overflow.  (Is that really
necessary though?)  In any case try_pop can decrement a counter, leading
to a situation where you can think you have (size_t)-1 elements; not
good.  Instead when computing the queue size, use a signed value.
Limits total queue size to half the unsigned space; fine.
2022-10-03 15:37:16 +02:00
Andy Wingo
f77cf923c1 Fix parallel tracer for gc_ref API change 2022-10-03 15:37:01 +02:00
Andy Wingo
1228e346fa Fix semi-space collector for refactor 2022-10-03 15:37:01 +02:00
Daniel Llorens
584ba588e5 Test for out of range depth in fluid-ref*
Test for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=58154, which was
fixed in c0004442b7.
2022-10-03 12:19:58 +02:00
Mike Gran
45cc892fe3 Modifies command line quoting in c-api.test
On MinGW, 'system' uses a non-posix shell that does not handle
apostrophe as a quoting character. For this test, quoting a command-line
with double quotes allows it to be run with both /bin/sh and cmd.exe.

* test-suite/tests/c-api.test (egrep): use double quotes when
  quoting command line
2022-10-02 07:30:48 -07:00
Mike Gran
f5c064576d Avoids deprecated egrep in c-api.test
The standalone egrep script has been deprecated by GNU grep.
'grep -E' is the suggested replacement.

* test-suite/tests/c-api.test (egrep): replace egrep with grep -E
2022-10-02 07:23:52 -07:00
Ludovic Courtès
3ed7673ac0 srfi-35: Fix expansion of 'condition' for compound conditions.
* module/srfi/srfi-35.scm (condition): Use 'make-exception' instead of
'make-compound-condition', which is unbound in this module.
* test-suite/tests/srfi-35.test ("syntax")["compound condition,
hygienic macro expansion"]: New test.
2022-10-01 18:04:16 +02:00
Antoine Kalmbach
78c7772eb7 doc: Fix typo in 'coverage-data->lcov' example.
* doc/ref/api-coverage.texi (Code Coverage): Close PORT, not FILE, in
the example.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-10-01 16:00:05 +02:00
Fulbert
b16dbb14bc doc: Fix typo under "CPS Soup".
* doc/ref/compiler.texi (CPS Soup) : fix small typo in doc (closing
paren out of @code{} tag).

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-10-01 16:00:05 +02:00
Fulbert
6c4738ee4c doc: Clarify reference to (sxml transform) module.
* doc/ref/sxml.texi (7.21.4 Transforming SXML): Adds a mention to the
module to be imported for the procedures introduced in this section of
the documentation..

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-10-01 16:00:05 +02:00
Ludovic Courtès
e2797f529b Baseline compiler no longer crashes on (not (list 1 2)).
Fixes <https://bugs.gnu.org/58217>.

* module/language/tree-il/compile-bytecode.scm (canonicalize)
[finish-conditional](predicate?): Do not assume 'lookup-primitive'
returns true.
* test-suite/tests/compiler.test ("regression tests")
["(not (list 1 2))"]: New test.
2022-10-01 16:00:05 +02:00
Ludovic Courtès
df86a2a8c8 Finalization thread exits when it gets EOF on its pipe.
Avoids spurious "error in finalization thread: Success" messages when
the finalization pipe gets closed.

* libguile/finalizers.c (finalization_thread_proc): Return when 'data.n'
is zero.
2022-10-01 16:00:05 +02:00
Daniel Llorens
d1a4b101bf Fix doc for string args to error C API 2022-09-30 12:04:15 +02:00
Daniel Llorens
c0004442b7 Fix bad arguments to range_error() in numbers.c
Fixes https://debbugs.gnu.org/cgi/bugreport.cgi?bug=58154. Ouch.
2022-09-30 12:02:12 +02:00
Mike Gran
426ed4068a in ftw test, skip EACCESS test on MinGW
MinGW ACL-based permissions don't follow POSIX standard, so
'chmod' has unexpected behavior.

* test-suite/tests/ftw.test (mingw?): new define
  ("file system fold: EACCES"): skip test on MinGW
2022-09-20 19:50:14 -07:00
Mike Gran
775149f0f5 in ftw test, don't presume symlink is defined
* test-suite/tests/ftw.test (dangling symlink and lstat)
  (dangling symlink and stat, symlink to directory):
    skip if symlink undefined
2022-09-20 19:30:38 -07:00
Michael Gran
130463be2a When fork unavailable, skip standalone tests that require it
MinGW is missing fork.

* test-suite/standalone/test-close-on-exec: modified
* test-suite/standalone/test-signal-fork: modified
2022-09-20 15:09:35 -07:00
Ludovic Courtès
61393a5da6 test-suite: Remove obsolete use of 'debug-enable'.
* test-suite/guile-test (enable-debug-mode): Remove 'debug-enable' call.
2022-09-19 22:30:16 +02:00
Ludovic Courtès
1d313bf5f0 'pipe' now takes an optional 'flags' parameter.
This is the same strategy as used for the 'accept4' bindings introduced
in 6e0965104c.

* libguile/posix.c (scm_pipe): Rename to...
(scm_pipe2): ... this.  Add an optional 'flags' parameter and honor it.
(scm_pipe): Rewrite as a call to 'scm_pipe2'.
* libguile/posix.h (scm_pipe2): New declaration.
* test-suite/tests/posix.test ("pipe"): New tests.
* configure.ac: Look for 'pipe2'.
* NEWS: Update.
2022-09-19 22:30:16 +02:00
jgart
9592516bfa string-fun: Fix typo 2022-09-17 13:41:47 +02:00
Ludovic Courtès
0aa1a9976f 'primitive-load' opens files with O_CLOEXEC.
Fixes <https://bugs.gnu.org/57567>.

* libguile/load.c (scm_primitive_load): Add "e" flag to
'scm_open_file_with_encoding' argument.
* NEWS: Update.
2022-09-07 18:00:30 +02:00
Ludovic Courtès
a356ceebee Add support for "e" flag (O_CLOEXEC) to 'open-file'.
* libguile/fports.c (scm_i_mode_to_open_flags): Add 'e' case.
(scm_open_file_with_encoding): Document it.
* test-suite/standalone/test-close-on-exec: New file.
* test-suite/standalone/Makefile.am (check_SCRIPTS, TESTS): Add it.
* doc/ref/api-io.texi (File Ports): Document it.
* NEWS: Update.
2022-09-07 18:00:30 +02:00
Ludovic Courtès
3cd4881504 doc: Add documentation of the "b" flag to 'open-file'.
* doc/ref/api-io.texi (File Ports): Add documentation of the "b" flag,
taken from the 'open-file' docstring.
2022-09-07 18:00:30 +02:00
Jean Abou Samra
61d8dab8ea In curried definitions, move docstrings to outermost lambda
This makes the docstring attached to the curried function being defined
rather than the result of its application until a function that runs the
body is obtained, fixing
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50068
2022-08-29 11:45:39 +02:00
Andrew Whatson
eb5ecf4944 Properly display locations in "source vector" form.
Locations are stored in tree-il records in "source vector" form, but
`location-string' was rendering these as <unknown-location>.

* module/system/base/message.scm (location-string): Support locations
passed as a file/line/column vector.
2022-08-26 12:34:39 +02:00
Andy Wingo
8a51117763 Rework pinning, prepare for conservative tracing
We don't need a pin bit: we just need to mark pinned objects before
evacuation starts.  This way we can remove the stopping / marking race
so that we can always mark while stopping.
2022-08-22 21:11:30 +02:00
Andy Wingo
2199d5f48d Excise struct gcobj 2022-08-16 23:21:16 +02:00
Andy Wingo
6ecf226570 More typesafety, more gc_ref 2022-08-16 22:48:46 +02:00
Andy Wingo
92b8f1e917 Add gc_ prefix to struct heap, struct mutator 2022-08-16 21:35:16 +02:00
Andy Wingo
b082f5f50d Separate compilation!!!!! 2022-08-16 17:54:15 +02:00
Andy Wingo
fe9bdf6397 Separate out embedder API from mt-gcbench, quads 2022-08-16 16:09:36 +02:00
Andy Wingo
112f27b77b Simplify GC attributes for the inline allocator
Don't require pulling in all of gc-api.h.
2022-08-16 16:00:06 +02:00
Andy Wingo
8a111256c6 Compile with -fvisibility=hidden; will be good for separate compilation 2022-08-16 12:04:56 +02:00
Andy Wingo
9e8940e59f Get handles out of collectors 2022-08-16 11:53:32 +02:00
Andy Wingo
607585e7f0 Add whippet-inline.h 2022-08-16 10:25:23 +02:00
Andy Wingo
33aa5230da Add bdw-inline.h 2022-08-15 18:30:42 +02:00
Andy Wingo
8f2f4f7c69 API-ify gc_print_stats; add semi-inline.h 2022-08-15 18:17:18 +02:00
Andy Wingo
a00c83878e Inline post-allocation actions 2022-08-15 16:06:52 +02:00
Andy Wingo
a75842be90 Mostly implementation-independent inline allocation
This is a step towards separate compilation of the GC without losing
performance.  Only remaining task is the write barrier.
2022-08-15 11:17:15 +02:00
Andy Wingo
4d8a7169d0 Add inline to gc-api.h 2022-08-14 09:18:21 +02:00
Andy Wingo
fb71c4c363 Separate tagging from collector
The collector now has an abstract interface onto the embedder.  The
embedder has to supply some functionality, such as tracing and
forwarding.  This is a pretty big change in terms of lines but it's
supposed to have no functional or performance change.
2022-08-12 16:44:38 +02:00
jgart
c746586de3 doc: Add car+cdr example 2022-08-11 13:31:48 +02:00
Andy Wingo
cacc28b577 Always add a header onto objects
We're targetting systems that need to be able to inspect the kind of an
object, so this information has to be somewhere.  If it's out-of-line,
we might save memory, but we would lose locality.  Concretely in Guile
the tag bits are in the object itself.
2022-08-09 16:14:47 +02:00
Andy Wingo
d8bcbf2d74 More API-ification 2022-08-09 11:35:31 +02:00
Andy Wingo
4ccb489869 Set fixed heap size, parallelism via explicit options 2022-08-09 11:21:02 +02:00