Implement aging in the split nursery.
commit0e3af05102caa6ddaaa7bfa16d2fce584b5c66b9
authorRodrigo Kumpera <kumpera@gmail.com>
Wed, 18 Apr 2012 21:07:22 +0000 (18 18:07 -0300)
committerRodrigo Kumpera <kumpera@gmail.com>
Thu, 19 Apr 2012 21:35:10 +0000 (19 18:35 -0300)
treef23f403d85cd67f395ff7556647d5da32f09e493
parent5a5128b2d8ccbca5c70a9bd240d58017d19dc95f
Implement aging in the split nursery.

* sgen-split-nursery.c: Implement aging. Age information is
stored in 512 byte buckets in parallel to the nursery.
This increases our bandwidth requirements by a small bit
but has the advantage not requiring us to mess with the
status word of objects.

Reducing the number of available bits for hashing sounded
like a specially bad idea since ages above 1 are not very
usefull unless you're a long living object.

The object promotion code was split into a fast/slow path
since we now have per-age bump allocators. The fast path
is extremely efficient and does only 3 comparisons and a
bunch of cache hot lookups.
mono/metadata/sgen-split-nursery.c