[sgen] Optimized mark/scan loop for major collections.
authorMark Probst <mark.probst@gmail.com>
Wed, 27 Aug 2014 23:23:22 +0000 (16:23 -0700)
committerMark Probst <mark.probst@gmail.com>
Wed, 26 Nov 2014 18:38:34 +0000 (10:38 -0800)
commit6b8596eb32ceb0d913d3195812cef47adeecf6d7
tree1796b74e4fb0767ca00a0af898b479e2674ddc3a
parenta27ab44e3547a62c9380c655c2292778a69a7b90
[sgen] Optimized mark/scan loop for major collections.

The basic idea here is to make a loop that combines dequeuing from the
gray queue, scanning and marking/copying/enqueuing, with redundancies
removed and special-casing of the common case.

We make the small bitmap type descriptor only apply to small (as
opposed to LOS) objects so that we can quickly check in that case
whether an object is in the LOS or not without actually looking up its
size.

We disable evacuation and the split nursery because the code doesn't
support them yet.
mono/metadata/sgen-descriptor.c
mono/metadata/sgen-gc.c
mono/metadata/sgen-gc.h
mono/metadata/sgen-marksweep.c