Andy Wingo
a4e1f55f37
Implement generational collection
...
Not really battle-tested but it seems to work. Need to implement
heuristics for when to do generational vs full-heap GC.
2022-08-02 15:37:02 +02:00
Andy Wingo
13b3bb5b24
Update barrier functions to also have the object being written
...
Also remove read barriers, as they were unused, and we have no plans to
use them.
2022-08-02 15:37:02 +02:00
Andy Wingo
52166fe286
Add gc_edge data structure
...
Less casting in user programs, and it's a step on the way to evacuation
in whippet.
2022-07-20 14:40:47 +02:00
Andy Wingo
3f54fb3dbf
Fix semispace page stealing
...
Ensure number of stolen pages is even. Avoid madvising on every
collection. Cache the page size.
2022-04-17 21:51:20 +02:00
Andy Wingo
3315fc7477
Add large object space to semi-space collector
2022-04-14 22:20:27 +02:00
Andy Wingo
619a49ba41
Add large object space
...
Not wired up yet.
2022-04-13 21:43:18 +02:00
Andy Wingo
6300203738
Add call_without_gc API
...
This lets us call pthread_join safely
2022-03-29 21:58:52 +02:00
Andy Wingo
81037fd6d2
Convert semi-space collector to new API
2022-03-28 22:18:25 +02:00
Andy Wingo
883a761775
Stub out support for multiple mutator threads on semi, mark-sweep
...
For semi probably we never implement support for multiple mutator
threads. We will do local freelists for mark-sweep though.
2022-03-20 21:03:26 +01:00
Andy Wingo
32ddaa7624
Allocate GC context in GC-managed heap
2022-03-16 21:31:51 +01:00
Andy Wingo
e7a3f83bcc
Add quads benchmark
...
Also expand GC interface with "allocate_pointerless". Limit lazy
sweeping to the allocation size that is causing the sweep, without
adding to fragmentation.
2022-03-16 14:16:22 +01:00
Andy Wingo
f57a1b8a55
Refactor to separate gcbench from gc
2022-03-11 11:48:26 +01:00
Andy Wingo
283721b39a
Refactor handling of precise and conservative roots
2022-03-04 15:27:22 +01:00
Andy Wingo
30b5c8a6c8
Use handle API, add semispace collector
2022-02-28 21:35:28 +01:00