Fix a critical space leak introduced by concurrent sweeping.

When computing the bitmaps for each heap, the live bitmap was assumed
to have greater extent than the mark bitmap.  With the concurrent
sweep the mark and live bitmaps are swapped before the sweep bitmaps
are computed.  As such, the live bitmap extent is always less than or
equal to the mark bitmap.  A benchmark which loops creating objects
just to drop them on the floor will exclude most objects in the heap
as candidates for sweeping and will exhaust the heap.

The change fixes the extent computation and reintroduces an assert to
check that the bitmap we assume to be the largest is the largest.

Change-Id: I78694d2a0550de70c85e2087d482050a147a207a
1 file changed