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

19 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
c614c2e40b Refactor embedder interface for conservative GC
Now users don't have to #ifdef on conservative vs precise tracing; it's
just a generic embedder concern.
2022-10-26 11:59:56 +02:00
Andy Wingo
910b62af8f Add conservative heap tracing (not just roots)
Also accelerate mark_space_live_object_granules.
2022-10-26 10:37:55 +02:00
Andy Wingo
053dbf0b61 Pass heap to tracer functions
This will allow conservative intra-heap edges.  Hopefully no overhead?
2022-10-25 14:25:55 +02:00
Andy Wingo
1944b54a19 Whippet can trace conservative roots
Next up, enabling it via the makefiles.
2022-10-03 16:09:21 +02:00
Andy Wingo
deed415a06 Whippet captures stack when stopping mutators
This is part of work to enable conservative GC.
2022-10-03 16:09:21 +02: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
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
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
Renamed from whippet.h (Browse further)