Skip to content

Commit

Permalink
bugfix? LGC should never clear a suspect...
Browse files Browse the repository at this point in the history
Previously, LGC was attempting to unpin objects and then unmark them
as suspects. This is not correct -- it's possible for a suspect to
be in scope of LGC, and it should remain a suspect, because LGC can
have one or more ancestor heaps in scope. (So, for example, an
ancestor object that contains a down-pointer would be marked as
suspect, could be in-scope of the LGC, and should remain a suspect.)
  • Loading branch information
shwestrick committed Feb 15, 2024
1 parent 5023c0e commit 8d32f9b
Showing 1 changed file with 0 additions and 6 deletions.
6 changes: 0 additions & 6 deletions runtime/gc/hierarchical-heap-collection.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,6 @@ static inline HM_HierarchicalHeap toSpaceHH (GC_state s, struct ForwardHHObjptrA
static bool try_disentangle_object(objptr op, uint32_t opDepth) {
if (isPinned(op) && unpinDepthOf(op) >= opDepth) {
bool successful_unpin = tryUnpinWithDepth(op, opDepth);
if (successful_unpin && ES_contains(NULL, op)) {
LOG(LM_HIERARCHICAL_HEAP, LL_INFO,
"disentangling a suspect at depth %u",
opDepth);
return try_clear_suspect(op, opDepth);
}
return successful_unpin;
}
return TRUE;
Expand Down

0 comments on commit 8d32f9b

Please sign in to comment.