Commit dbeeff35 authored by fpizlo@apple.com's avatar fpizlo@apple.com
Browse files

DFG string concatenation optimizations might emit speculative nodes after...

DFG string concatenation optimizations might emit speculative nodes after emitting nodes that kill the original inputs
https://bugs.webkit.org/show_bug.cgi?id=119032

Reviewed by Oliver Hunt.

Source/JavaScriptCore: 

It just needs some Phantom action.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):

LayoutTests: 

* fast/js/dfg-strcat-over-objects-then-exit-on-it-expected.txt: Added.
* fast/js/dfg-strcat-over-objects-then-exit-on-it.html: Added.
* fast/js/script-tests/dfg-strcat-over-objects-then-exit-on-it.js: Added.
(foo):
(bar):
(x):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153075 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 70165470
2013-07-23 Filip Pizlo <fpizlo@apple.com>
DFG string concatenation optimizations might emit speculative nodes after emitting nodes that kill the original inputs
https://bugs.webkit.org/show_bug.cgi?id=119032
Reviewed by Oliver Hunt.
* fast/js/dfg-strcat-over-objects-then-exit-on-it-expected.txt: Added.
* fast/js/dfg-strcat-over-objects-then-exit-on-it.html: Added.
* fast/js/script-tests/dfg-strcat-over-objects-then-exit-on-it.js: Added.
(foo):
(bar):
(x):
2013-07-23 Mark Lam <mark.lam@apple.com>
 
Added ExpressionRangeInfo for BinaryOpNodes that can throw exceptions
Tests what happens when you do string concatentations on objects and then OSR exit when it turns out to be an int.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"
PASS bar() is "function () { }"