nonmoving: Don't do two passes over large and compact object lists

Authored by bgamari on Jul 31 2019, 8:54 PM.

Description

nonmoving: Don't do two passes over large and compact object lists

Previously we would first move the new objects to their appropriate
non-moving GC list, then do another pass over that list to clear their
mark bits. This is needlessly expensive. First clear the mark bits of
the existing objects, then add the newly evacuated objects and, at the
same time, clear their mark bits.

This cuts the preparatory GC time in half for the Pusher benchmark with
a large queue size.

Details

Committed
bgamariOct 22 2019, 5:57 PM
Parents
rGHC91109404b7ac: nonmoving: Trace GC preparation steps
Branches
Unknown
Tags
Unknown