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