Summary: | MarkedBlocks shouldn't be put in Allocated state if they didn't produce a FreeList | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Mark Hahnenberg <mhahnenberg> | ||||||
Component: | JavaScriptCore | Assignee: | Mark Hahnenberg <mhahnenberg> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | ||||||||
Priority: | P2 | ||||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
Description
Mark Hahnenberg
2013-09-12 10:39:49 PDT
Created attachment 211442 [details]
Patch
Comment on attachment 211442 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=211442&action=review r=me > Source/JavaScriptCore/heap/MarkedAllocator.cpp:42 > + block->didSweepButToNoAvail(); How about "didConsumeEmptyFreeList"? ("No avail" doesn't specify what you were trying to avail yourself of.) Comment on attachment 211442 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=211442&action=review > Source/JavaScriptCore/ChangeLog:16 > + all blocks the the Marked state during generational collection. s/the the/to the/ >> Source/JavaScriptCore/heap/MarkedAllocator.cpp:42 >> + block->didSweepButToNoAvail(); > > How about "didConsumeEmptyFreeList"? ("No avail" doesn't specify what you were trying to avail yourself of.) Sounds good to me! Committed r155632: <http://trac.webkit.org/changeset/155632> Reopening because the patch was rolled out. Need to figure out what went wrong. 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. Created attachment 211592 [details]
Patch
Comment on attachment 211592 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=211592&action=review r=me > Source/JavaScriptCore/heap/MarkedAllocator.h:135 > +inline void MarkedAllocator::uncanonicalizeCellLivenessData() > +{ > + if (!m_canonicalizedBlock) > + return; > + > + m_freeList = m_canonicalizedBlock->uncanonicalizeCellLivenessData(); > + m_currentBlock = m_canonicalizedBlock; > + m_canonicalizedBlock = 0; > +} Let's call these functions "stopAllocating" and "resumeAllocating". That way, we're a little clearer about what's prohibited in this state. Otherwise, "canonical" doesn't sound like such a bad thing. > Source/JavaScriptCore/heap/MarkedSpace.h:86 > + bool iterationInProgress() { return m_currentlyIterating; } Let's call this "isIterating()" and "m_isIterating". Committed r155891: <http://trac.webkit.org/changeset/155891> |