1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-27 21:40:34 +02:00
Commit graph

266 commits

Author SHA1 Message Date
Andy Wingo
19fdd481d5 Fix some corner cases with hole zeroing of empty blocks 2024-08-23 21:20:40 +02:00
Andy Wingo
d137e1397c Instead of partitioning blocks by flag, put them in separate lists
This way you can directly iterate blocks of a certain kind.  Also verify
these lists more thoroughly, and allow full blocks that are the results
of evacuation to skip being swept the next round.  Also!  Have
next_hole_in_block / next_hole_in_block ensure that the object data and
the mark bytes are clear.
2024-08-22 21:47:15 +02:00
Andy Wingo
b663e5878e nofl: Refactor evacuation allocation to be thread-local
This relaxes a "reliability" requirement, as in
https://wingolog.org/archives/2024/07/10/copying-collectors-with-block-structured-heaps-are-unreliable.
2024-08-21 15:07:50 +02:00
Andy Wingo
004a3d0411 Factor nofl-space out of whippet 2024-08-21 10:19:26 +02:00
Andy Wingo
b6e9d3c0bb Fix bug in which empty block would not have mark bits cleared 2024-08-21 10:16:00 +02:00
Andy Wingo
ea15d142fc Update documentation 2024-08-05 15:19:07 +02:00
Andy Wingo
e40b224faf Attempt to dynamically choose whether to atomically forward 2024-08-05 15:03:24 +02:00
Andy Wingo
12eb0e0c42 Update documentation 2024-08-05 14:47:32 +02:00
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