1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-09 23:40:29 +02:00
Commit graph

21 commits

Author SHA1 Message Date
Andy Wingo
e270290242 Allow large object space to be part of remembered set 2023-03-15 09:34:12 +01:00
Andy Wingo
d0b8f6838d Rework fast/slow path alloc API
This lets users do gc_allocate_fast() and know that if they got a
non-NULL result, we could allocate without GC, and so no object was
moved.
2023-03-14 14:35:20 +01:00
Andy Wingo
c42c538aaa gc_init takes const gc_options 2023-02-28 09:40:28 +01:00
Andy Wingo
4cb26e0144 Rework options interface
Users will want to set options from an environment variable or something
like that.  Particular GC implementations will want to expose an
expanded set of options.  For these reasons we make the options
interface a bit more generalized and include parsing.
2023-02-15 20:07:14 +01:00
Andy Wingo
78da8d5811 Add ephemeron implementation
This commit adds support for ephemerons to the API and wires it into the
collectors.  It also adds a new test.
2023-01-23 20:56:25 +01:00
Andy Wingo
44f37a373c Add gc_collect(mutator) API 2023-01-23 11:16:45 +01:00
Andy Wingo
d2bde8319f Add conservative stack capture
This isn't really wired up yet anywhere, but add a precursor to
conservative stack scanning.
2022-10-03 16:09:21 +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
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
9e8940e59f Get handles out of collectors 2022-08-16 11:53:32 +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
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
Andy Wingo
2e6dde66b3 Attempt to start creating a proper API 2022-08-09 09:49:51 +02:00
Andy Wingo
c824f17bd9 Rename gc-types.h to gc-api.h 2022-08-08 11:08:36 +02:00
Renamed from gc-types.h (Browse further)