1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-28 14:00:31 +02:00
Commit graph

17 commits

Author SHA1 Message Date
Andy Wingo
81da950ebe Steal becomes an instant event 2025-02-12 14:33:05 +01:00
Andy Wingo
d675a9b8f1 Add tracepoints to tracer itself
Also fix an issue whereby the main thread would spin, waiting for other
active threads to finish, doing no work itself.
2025-02-11 16:14:27 +01:00
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
Renamed from parallel-tracer.h (Browse further)