1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-08 22:50:27 +02:00
Commit graph

176 commits

Author SHA1 Message Date
Andy Wingo
5fbd21a7c3 Add USER-GUIDE.md 2023-08-06 10:43:42 +02:00
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
62f4b045f8 BDW supports growable heap 2023-02-28 22:02:49 +01:00
Andy Wingo
51168fd96e ephemerons benchmark takes gc options 2023-02-28 11:30:51 +01:00
Andy Wingo
f657cd3847 quads benchmark takes gc-options param 2023-02-28 11:24:33 +01:00
Andy Wingo
157037dd1f Fix parallelism in quads benchmark 2023-02-28 11:20:50 +01:00
Andy Wingo
9576558a34 Rework mtbench to take GC options string instead of parallelism 2023-02-28 11:19:42 +01:00
Andy Wingo
f15eb3bd10 Add enum heap policy parsing 2023-02-28 11:19:42 +01:00
Andy Wingo
898f7aa935 Implement resizing of semi-space heap
Not yet hooked up to any demo, though.
2023-02-28 11:19:39 +01:00
Andy Wingo
c42c538aaa gc_init takes const gc_options 2023-02-28 09:40:28 +01:00
Andy Wingo
8edfd42ca1 Rework semi-space collector to separate regions
This is a preparation for heap growth and shrinking.
2023-02-28 09:40:28 +01:00
Andy Wingo
f0ad02d6ee Fix parsing options from string, doh 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
499ff1fe76 Update README 2023-01-23 20:57:02 +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
1b3bc2f3b5 Use "stack-conservative" and "heap-conservative" terms
Thanks to Steve Blackburn for the terms.
2022-12-02 09:07:24 +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
5e986e84e9 Update README 2022-10-03 16:12:06 +02:00
Andy Wingo
703bb30e19 add conservative makefile targets 2022-10-03 16:09:21 +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
a5b1a66d21 Add platform abstraction
This will allow us to iterate conservative roots from stacks and static
data segments.
2022-10-03 16:09:21 +02:00
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
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