m. Why RankEXACT? Probably has no effect, but if so, we should say so. rule.generic.clear
Originally posted by @rptb1 in #34 (comment)
poolWalk creates a kind of fake trace so that it can re-use SegScan to scan segments to visit formatted objects. SegScan requires a scan state, and scans at the rank determined by that scan state. poolWalk always creates a scan state with RankEXACT, regardless of the actual ranks present on the segments in the pool. This instructs the pool to only scan exact references, which could cause it to skip objects, making the walk incomplete.
|
ScanStateInit(&ss, ts, arena, RankEXACT, trace->white); |
None of the current pool implementations will skip objects, but the assumption breaks rule.code.assume and will break if we implement any mixed rank segments.
Originally posted by @rptb1 in #34 (comment)
poolWalk creates a kind of fake trace so that it can re-use SegScan to scan segments to visit formatted objects. SegScan requires a scan state, and scans at the rank determined by that scan state. poolWalk always creates a scan state with RankEXACT, regardless of the actual ranks present on the segments in the pool. This instructs the pool to only scan exact references, which could cause it to skip objects, making the walk incomplete.
mps/code/walk.c
Line 449 in 8635e90
None of the current pool implementations will skip objects, but the assumption breaks rule.code.assume and will break if we implement any mixed rank segments.