-
Notifications
You must be signed in to change notification settings - Fork 81
Description
I am implementing a remembered set for the Compressor, so that we can enumerate the slots from outside the Compressor space which refer into the Compressor space, in order to update the references. But I sometimes find that slots are duplicated in the remset. Updating a slot is not idempotent with the Compressor, so I have to deduplicate the remset, which is fast but probably not as fast as not deduplicating. I build the remset by detecting these slots in a modified version of PlanProcessEdges::process_slot. I haven't worked out how to track the provenance of slots which are duplicated, but at least some appear to be roots from mmtk-openjdk, as the slots are misaligned as embedded OOPs would be.
Should an implementor of ProcessEdgesWork anticipate seeing a slot more than once? Should VM bindings be permitted to give MMTk duplicated slots?