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

21 commits

Author SHA1 Message Date
Andy Wingo
1493bf6398 Add gc_object_is_old_generation
Will be useful for write barriers.
2024-10-01 15:48:55 +02:00
Andy Wingo
1f4e3bdf37 Add field-logging write barrier (fast path only)
Add a new kind of write barrier, one which has a bit per field; the
mutator that sets the bit will need to add the field's location (the
edge) to a remembered set.  Here we just have the fast-path
implementation.
2024-10-01 10:34:27 +02:00
Andy Wingo
8fba0e5322 Implement cooperative safepoint API
Fixes https://github.com/wingo/whippet/issues/9.
2024-09-18 11:54:36 +02:00
Andy Wingo
9f26dbb1fc Implement per-object pinning API
Fixes https://github.com/wingo/whippet/issues/6.
2024-09-18 10:55:02 +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
3d4d4d047c Fix BDW finalization; ensure pending set is marked 2024-07-24 10:01:16 +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
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
Andy Wingo
514dcc702e Allow embedder to request a major GC 2023-10-18 15:13:41 +02:00
Andy Wingo
5130380ae5 Rework stats collection to use listener interface 2023-10-16 12:13:08 +02:00
Andy Wingo
3c63de9b9d bdw: Turn off all_interior_pointers
Quoth gc_inline.h, which makes freelists:

/* Note that for these routines, it is the clients responsibility to    */
/* add the extra byte at the end to deal with one-past-the-end pointers.*/
/* In the standard collector configuration, the collector assumes that  */
/* such a byte has been added, and hence does not trace the last word   */
/* in the resulting object.                                             */
/* This is not an issue if the collector is compiled with               */
/* DONT_ADD_BYTE_AT_END, or if GC_all_interior_pointers is not set.     */
2023-10-07 23:09:10 +02:00
Andy Wingo
9936d98f70 Rework heap marking 2023-10-02 22:48:59 +02:00
Andy Wingo
41591d8722 bdw: Ensure heap and mutators are live
Before, we were relying on the heap and mutators being reachable from
roots.  This is no longer the case.
2023-09-30 21:58:46 +02:00
Andy Wingo
4d1358219b Fix amazing error in bdw.c 2023-09-22 15:19:55 +02:00
Andy Wingo
296e5e8458 BDW collector marks mutator/heap roots
Needed if a mutator has off-heap (mmap) storage.
2023-09-21 10:08:23 +02:00
Andy Wingo
dc013cfb58 Change gc_allocate_ephemeron to return struct gc_ephemeron 2023-09-11 11:48:32 +02:00
Andy Wingo
fbe49598f5 Add "extern space"
This is mostly for static data.
2023-08-15 11:38:11 +02:00
Andy Wingo
e6de2fd633 Reorganize source tree and document 2023-08-06 12:04:33 +02:00
Renamed from bdw.c (Browse further)