1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-02 02:10:19 +02:00

Merge remote-tracking branch 'whippet/main' into wip-whippet

This commit is contained in:
Andy Wingo 2025-05-23 09:39:59 +02:00
commit 8c4866cd5c
3 changed files with 10 additions and 4 deletions

View file

@ -209,7 +209,8 @@ gc_visit_ephemeron_key(struct gc_edge edge, struct gc_heap *heap) {
if (large_object_space_contains_with_lock(lospace, ref))
return large_object_space_is_marked(lospace, ref);
GC_CRASH();
// Assume it is in the extern space.
return 1;
}
static int
@ -585,9 +586,11 @@ grow_heap_if_necessary(struct gc_heap *heap,
struct nofl_space *nofl = heap_nofl_space(heap);
size_t pending = nofl_space_shrink(nofl, 0);
// If we cannot defragment and are making no progress but have a
// growable heap, expand by 25% to add some headroom.
size_t needed_headroom =
GC_CONSERVATIVE_TRACE
? nofl_active_block_count (nofl) * NOFL_BLOCK_SIZE / 16
? (progress ? 0 : nofl_active_block_count (nofl) * NOFL_BLOCK_SIZE / 4)
: 0;
size_t headroom = nofl_empty_block_count(nofl) * NOFL_BLOCK_SIZE;

View file

@ -461,7 +461,9 @@ int gc_visit_ephemeron_key(struct gc_edge edge, struct gc_heap *heap) {
if (large_object_space_contains_with_lock(heap_large_object_space(heap), ref))
return large_object_space_is_marked(heap_large_object_space(heap), ref);
GC_CRASH();
// Assume it is in the extern space.
return 1;
}
static int mutators_are_stopping(struct gc_heap *heap) {

View file

@ -278,7 +278,8 @@ int gc_visit_ephemeron_key(struct gc_edge edge, struct gc_heap *heap) {
} else if (large_object_space_contains_with_lock(heap_large_object_space(heap), ref)) {
return large_object_space_is_marked(heap_large_object_space(heap), ref);
}
GC_CRASH();
// Assume it is in the extern space.
return 1;
}
static void trace(struct gc_edge edge, struct gc_heap *heap, void *visit_data) {