Title: [153090] branches/safari-537-branch
- Revision
- 153090
- Author
- [email protected]
- Date
- 2013-07-24 11:11:19 -0700 (Wed, 24 Jul 2013)
Log Message
Merged r153075. <rdar://problem/14530072>
Modified Paths
Added Paths
Diff
Modified: branches/safari-537-branch/LayoutTests/ChangeLog (153089 => 153090)
--- branches/safari-537-branch/LayoutTests/ChangeLog 2013-07-24 18:02:13 UTC (rev 153089)
+++ branches/safari-537-branch/LayoutTests/ChangeLog 2013-07-24 18:11:19 UTC (rev 153090)
@@ -1,3 +1,21 @@
+2013-07-24 Lucas Forschler <[email protected]>
+
+ Merge r153075
+
+ 2013-07-23 Filip Pizlo <[email protected]>
+
+ 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 Lucas Forschler <[email protected]>
Merge r153060
Copied: branches/safari-537-branch/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it-expected.txt (from rev 153075, trunk/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it-expected.txt) (0 => 153090)
--- branches/safari-537-branch/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it-expected.txt (rev 0)
+++ branches/safari-537-branch/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it-expected.txt 2013-07-24 18:11:19 UTC (rev 153090)
@@ -0,0 +1,1009 @@
+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 () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "function () { }"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS bar() is "42"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: branches/safari-537-branch/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it.html (from rev 153075, trunk/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it.html) (0 => 153090)
--- branches/safari-537-branch/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it.html (rev 0)
+++ branches/safari-537-branch/LayoutTests/fast/js/dfg-strcat-over-objects-then-exit-on-it.html 2013-07-24 18:11:19 UTC (rev 153090)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+</body>
+</html>
Copied: branches/safari-537-branch/LayoutTests/fast/js/script-tests/dfg-strcat-over-objects-then-exit-on-it.js (from rev 153075, trunk/LayoutTests/fast/js/script-tests/dfg-strcat-over-objects-then-exit-on-it.js) (0 => 153090)
--- branches/safari-537-branch/LayoutTests/fast/js/script-tests/dfg-strcat-over-objects-then-exit-on-it.js (rev 0)
+++ branches/safari-537-branch/LayoutTests/fast/js/script-tests/dfg-strcat-over-objects-then-exit-on-it.js 2013-07-24 18:11:19 UTC (rev 153090)
@@ -0,0 +1,25 @@
+description(
+"Tests what happens when you do string concatentations on objects and then OSR exit when it turns out to be an int."
+);
+
+function foo() {
+ return x;
+}
+
+function bar() {
+ return foo() + '';
+}
+
+var x = function() { };
+
+var expected = "\"function () { }\"";
+var blah = this;
+for (var i = 0; i < 1000; ++i) {
+ blah["i" + i] = i;
+ if (i == 700) {
+ x = 42;
+ expected = "\"42\"";
+ }
+ shouldBe("bar()", expected);
+}
+
Modified: branches/safari-537-branch/Source/_javascript_Core/ChangeLog (153089 => 153090)
--- branches/safari-537-branch/Source/_javascript_Core/ChangeLog 2013-07-24 18:02:13 UTC (rev 153089)
+++ branches/safari-537-branch/Source/_javascript_Core/ChangeLog 2013-07-24 18:11:19 UTC (rev 153090)
@@ -1,3 +1,19 @@
+2013-07-24 Lucas Forschler <[email protected]>
+
+ Merge r153075
+
+ 2013-07-23 Filip Pizlo <[email protected]>
+
+ 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.
+
+ It just needs some Phantom action.
+
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
+
2013-07-22 Lucas Forschler <[email protected]>
Merge r152882
Modified: branches/safari-537-branch/Source/_javascript_Core/dfg/DFGFixupPhase.cpp (153089 => 153090)
--- branches/safari-537-branch/Source/_javascript_Core/dfg/DFGFixupPhase.cpp 2013-07-24 18:02:13 UTC (rev 153089)
+++ branches/safari-537-branch/Source/_javascript_Core/dfg/DFGFixupPhase.cpp 2013-07-24 18:11:19 UTC (rev 153090)
@@ -1032,6 +1032,9 @@
template<UseKind leftUseKind>
bool attemptToMakeFastStringAdd(Node* node, Edge& left, Edge& right)
{
+ Node* originalLeft = left.node();
+ Node* originalRight = right.node();
+
ASSERT(leftUseKind == StringUse || leftUseKind == StringObjectUse || leftUseKind == StringOrStringObjectUse);
if (isStringObjectUse<leftUseKind>() && !canOptimizeStringObjectAccess(node->codeOrigin))
@@ -1066,6 +1069,12 @@
right.setNode(toString);
}
+ // We're doing checks up there, so we need to make sure that the
+ // *original* inputs to the addition are live up to here.
+ m_insertionSet.insertNode(
+ m_indexInBlock, SpecNone, Phantom, node->codeOrigin,
+ Edge(originalLeft), Edge(originalRight));
+
convertToMakeRope(node);
return true;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes