Andy Wingo
2b59efd9fc
Fix semi-space with fixed-sized heaps
2024-09-16 15:06:50 +02:00
Andy Wingo
506b4187fc
Update manual
2024-09-16 14:33:30 +02:00
Andy Wingo
b7306950bc
Implement adaptive heap sizing for semi
2024-09-16 14:19:54 +02:00
Andy Wingo
1bf250f62a
Heap growth can compete with lospace for nofl blocks
2024-09-16 13:40:09 +02:00
Andy Wingo
317039d952
Relax assertion when expanding the heap
...
It could be that newly mapped blocks were already acquired by other threads.
2024-09-16 13:07:25 +02:00
Andy Wingo
dcfdc547f6
Whoops, fix refactor-induced locking problem
2024-09-16 11:45:01 +02:00
Andy Wingo
cf570d0206
Don't release shared worklist buffers when less than 256 kB
...
Fixes https://github.com/wingo/whippet/issues/8 .
2024-09-16 10:51:07 +02:00
Andy Wingo
7984f60eae
MMC and PCC defer actual page-out operations to background thread
...
Should avoid excessive VM traffic when allocating large objects, or when
the adaptive heap sizer is on and we see frequent expansions and
resizes.
2024-09-16 10:00:01 +02:00
Andy Wingo
d785f082b1
Factor out adapative heap sizer background thread to own file
...
This will let us piggy-back on the thread to asynchronously release
memory to the OS.
2024-09-16 10:00:01 +02:00
Andy Wingo
2818958c59
First version of adaptive heap sizing for pcc and mcc
2024-09-16 09:59:55 +02:00
Andy Wingo
d19366bea2
Remove mention of concurrent marking for mmc
2024-09-10 11:35:28 +02:00
Andy Wingo
48085393f3
Update some doc links
2024-09-10 11:31:55 +02:00
Andy Wingo
4cdb47de6a
There are four lights
2024-09-10 11:28:15 +02:00
Andy Wingo
1ff082705e
Remove scc
...
PCC with GC_PARALLEL=0 is exactly equivalent to SCC. Also now that PCC
will dynamically avoid atomic forwarding if parallelism is disabled at
run-time, there is no need to keep SCC around.
2024-09-10 11:10:47 +02:00
Andy Wingo
6545b34073
Reorder events in event listener; refactors to mmc and pcc
...
In GC, request mutators to stop before doing anything else; changes the
order of the event listener interface. Also, refactor mmc to look more
like pcc.
2024-09-10 10:55:38 +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
8604ad6beb
mmc reformatting
2024-09-08 09:54:16 +02:00
Andy Wingo
2915b052e4
Whoops, typo on mmc docs
2024-09-02 14:20:52 +02:00
Andy Wingo
519949edf3
Update .gitignore
2024-09-02 13:24:38 +02:00
Andy Wingo
44a7240e16
Rename "whippet" collector to "mmc": mostly marking collector
2024-09-02 13:19:05 +02:00
Andy Wingo
cf129f10de
nofl: Block marks are bytes
...
There was no need to use a bitvector, and the marks were only being
partially cleared. More straightforward (and still low overhead) as
bytes.
2024-08-30 21:20:34 +02:00
Andy Wingo
8d6db735fd
Nofl space can have discontiguous slabs
2024-08-30 16:53:20 +02:00
Andy Wingo
1a7d08baac
Add separate extents header
...
Will be useful to let slab heaps grow.
2024-08-30 16:53:20 +02:00
Andy Wingo
c949e4e4a9
Refactor representation of blocks in nofl space
2024-08-30 16:53:20 +02:00
Andy Wingo
a180be0cbd
Merge pull request #4 from Z572/fix-doc
...
fix guile.md link
2024-08-26 09:23:40 +02:00
Andy Wingo
59b85abbda
Fix regarding memset of block marks
2024-08-25 20:46:05 +02:00
Andy Wingo
59c9f5dff9
Mark blocks that are targets of evacuation
2024-08-25 08:58:55 +02:00
Andy Wingo
7b4a56c51a
nofl: Fix sticky mark bit treatment for block marks
2024-08-25 08:45:17 +02:00
Andy Wingo
b8c0fa0e90
nofl: simplify sweeping
...
No more need to identify empties during sweeping, as that is done
eagerly during the pause.
2024-08-24 21:52:47 +02:00
Andy Wingo
6dcec272b1
nofl: eagerly sweep empty blocks
2024-08-24 21:31:07 +02:00
Andy Wingo
010185f729
nofl: Refactor to trace visitor
2024-08-24 16:38:11 +02:00
Andy Wingo
7db72e7f80
whippet: ensure mutators release allocators before start_gc
2024-08-24 09:09:23 +02:00
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
Zheng Junjie
1f6f5aeab7
fix guile.md link
2024-08-14 22:36:50 +08: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