mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-27 21:40:34 +02:00
copy-space: Fix bug computing field logging byte location
Also re-enable survivors in generational-pcc :)
This commit is contained in:
parent
27f9a1f01e
commit
b37a7f3862
2 changed files with 2 additions and 2 deletions
|
@ -346,7 +346,7 @@ copy_space_field_logged_byte(struct gc_edge edge) {
|
|||
base += offsetof(struct copy_space_slab, blocks);
|
||||
uintptr_t field = (addr & (COPY_SPACE_SLAB_SIZE - 1)) / sizeof(uintptr_t);
|
||||
uintptr_t byte = field / 8;
|
||||
return (uint8_t*) (base + field);
|
||||
return (uint8_t*) (base + byte);
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
|
|
|
@ -324,7 +324,7 @@ static inline int do_minor_trace(struct gc_heap *heap, struct gc_edge edge,
|
|||
// However however, it is hard to distinguish between edges from promoted
|
||||
// objects and edges from old objects, so we mostly just rely on an
|
||||
// idempotent "log if unlogged" operation instead.
|
||||
int promote = copy_space_should_promote(new_space, ref) || 1;
|
||||
int promote = copy_space_should_promote(new_space, ref);
|
||||
struct copy_space *dst_space = promote ? old_space : new_space;
|
||||
struct copy_space_allocator *alloc = promote
|
||||
? trace_worker_old_space_allocator(data)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue