RESOLVED FIXED 140717
Change Heap::m_compiledCode to use a Vector
https://bugs.webkit.org/show_bug.cgi?id=140717
Summary Change Heap::m_compiledCode to use a Vector
Mark Hahnenberg
Reported 2015-01-20 22:15:57 PST
Right now it's a DoublyLinkedList, which is iterated during each collection. This contributes to some of the longish Eden pause times. A Vector would be more appropriate and would also allow ExecutableBase to be 2 pointers smaller.
Attachments
Patch (3.93 KB, patch)
2015-01-20 22:22 PST, Mark Hahnenberg
no flags
Patch (4.21 KB, patch)
2015-01-21 07:32 PST, Mark Hahnenberg
no flags
GC logs before (9.70 KB, text/plain)
2015-01-21 11:08 PST, Mark Hahnenberg
no flags
GC logs after (9.69 KB, text/plain)
2015-01-21 11:08 PST, Mark Hahnenberg
no flags
Mark Hahnenberg
Comment 1 2015-01-20 22:22:47 PST
Benjamin Poulain
Comment 2 2015-01-21 01:02:06 PST
Hi Mark :)
Mark Hahnenberg
Comment 3 2015-01-21 07:32:23 PST
Mark Hahnenberg
Comment 4 2015-01-21 07:33:10 PST
(In reply to comment #2) > Hi Mark :) Hello :-)
Andreas Kling
Comment 5 2015-01-21 09:57:26 PST
Comment on attachment 245062 [details] Patch r=me Good job! *claps*
Mark Hahnenberg
Comment 6 2015-01-21 11:08:36 PST
Created attachment 245070 [details] GC logs before
Mark Hahnenberg
Comment 7 2015-01-21 11:08:52 PST
Created attachment 245071 [details] GC logs after
Mark Hahnenberg
Comment 8 2015-01-21 11:11:32 PST
Just as a data point, I've attached some GC timing logs gathered by running the Octane 2.0 benchmark in browser before and after this change. ClearUnmarkedExecutables goes from: [34505] ClearUnmarkedExecutables (All): 133.93ms (avg. 0.25, min. 0.00, max. 5.35, count 544) [34505] ClearUnmarkedExecutables (Eden): 121.88ms (avg. 0.24, min. 0.03, max. 5.35, count 506) [34505] ClearUnmarkedExecutables (Full): 12.05ms (avg. 0.32, min. 0.00, max. 3.55, count 38) to: [34530] ClearUnmarkedExecutables (All): 14.53ms (avg. 0.03, min. 0.00, max. 1.76, count 556) [34530] ClearUnmarkedExecutables (Eden): 13.22ms (avg. 0.03, min. 0.01, max. 1.76, count 518) [34530] ClearUnmarkedExecutables (Full): 1.30ms (avg. 0.03, min. 0.00, max. 0.66, count 38) overall time goes down as well. Before: [34505] Collect (All): 1499.15ms (avg. 2.76, min. 0.43, max. 42.51, count 544) [34505] Collect (Eden): 931.76ms (avg. 1.84, min. 0.51, max. 42.51, count 506) [34505] Collect (Full): 567.39ms (avg. 14.93, min. 0.43, max. 31.69, count 38) after: [34530] Collect (All): 1372.41ms (avg. 2.47, min. 0.25, max. 37.83, count 556) [34530] Collect (Eden): 813.91ms (avg. 1.57, min. 0.45, max. 37.83, count 518) [34530] Collect (Full): 558.51ms (avg. 14.70, min. 0.25, max. 25.97, count 38) (despite doing more collections :-)
WebKit Commit Bot
Comment 9 2015-01-21 18:56:23 PST
Comment on attachment 245062 [details] Patch Clearing flags on attachment: 245062 Committed r178884: <http://trac.webkit.org/changeset/178884>
WebKit Commit Bot
Comment 10 2015-01-21 18:56:26 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.