RESOLVED FIXED 159612
Inline store loop for CopyRest in DFG and FTL for certain array modes
https://bugs.webkit.org/show_bug.cgi?id=159612
Summary Inline store loop for CopyRest in DFG and FTL for certain array modes
Saam Barati
Reported 2016-07-10 18:54:29 PDT
...
Attachments
WIP (7.32 KB, patch)
2016-07-10 19:13 PDT, Saam Barati
no flags
patch (15.67 KB, patch)
2016-08-10 17:24 PDT, Saam Barati
fpizlo: review-
WIP (41.02 KB, patch)
2016-08-10 20:26 PDT, Saam Barati
no flags
WIP (52.43 KB, patch)
2016-08-11 19:43 PDT, Saam Barati
no flags
patch (63.32 KB, patch)
2016-08-12 12:26 PDT, Saam Barati
fpizlo: review+
patch for landing (66.44 KB, patch)
2016-08-12 15:13 PDT, Saam Barati
no flags
Saam Barati
Comment 1 2016-07-10 19:13:39 PDT
Created attachment 283294 [details] WIP This makes trivial test programs like 50% faster. It makes Fil's air.js benchmark ~7% faster.
WebKit Commit Bot
Comment 2 2016-07-10 19:15:51 PDT
Attachment 283294 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3804: Missing space after , [whitespace/comma] [3] Total errors found: 1 in 3 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 3 2016-08-10 17:24:17 PDT
WebKit Commit Bot
Comment 4 2016-08-10 17:25:54 PDT
Attachment 285788 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3889: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 1 in 8 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 5 2016-08-10 17:27:07 PDT
Comment on attachment 285788 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=285788&action=review > Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2871 > + IndexingType indexingType = node->child1()->indexingType(); This is really bad. You're requiring that the child of CopyRest is NewArray. A property of any good IR is that this: a: Foo() b: Bar(@a) Must always behave the same as: a: Foo() x: Identity(@a) b: Bar(@x) Or even: a: Foo() Upsilon(@a, ^p) ... p: Phi() b: Bar(@p) Clearly, any of these transformations would break your patch here and in other places. Therefore, I believe your change is not sound.
Saam Barati
Comment 6 2016-08-10 17:43:46 PDT
After speaking with Filip in person, I'm going to change CopyRest and copy_rest to produce the array itself instead of consuming it as an argument.
Saam Barati
Comment 7 2016-08-10 20:26:04 PDT
Created attachment 285811 [details] WIP Might be the patch. I just need to see if it's possible to end up with an array larger than MIN_ARRAY_STORAGE_LENGTH and what to do in such a situation.
Saam Barati
Comment 8 2016-08-11 19:43:39 PDT
Created attachment 285882 [details] WIP Just about done. Just going to write a changelog and do a once over of the code, and write 32-bit DFG support.
WebKit Commit Bot
Comment 9 2016-08-12 11:01:06 PDT
Attachment 285882 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:856: Extra space between Structure* and structure [whitespace/declaration] [3] ERROR: Source/JavaScriptCore/bytecode/BytecodeUseDef.h:94: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:87: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6510: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6514: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:764: The parameter name "indexingType" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5507: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] Total errors found: 7 in 35 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 10 2016-08-12 12:26:59 PDT
WebKit Commit Bot
Comment 11 2016-08-12 12:29:16 PDT
Attachment 285930 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5442: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/BytecodeUseDef.h:94: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:87: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:764: The parameter name "indexingType" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5507: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] Total errors found: 5 in 37 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 12 2016-08-12 15:13:47 PDT
Created attachment 285962 [details] patch for landing
WebKit Commit Bot
Comment 13 2016-08-12 15:16:23 PDT
Attachment 285962 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:87: Wrong number of spaces before statement. (expected: 12) [whitespace/indent] [4] Total errors found: 1 in 41 files If any of these errors are false positives, please file a bug against check-webkit-style.
WebKit Commit Bot
Comment 14 2016-08-12 19:16:14 PDT
Comment on attachment 285962 [details] patch for landing Clearing flags on attachment: 285962 Committed r204439: <http://trac.webkit.org/changeset/204439>
WebKit Commit Bot
Comment 15 2016-08-12 19:16:19 PDT
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.