RESOLVED FIXED 129741
JSCell::m_gcData should encode its information differently
https://bugs.webkit.org/show_bug.cgi?id=129741
Summary JSCell::m_gcData should encode its information differently
Mark Hahnenberg
Reported 2014-03-05 08:24:40 PST
We want to keep track of three states for an object: (1) Not marked (which implies not in the remembered set) (2) Marked but not in the remembered set (3) Marked and in the remembered set Currently we only indicate marked vs. not marked in JSCell::m_gcData. During a write barrier, we only want to take the slow path if the object being stored to is in state (2). We'd like to make the test for state (2) as fast as possible, which probably means making it a compare against 0.
Attachments
Patch (22.91 KB, patch)
2014-03-05 12:11 PST, Mark Hahnenberg
no flags
Patch (22.85 KB, patch)
2014-03-05 12:18 PST, Mark Hahnenberg
no flags
Patch (22.91 KB, patch)
2014-03-05 12:29 PST, Mark Hahnenberg
ggaren: review+
Mark Hahnenberg
Comment 1 2014-03-05 12:11:52 PST
Mark Hahnenberg
Comment 2 2014-03-05 12:18:53 PST
Mark Hahnenberg
Comment 3 2014-03-05 12:29:01 PST
Geoffrey Garen
Comment 4 2014-03-05 13:07:24 PST
Comment on attachment 225905 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=225905&action=review r=me Is speedup? > Source/JavaScriptCore/runtime/JSCell.h:150 > + void mark() { m_gcData = Marked; } I would call this "setMarked". > Source/JavaScriptCore/runtime/JSCell.h:151 > + void remember() { ASSERT(m_gcData == Marked); m_gcData = MarkedAndRemembered; } "setRemembered(true)" > Source/JavaScriptCore/runtime/JSCell.h:152 > + void forget() { ASSERT(m_gcData == MarkedAndRemembered); m_gcData = Marked; } "setRemembered(false)"
Mark Hahnenberg
Comment 5 2014-03-05 14:33:09 PST
(In reply to comment #4) > (From update of attachment 225905 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=225905&action=review > > r=me > > Is speedup? No visible effect on benchmarks.
Mark Hahnenberg
Comment 6 2014-03-05 15:27:43 PST
Note You need to log in before you can comment on or make changes to this bug.