Title: [136989] trunk
Revision
136989
Author
[email protected]
Date
2012-12-07 14:55:58 -0800 (Fri, 07 Dec 2012)

Log Message

Strange results calculating a square root in a loop
https://bugs.webkit.org/show_bug.cgi?id=104247
<rdar://problem/12826880>

Reviewed by Oliver Hunt.

Source/_javascript_Core: 

Fixed the CFG simplification phase to ignore dead GetLocals in the first of the blocks
under the merge. This fixes the assertion, and is also cleaner: our general rule is
to not "revive" things that we've already proved to be dead.
        
Also fixed some rotted debug code.

* dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::fixPossibleGetLocal):
* dfg/DFGStructureCheckHoistingPhase.cpp:
(JSC::DFG::StructureCheckHoistingPhase::run):

LayoutTests: 

* fast/js/dfg-cfg-simplify-redundant-dead-get-local-expected.txt: Added.
* fast/js/dfg-cfg-simplify-redundant-dead-get-local.html: Added.
* fast/js/jsc-test-list:
* fast/js/script-tests/dfg-cfg-simplify-redundant-dead-get-local.js: Added.
(getDist):
(calcError):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (136988 => 136989)


--- trunk/LayoutTests/ChangeLog	2012-12-07 22:47:45 UTC (rev 136988)
+++ trunk/LayoutTests/ChangeLog	2012-12-07 22:55:58 UTC (rev 136989)
@@ -1,3 +1,18 @@
+2012-12-06  Filip Pizlo  <[email protected]>
+
+        Strange results calculating a square root in a loop
+        https://bugs.webkit.org/show_bug.cgi?id=104247
+        <rdar://problem/12826880>
+
+        Reviewed by Oliver Hunt.
+
+        * fast/js/dfg-cfg-simplify-redundant-dead-get-local-expected.txt: Added.
+        * fast/js/dfg-cfg-simplify-redundant-dead-get-local.html: Added.
+        * fast/js/jsc-test-list:
+        * fast/js/script-tests/dfg-cfg-simplify-redundant-dead-get-local.js: Added.
+        (getDist):
+        (calcError):
+
 2012-12-07  Emil A Eklund  <[email protected]>
 
         Unreviewed chromium rebaselines.

Added: trunk/LayoutTests/fast/js/dfg-cfg-simplify-redundant-dead-get-local-expected.txt (0 => 136989)


--- trunk/LayoutTests/fast/js/dfg-cfg-simplify-redundant-dead-get-local-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/js/dfg-cfg-simplify-redundant-dead-get-local-expected.txt	2012-12-07 22:55:58 UTC (rev 136989)
@@ -0,0 +1,1009 @@
+Tests if the CFG simplifier gracefully handles the case where Block #1 and #2 are merged, #1 has a dead GetLocal, and #2 has a live GetLocal on the same local.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS array[i] is 2.23606797749979
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/js/dfg-cfg-simplify-redundant-dead-get-local.html (0 => 136989)


--- trunk/LayoutTests/fast/js/dfg-cfg-simplify-redundant-dead-get-local.html	                        (rev 0)
+++ trunk/LayoutTests/fast/js/dfg-cfg-simplify-redundant-dead-get-local.html	2012-12-07 22:55:58 UTC (rev 136989)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+</body>
+</html>

Modified: trunk/LayoutTests/fast/js/jsc-test-list (136988 => 136989)


--- trunk/LayoutTests/fast/js/jsc-test-list	2012-12-07 22:47:45 UTC (rev 136988)
+++ trunk/LayoutTests/fast/js/jsc-test-list	2012-12-07 22:55:58 UTC (rev 136989)
@@ -89,6 +89,8 @@
 fast/js/dfg-array-push-slow-put
 fast/js/dfg-bool-to-int32-reuse
 fast/js/dfg-branch-not-fail
+fast/js/dfg-cfg-simplify-phantom-get-local-on-same-block-set-local
+fast/js/dfg-cfg-simplify-redundant-dead-get-local
 fast/js/dfg-check-two-structures
 fast/js/dfg-constant-fold-first-local-read-after-block-merge
 fast/js/dfg-convert-this-dom-window

Added: trunk/LayoutTests/fast/js/script-tests/dfg-cfg-simplify-redundant-dead-get-local.js (0 => 136989)


--- trunk/LayoutTests/fast/js/script-tests/dfg-cfg-simplify-redundant-dead-get-local.js	                        (rev 0)
+++ trunk/LayoutTests/fast/js/script-tests/dfg-cfg-simplify-redundant-dead-get-local.js	2012-12-07 22:55:58 UTC (rev 136989)
@@ -0,0 +1,31 @@
+description(
+"Tests if the CFG simplifier gracefully handles the case where Block #1 and #2 are merged, #1 has a dead GetLocal, and #2 has a live GetLocal on the same local."
+);
+
+var array = [];
+
+var getDist = function () {
+    // a conditional absolutely MUST be here for the whole thing to break.
+    // the return value is irrelevant
+
+    if (false) return "I'm irrelevant!";
+
+    return Math.sqrt(5);
+}
+
+
+var calcError = function(){
+    var dist = 0; // initialisation is necessary for the bug to occur
+
+    true && (dist = getDist());
+
+    array.push(dist);
+}
+
+
+for(var a=0; a<1000; a++){ // the loop needs to be outside calcError, otherwise no bug...
+    calcError();
+}
+
+for (var i = 0; i < array.length; ++i)
+    shouldBe("array[i]", "2.23606797749979");

Modified: trunk/Source/_javascript_Core/ChangeLog (136988 => 136989)


--- trunk/Source/_javascript_Core/ChangeLog	2012-12-07 22:47:45 UTC (rev 136988)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-12-07 22:55:58 UTC (rev 136989)
@@ -1,3 +1,22 @@
+2012-12-06  Filip Pizlo  <[email protected]>
+
+        Strange results calculating a square root in a loop
+        https://bugs.webkit.org/show_bug.cgi?id=104247
+        <rdar://problem/12826880>
+
+        Reviewed by Oliver Hunt.
+
+        Fixed the CFG simplification phase to ignore dead GetLocals in the first of the blocks
+        under the merge. This fixes the assertion, and is also cleaner: our general rule is
+        to not "revive" things that we've already proved to be dead.
+        
+        Also fixed some rotted debug code.
+
+        * dfg/DFGCFGSimplificationPhase.cpp:
+        (JSC::DFG::CFGSimplificationPhase::fixPossibleGetLocal):
+        * dfg/DFGStructureCheckHoistingPhase.cpp:
+        (JSC::DFG::StructureCheckHoistingPhase::run):
+
 2012-12-07  Geoffrey Garen  <[email protected]>
 
         Crash in JSC::Bindings::RootObject::globalObject() sync'ing notes in Evernote

Modified: trunk/Source/_javascript_Core/dfg/DFGCFGSimplificationPhase.cpp (136988 => 136989)


--- trunk/Source/_javascript_Core/dfg/DFGCFGSimplificationPhase.cpp	2012-12-07 22:47:45 UTC (rev 136988)
+++ trunk/Source/_javascript_Core/dfg/DFGCFGSimplificationPhase.cpp	2012-12-07 22:55:58 UTC (rev 136989)
@@ -305,8 +305,6 @@
         dataLogF("        Original has local r%d.\n", originalNode->local());
 #endif
         ASSERT(child.local() == originalNode->local());
-        if (changeRef)
-            ASSERT(originalNode->shouldGenerate());
         // Possibilities:
         // SetLocal -> the secondBlock is getting the value of something that is immediately
         //     available in the first block with a known NodeIndex.
@@ -326,6 +324,8 @@
         }
         switch (originalNode->op()) {
         case SetLocal: {
+            if (changeRef)
+                ASSERT(originalNode->shouldGenerate());
 #if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)
             dataLogF("        It's a SetLocal.\n");
 #endif
@@ -336,11 +336,16 @@
 #if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)
             dataLogF("        It's a GetLocal.\n");
 #endif
-            m_graph.changeIndex(edge, originalNodeIndex, changeRef);
+            if (originalNode->shouldGenerate())
+                m_graph.changeIndex(edge, originalNodeIndex, changeRef);
+            // If we have a GetLocal that points to a child GetLocal that is dead, then
+            // we have no need to do anything: this original GetLocal is still valid.
             break;
         }
         case Phi:
         case SetArgument: {
+        if (changeRef)
+            ASSERT(originalNode->shouldGenerate());
 #if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)
             dataLogF("        It's Phi/SetArgument.\n");
 #endif

Modified: trunk/Source/_javascript_Core/dfg/DFGStructureCheckHoistingPhase.cpp (136988 => 136989)


--- trunk/Source/_javascript_Core/dfg/DFGStructureCheckHoistingPhase.cpp	2012-12-07 22:47:45 UTC (rev 136988)
+++ trunk/Source/_javascript_Core/dfg/DFGStructureCheckHoistingPhase.cpp	2012-12-07 22:55:58 UTC (rev 136989)
@@ -222,7 +222,7 @@
 #if DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE)
                     dataLog(
                         "Zeroing the structure to hoist for ", VariableAccessDataDump(m_graph, variable),
-                        " because the OSR entry value is not a cell: ", value.description(), ".\n");
+                        " because the OSR entry value is not a cell: ", value, ".\n");
 #endif
                     iter->value.m_structure = 0;
                     continue;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to