Andy Wingo
1925f84d3a
Add missing file
2024-08-05 14:44:34 +02:00
Andy Wingo
37e57f8c8d
Add serial copying collector
2024-08-05 14:41:04 +02:00
Andy Wingo
0ee58abb46
Add gc_finalizer_priority_count to gc-embedder-api.h
2024-08-05 11:56:46 +02:00
Andy Wingo
d3383ad911
Bulk-zero copy-space blocks
2024-08-05 11:48:25 +02:00
Andy Wingo
4c6889b751
Factor copy space out of pcc
2024-08-05 11:40:58 +02:00
Andy Wingo
6c5cdd73c9
refactor pcc. no functional change
2024-07-29 11:31:52 +02:00
Andy Wingo
22f5b44330
Docs docs
2024-07-27 22:34:43 +02:00
Andy Wingo
50e90a026a
Docs docs
2024-07-27 22:33:56 +02:00
Andy Wingo
3ce0899729
Docs docs
2024-07-27 22:32:08 +02:00
Andy Wingo
9b2677a57b
Docs docs
2024-07-27 22:30:42 +02:00
Andy Wingo
cc6b1c1fb5
typos
2024-07-27 22:28:55 +02:00
Andy Wingo
ab5071f97a
Rework docs
2024-07-27 22:26:24 +02:00
Andy Wingo
3d4d4d047c
Fix BDW finalization; ensure pending set is marked
2024-07-24 10:01:16 +02:00
Andy Wingo
c7309a9657
Ensure fired finalizers are traced
2024-07-24 09:54:15 +02:00
Andy Wingo
068e0e5cdf
Add benchmark for finalizers
...
Doesn't quite work on BDW yet.
2024-07-24 09:51:56 +02:00
Andy Wingo
f6057184e1
Add finalizers
2024-07-23 22:33:29 +02:00
Andy Wingo
9167dbb5f6
Fix returning partially allocated blocks that are actually full
2024-07-12 09:06:26 +02:00
Andy Wingo
64c7d73fa2
Add partially allocated block list.
...
Stopping a mutator or evacuator adds to this list.
2024-07-11 22:15:59 +02:00
Andy Wingo
c556dedb56
Add pcc collector to docs
2024-07-11 21:07:26 +02:00
Andy Wingo
d5ef140dfe
Add parallel copying collector
2024-07-11 15:54:15 +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
ff1e1b1d44
whippet: avoid an atomic load when visiting already-marked objects
2024-07-10 11:50:08 +02:00
Andy Wingo
d50455ed1b
Add new gc_atomic_forward_object_size API
...
Also remove an unused function in whippet.c
2024-07-10 11:50:05 +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
82afee8693
Break simple serial worklist out to its own file
2024-07-08 11:49:47 +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
b4bf949df6
Add Guix manifest.scm
2024-07-03 10:38:55 +02:00
Andy Wingo
5ba0aec869
Remove unused function
2023-12-10 22:08:05 +01:00
Andy Wingo
1267f77de3
Basic stats records latency readings in a histogram, prints p95
2023-12-10 21:24:03 +01:00
Andy Wingo
4b51376447
Add mechanism to compose event listeners
2023-12-06 21:48:39 +01:00
Andy Wingo
3ce75b2bad
Fix bug in which we could forget to mark stopping mutators
...
Separately track total mutator count, paused mutators, and inactive
mutators. Paused mutators need to mark their roots before stopping. We
had a bug whereby a paused mutator would not wake up before the next
collection, which resulted in that mutator's roots not being marked.
Fix by resetting paused mutator count to 0 after collection, requiring
those mutators to sync up again.
2023-11-10 15:09:10 +01:00
Andy Wingo
adaffab3da
Fix a case where we might miss some sweeping
...
Unlike next_hole, next_hole_in_block doesn't finish_hole, so it doesn't
clear metadata bits. Fix to always finish_hole when
finish_sweeping_in_block.
2023-11-10 15:07:45 +01:00
Andy Wingo
40be1a03cb
Add debug-mode heap verification to Whippet
2023-11-10 15:07:31 +01:00
Andy Wingo
361d880277
optdebug build uses -O2 instead of -Og
2023-11-06 22:12:34 +01:00
Andy Wingo
5ad83e49e1
Fix the debug fix
2023-11-06 22:06:51 +01:00
Andy Wingo
c4396a4214
Remove a release-mode debugging printout in whippet
2023-11-05 10:27:09 +01:00
Andy Wingo
3a1a5e0368
Fix linking against static libgc.a
...
Thanks to Thorsten Ball. Fixes #1 , #2 .
2023-10-25 11:33:24 +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
2cab526963
Fix gc_basic_stats_finish
2023-10-20 14:14:29 +02:00
Andy Wingo
9176aa650f
Fix BDW ephemeron implementation
...
* src/gc-ephemeron.c: Use key null-ness as dead ephemeron indicator;
works better with BDW-GC's disappearing link.
* src/bdw.c (gc_heap_ephemeron_trace_epoch): Fix to actually define the
epoch. Whoops!
2023-10-20 11:44:38 +02:00
Andy Wingo
cfc8c8a9b8
Allow embedder to request a major GC
2023-10-18 16:34:20 +02:00
Andy Wingo
0c7bdacc51
Revert "Allow embedder to request a major GC"
...
This reverts commit f39e6ee69f0aa2e14227a019a5332ba129418977.
2023-10-18 15:13:41 +02:00