Structure::get is slow in part because DeferGC accesses stuff in vm.heap, which needs to be loaded into memory.
Created attachment 232853 [details] Micro benchmark This benchmark shows 4x regression compared to the shipping Safari.
Created attachment 232854 [details] Avoids creating DeferGC when we can
Two samples: 63.4 ms -> 54.7 ms 65.6 ms -> 58.2m ms It consistently show 13-16% improvement on my MacPro but I'm having a hard time getting a stable number over VNC.
Note that the shipping Safari runs it in 27-28ms.
Also see https://bugs.webkit.org/show_bug.cgi?id=133739
Comment on attachment 232854 [details] Avoids creating DeferGC when we can r=me
Comment on attachment 232854 [details] Avoids creating DeferGC when we can Thanks for the review!
Comment on attachment 232854 [details] Avoids creating DeferGC when we can Rejecting attachment 232854 [details] from commit-queue. Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.appspot.com', '--bot-id=webkit-cq-01', 'land-attachment', '--force-clean', '--non-interactive', '--parent-command=commit-queue', 232854, '--port=mac']" exit_code: 2 cwd: /Volumes/Data/EWS/WebKit Last 500 characters of output: -> origin/master Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ... Currently at 169813 = 75d812923619f0ba6dcfa596cd1449df8a934904 r169814 = 3bb9d9dd686ca12b45f1b9e1b01a23c1b128de74 r169815 = 8143a33eb79cf305998fff79a541d4db4c600a8b Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc First, rewinding head to replay your work on top of it... Fast-forwarded master to refs/remotes/origin/master. Full output: http://webkit-queues.appspot.com/results/4723952773496832
Committed r169816: <http://trac.webkit.org/changeset/169816>
Committed r169822: <http://trac.webkit.org/changeset/169822>