RESOLVED FIXED 154835
Turn String.prototype.replace into an intrinsic
https://bugs.webkit.org/show_bug.cgi?id=154835
Summary Turn String.prototype.replace into an intrinsic
Filip Pizlo
Reported 2016-02-29 13:48:33 PST
Patch forthcoming.
Attachments
work in progress (14.34 KB, patch)
2016-02-29 16:16 PST, Filip Pizlo
no flags
more (23.98 KB, patch)
2016-02-29 19:26 PST, Filip Pizlo
no flags
slowly adding more optimizations (25.65 KB, patch)
2016-02-29 20:22 PST, Filip Pizlo
no flags
the patch (40.01 KB, patch)
2016-02-29 21:45 PST, Filip Pizlo
no flags
the patch (42.91 KB, patch)
2016-03-01 11:26 PST, Filip Pizlo
msaboff: review+
buildbot: commit-queue-
Archive of layout-test-results from ews116 for mac-yosemite (971.32 KB, application/zip)
2016-03-01 12:37 PST, Build Bot
no flags
Filip Pizlo
Comment 1 2016-02-29 13:50:31 PST
My plan for this involves having StringPrototype.cpp directly export the operations functions that the DFG/FTL will call. To do that, it needs access to the declarations in JITOperations.h. In fact it needs to include that in StringPrototype.h in order to properly declare the operations functions. So, this depends on this: https://bugs.webkit.org/show_bug.cgi?id=154836
Filip Pizlo
Comment 2 2016-02-29 16:14:55 PST
This isn't showing up as a speed-up when I just implement it as a raw intrinsic. But it ought to be a speed-up once the compiler can reason about what's going on. I believe that for this to work I'll need to add a RegExpUse UseKind and a SpecRegExpObject speculated type. Hence I need this: https://bugs.webkit.org/show_bug.cgi?id=154840
Filip Pizlo
Comment 3 2016-02-29 16:16:13 PST
Created attachment 272528 [details] work in progress
Filip Pizlo
Comment 4 2016-02-29 19:26:57 PST
Filip Pizlo
Comment 5 2016-02-29 20:22:15 PST
Created attachment 272544 [details] slowly adding more optimizations
Filip Pizlo
Comment 6 2016-02-29 21:45:14 PST
Created attachment 272549 [details] the patch
WebKit Commit Bot
Comment 7 2016-02-29 21:47:25 PST
Attachment 272549 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:57: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:61: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 2 in 30 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 8 2016-02-29 22:47:36 PST
I know how to fix the build - JITOperations.h must become Private.
Joseph Pecoraro
Comment 9 2016-02-29 23:50:02 PST
Comment on attachment 272549 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=272549&action=review > Source/JavaScriptCore/bytecode/SpeculatedType.h:76 > +static const SpeculatedType SpecDoublePureNaN = 1u << 26; // It's definitely a NaN that is sae to tag (i.e. pure). Could drive by fix this typo: "sae" => "safe"
Filip Pizlo
Comment 10 2016-03-01 11:26:07 PST
Created attachment 272578 [details] the patch
WebKit Commit Bot
Comment 11 2016-03-01 11:27:42 PST
Attachment 272578 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:57: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/StringPrototype.h:61: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 2 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
Michael Saboff
Comment 12 2016-03-01 12:14:51 PST
Comment on attachment 272578 [details] the patch r=me
Filip Pizlo
Comment 13 2016-03-01 12:17:09 PST
I'll wait to see what the string-replace test failure is. It's strange that it crashes in debug.
Build Bot
Comment 14 2016-03-01 12:37:25 PST
Comment on attachment 272578 [details] the patch Attachment 272578 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/907370 New failing tests: webgl/1.0.2/conformance/glsl/misc/shader-uniform-packing-restrictions.html js/regress/string-replace.html
Build Bot
Comment 15 2016-03-01 12:37:29 PST
Created attachment 272587 [details] Archive of layout-test-results from ews116 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews116 Port: mac-yosemite Platform: Mac OS X 10.10.5
Filip Pizlo
Comment 16 2016-03-01 13:14:12 PST
Totally found the issue causing debug crashes. I forgot to add StringReplace to Node::hasHeapPrediction().
Filip Pizlo
Comment 17 2016-03-01 13:18:59 PST
Ryan Haddad
Comment 18 2016-03-01 13:36:16 PST
Filip Pizlo
Comment 19 2016-03-01 13:37:13 PST
(In reply to comment #18) > It looks like this change broke the CLoop build: > <https://build.webkit.org/builders/ > Apple%20El%20Capitan%20LLINT%20CLoop%20%28BuildAndTest%29/builds/3905> Fixing.
Filip Pizlo
Comment 20 2016-03-01 13:40:50 PST
(In reply to comment #19) > (In reply to comment #18) > > It looks like this change broke the CLoop build: > > <https://build.webkit.org/builders/ > > Apple%20El%20Capitan%20LLINT%20CLoop%20%28BuildAndTest%29/builds/3905> > > Fixing. Should be fixed in http://trac.webkit.org/changeset/197411
Note You need to log in before you can comment on or make changes to this bug.