|Summary:||MarkedBlocks shouldn't be put in Allocated state if they didn't produce a FreeList|
|Product:||WebKit||Reporter:||Mark Hahnenberg <mhahnenberg>|
|Version:||528+ (Nightly build)|
Description Mark Hahnenberg 2013-09-12 10:39:49 PDT
Right now, after a collection all MarkedBlocks are in the Marked block state. When lazy sweeping happens, if a block returns an empty free list after being swept, we call didConsumeFreeList(), which moves the block into the Allocated block state. This happens to both the block that was just being allocated out of (i.e. m_currentBlock) as well as any blocks who are completely full. We should distinguish between these two cases: m_currentBlock should transition to Allocated (because we were just allocating out of it) and any subsequent block that returns an empty free list should transition back to the Marked state. This will make the block state more consistent with the actual state the block is in, and it will also allow us to speed up moving all blocks the the Marked state during generational collection.
Comment 2 Geoffrey Garen 2013-09-12 11:04:43 PDT
Comment 3 Mark Hahnenberg 2013-09-12 11:05:43 PDT
Comment 4 Mark Hahnenberg 2013-09-12 11:12:27 PDT
Committed r155632: <http://trac.webkit.org/changeset/155632>
Comment 5 Mark Hahnenberg 2013-09-12 15:39:03 PDT
Reopening because the patch was rolled out. Need to figure out what went wrong.
Comment 6 Mark Hahnenberg 2013-09-13 10:11:10 PDT
I think the issue was that there are other clients of canonicalize other than garbage collection that were screwing up the block state when they canonicalized prematurely.
Comment 8 Geoffrey Garen 2013-09-16 10:59:21 PDT