Andy Wingo
b5c36b9fd8
Explicitly support immediate values
...
Because we have to deref edges ourselves, as part of generational
marking, we need to ignore edges that don't point to heap objects.
2024-10-04 11:40:09 +02:00
Andy Wingo
9f437485ec
MMC marks roots in parallel during the pause, not while stopping
...
Following the analysis in
https://wingolog.org/archives/2024/09/06/on-taking-advantage-of-ragged-stops ,
we simplify MMC by traversing roots only during the pause. This lets us
use gc_tracer parallel root-tracing.
2024-09-09 15:03:49 +02:00
Andy Wingo
c226570a81
Fix parallel tracer to force workers to be stopped during pauses
2024-07-11 15:54:15 +02:00
Andy Wingo
5084730471
Add parallel root-tracing phase
2024-07-11 15:54:11 +02:00
Andy Wingo
247f9432a4
Tighten up typing of trace workers and trace worker data
2024-07-08 18:44:24 +02:00
Andy Wingo
5ff78f01c8
Add gc_trace_worker_call_with_data
...
Goal is to pass thread-local evacuation buffers.
2024-07-08 18:10:18 +02:00
Andy Wingo
ac5d546481
Remove heap_tracer; get to heap from tracer directly
2024-07-08 17:35:58 +02:00
Andy Wingo
ba9459ce56
Rework tracer API to pass tracer to all functions
2024-07-08 17:29:24 +02:00
Andy Wingo
921c012b51
Add gc_ prefix to tracer API
2024-07-08 17:15:00 +02:00
Andy Wingo
b4543ad641
Factor out tracer interface to own file
2024-07-08 14:38:15 +02:00
Andy Wingo
4c6f1b6cef
Break local worklist out to its own file
2024-07-08 10:49:46 +02:00
Andy Wingo
dd3953ef1a
Factor trace deque out to shared-worklist.h
...
Also increase alignment to account for cache line prefetcher.
2024-07-08 10:42:58 +02:00
Andy Wingo
3d2a12c684
Rework parallel tracing state machine
...
Instead of sending a message to each worker, we pthread_cond_broadcast
at the start. Instead of having N worker threads, we have N-1 threads
and the main thread also does work. Instead of termination being
detected by the worker threads, let the main thread detect it. Avoid
parallelism if the mark stack is small enough, which can be the case for
ephemeron chains. Let aux threads exit when they have no work instead
of spinning: sharing will start them up again.
2023-10-23 11:26:33 +02:00
Andy Wingo
9cc12916a9
parallel marker: speed up sharing from local to published queue
2023-10-23 11:17:28 +02:00
Andy Wingo
e6de2fd633
Reorganize source tree and document
2023-08-06 12:04:33 +02:00