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