Since JDK-8253600 g1 full gc has its own (temporary) attribute table storing information that it needs for evacuation.
Currently the naming corresponds to the attributes in HeapRegion. This is somewhat confusing, as they do not completely match.
While discussing this in the review for JDK-8262068 we thought of changing this to more reflect the purpose:
I.e.
closed -> not_marked_through (or "always live" or "always_marked" something similar to indicate that we do not need to mark through them)
pinned -> not_compacted
normal -> compacted (or just keep "normal" as it is some internal state)
Also, for verification the change could reset the attribute of just freed regions to "Invalid" again after marking when we free completely empty regions. This is purely for verification/assertion purposes.