RESOLVED FIXED 194944
[JSC] We should consider moving UnlinkedFunctionExecutable::m_parentScopeTDZVariables to RareData
https://bugs.webkit.org/show_bug.cgi?id=194944
Summary [JSC] We should consider moving UnlinkedFunctionExecutable::m_parentScopeTDZV...
Caio Lima
Reported 2019-02-22 07:19:00 PST
Based on profiling data on Speedometer2, JetStream2, Kranken, Octane and LongSpider, `UnlinkedFunctionExecutable::m_parentScopeTDZVariables` often is carrying an empty VariableEnvironment (see results below). In such case, we should consider move it to RareData and ensure it only when `parentScopeTDZVariables` is not empty.
Attachments
WIP - Patch (21.29 KB, patch)
2019-02-26 19:11 PST, Caio Lima
no flags
WIP - Patch (21.20 KB, patch)
2019-02-26 19:37 PST, Caio Lima
no flags
Archive of layout-test-results from ews126 for ios-simulator-wk2 (2.55 MB, application/zip)
2019-02-26 22:51 PST, EWS Watchlist
no flags
Patch (22.32 KB, patch)
2019-02-28 09:59 PST, Caio Lima
no flags
Patch (23.85 KB, patch)
2019-03-18 10:27 PDT, Caio Lima
no flags
Patch (23.87 KB, patch)
2019-04-01 08:43 PDT, Caio Lima
no flags
Patch (23.82 KB, patch)
2019-04-04 07:30 PDT, Caio Lima
no flags
Caio Lima
Comment 1 2019-02-22 07:20:27 PST
Data collected from Speedometer2 Total number of UFE: 39463 Total number of non-empty parentScopeTDZVars: 428 Data collected from JetStream2 Total number of UFE: 83715 Total number of non-empty parentScopeTDZVars: 5285 Data from other benchmarks Octane/jquery Total number of UFE: 75334 Total number of non-empty VarEnv: 10 Octane/typescript Total number of UFE: 1773 Total number of non-empty VarEnv: 10 Octane/pdfjs Total number of UFE: 1047 Total number of non-empty VarEnv: 10
Caio Lima
Comment 2 2019-02-26 19:11:55 PST
Created attachment 363057 [details] WIP - Patch
Caio Lima
Comment 3 2019-02-26 19:37:07 PST
Created attachment 363060 [details] WIP - Patch
EWS Watchlist
Comment 4 2019-02-26 22:51:06 PST
Comment on attachment 363060 [details] WIP - Patch Attachment 363060 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: https://webkit-queues.webkit.org/results/11299222 New failing tests: fast/viewport/ios/device-width-viewport-after-changing-view-scale.html
EWS Watchlist
Comment 5 2019-02-26 22:51:08 PST
Created attachment 363074 [details] Archive of layout-test-results from ews126 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews126 Port: ios-simulator-wk2 Platform: Mac OS X 10.13.6
Caio Lima
Comment 6 2019-02-28 09:59:56 PST
Caio Lima
Comment 7 2019-03-18 10:27:08 PDT
Caio Lima
Comment 8 2019-03-25 12:47:55 PDT
Ping Review
Caio Lima
Comment 9 2019-04-01 08:43:25 PDT
Keith Miller
Comment 10 2019-04-03 15:04:52 PDT
Comment on attachment 366398 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=366398&action=review r=me with some comments. > Source/JavaScriptCore/ChangeLog:3 > + [JSC] We should consider move UnlinkedFunctionExecutable::m_parentScopeTDZVariables to RareData typo: move=>moving. > Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1278 > + bool m_cachedVariablesUnderTDZIsEmpty { false }; Nit: I think this is clearer as m_hasCachedVariablesUnderTDZ since that's the active tense.
Caio Lima
Comment 11 2019-04-04 07:30:40 PDT
Caio Lima
Comment 12 2019-04-04 09:54:32 PDT
Comment on attachment 366709 [details] Patch Thank you very much for the review!
WebKit Commit Bot
Comment 13 2019-04-04 10:21:21 PDT
Comment on attachment 366709 [details] Patch Clearing flags on attachment: 366709 Committed r243875: <https://trac.webkit.org/changeset/243875>
WebKit Commit Bot
Comment 14 2019-04-04 10:21:23 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 15 2019-04-04 10:22:24 PDT
Saam Barati
Comment 16 2019-04-04 16:10:48 PDT
(In reply to Caio Lima from comment #1) > Data collected from Speedometer2 > > Total number of UFE: 39463 > Total number of non-empty parentScopeTDZVars: 428 > > Data collected from JetStream2 > > Total number of UFE: 83715 > Total number of non-empty parentScopeTDZVars: 5285 > > Data from other benchmarks > > Octane/jquery > Total number of UFE: 75334 > Total number of non-empty VarEnv: 10 > > Octane/typescript > Total number of UFE: 1773 > Total number of non-empty VarEnv: 10 > > Octane/pdfjs > Total number of UFE: 1047 > Total number of non-empty VarEnv: 10 What about all of JetStream 2?
Caio Lima
Comment 17 2019-04-24 11:13:36 PDT
(In reply to Saam Barati from comment #16) > (In reply to Caio Lima from comment #1) > > Data collected from Speedometer2 > > > > Total number of UFE: 39463 > > Total number of non-empty parentScopeTDZVars: 428 > > > > Data collected from JetStream2 > > > > Total number of UFE: 83715 > > Total number of non-empty parentScopeTDZVars: 5285 > > > > Data from other benchmarks > > > > Octane/jquery > > Total number of UFE: 75334 > > Total number of non-empty VarEnv: 10 > > > > Octane/typescript > > Total number of UFE: 1773 > > Total number of non-empty VarEnv: 10 > > > > Octane/pdfjs > > Total number of UFE: 1047 > > Total number of non-empty VarEnv: 10 > > What about all of JetStream 2? Numbers shows that 6% of total number of UnlinkedFunctionExecutable have non-empty VariableEnvironment. I'm not sure what is the policy to move something to RareData, but I think we should consider this a case to be rare.
Note You need to log in before you can comment on or make changes to this bug.