Title: [132554] trunk
Revision
132554
Author
fpi...@apple.com
Date
2012-10-25 18:57:07 -0700 (Thu, 25 Oct 2012)

Log Message

DFG Arrayify elimination should replace it with GetButterfly rather than Phantom
https://bugs.webkit.org/show_bug.cgi?id=100441

Reviewed by Oliver Hunt and Gavin Barraclough.

Source/_javascript_Core: 

Made array profiler's to-string helper behave correctly.
        
Made Arrayify elimination do the right thing (convert to GetButterfly).
        
Made CFA's interference analysis track clobbered array modes correctly, mostly by
simplifying the machinery.

* bytecode/ArrayProfile.cpp:
(JSC::arrayModesToString):
* dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::execute):
* dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::clobberArrayModes):
(AbstractValue):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):

LayoutTests: 

* fast/js/dfg-arrayify-elimination-expected.txt: Added.
* fast/js/dfg-arrayify-elimination.html: Added.
* fast/js/jsc-test-list:
* fast/js/script-tests/dfg-arrayify-elimination.js: Added.
(foo):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (132553 => 132554)


--- trunk/LayoutTests/ChangeLog	2012-10-26 01:55:41 UTC (rev 132553)
+++ trunk/LayoutTests/ChangeLog	2012-10-26 01:57:07 UTC (rev 132554)
@@ -1,3 +1,16 @@
+2012-10-25  Filip Pizlo  <fpi...@apple.com>
+
+        DFG Arrayify elimination should replace it with GetButterfly rather than Phantom
+        https://bugs.webkit.org/show_bug.cgi?id=100441
+
+        Reviewed by Oliver Hunt and Gavin Barraclough.
+
+        * fast/js/dfg-arrayify-elimination-expected.txt: Added.
+        * fast/js/dfg-arrayify-elimination.html: Added.
+        * fast/js/jsc-test-list:
+        * fast/js/script-tests/dfg-arrayify-elimination.js: Added.
+        (foo):
+
 2012-10-25  Keishi Hattori  <kei...@webkit.org>
 
         Hide popup while transitioning from the suggestion picker to the calendar picker

Added: trunk/LayoutTests/fast/js/dfg-arrayify-elimination-expected.txt (0 => 132554)


--- trunk/LayoutTests/fast/js/dfg-arrayify-elimination-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/js/dfg-arrayify-elimination-expected.txt	2012-10-26 01:57:07 UTC (rev 132554)
@@ -0,0 +1,1004 @@
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS array is [,42,43,44]
+PASS array is [52,42,43,44]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/js/dfg-arrayify-elimination.html (0 => 132554)


--- trunk/LayoutTests/fast/js/dfg-arrayify-elimination.html	                        (rev 0)
+++ trunk/LayoutTests/fast/js/dfg-arrayify-elimination.html	2012-10-26 01:57:07 UTC (rev 132554)
@@ -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 (132553 => 132554)


--- trunk/LayoutTests/fast/js/jsc-test-list	2012-10-26 01:55:41 UTC (rev 132553)
+++ trunk/LayoutTests/fast/js/jsc-test-list	2012-10-26 01:57:07 UTC (rev 132554)
@@ -79,6 +79,7 @@
 fast/js/dfg-arguments-osr-exit
 fast/js/dfg-arguments-out-of-bounds
 fast/js/dfg-arguments-unexpected-escape
+fast/js/dfg-arrayify-elimination
 fast/js/dfg-arrayify-when-late-prevent-extensions
 fast/js/dfg-arrayify-when-prevent-extensions
 fast/js/dfg-array-length-dead

Added: trunk/LayoutTests/fast/js/script-tests/dfg-arrayify-elimination.js (0 => 132554)


--- trunk/LayoutTests/fast/js/script-tests/dfg-arrayify-elimination.js	                        (rev 0)
+++ trunk/LayoutTests/fast/js/script-tests/dfg-arrayify-elimination.js	2012-10-26 01:57:07 UTC (rev 132554)
@@ -0,0 +1,16 @@
+function foo(a, i, j, k) {
+    a[i] = 42;
+    a[j] = 43;
+    a[k] = 44;
+}
+
+for (var i = 0; i < 1000; ++i) {
+    var array = [];
+    if (i % 2)
+        array.unshift(52);
+    foo(array, 1, 2, 3);
+    if (i % 2)
+        shouldBe("array", "[52,42,43,44]");
+    else
+        shouldBe("array", "[,42,43,44]");
+}

Modified: trunk/Source/_javascript_Core/ChangeLog (132553 => 132554)


--- trunk/Source/_javascript_Core/ChangeLog	2012-10-26 01:55:41 UTC (rev 132553)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-10-26 01:57:07 UTC (rev 132554)
@@ -1,5 +1,29 @@
 2012-10-25  Filip Pizlo  <fpi...@apple.com>
 
+        DFG Arrayify elimination should replace it with GetButterfly rather than Phantom
+        https://bugs.webkit.org/show_bug.cgi?id=100441
+
+        Reviewed by Oliver Hunt and Gavin Barraclough.
+
+        Made array profiler's to-string helper behave correctly.
+        
+        Made Arrayify elimination do the right thing (convert to GetButterfly).
+        
+        Made CFA's interference analysis track clobbered array modes correctly, mostly by
+        simplifying the machinery.
+
+        * bytecode/ArrayProfile.cpp:
+        (JSC::arrayModesToString):
+        * dfg/DFGAbstractState.cpp:
+        (JSC::DFG::AbstractState::execute):
+        * dfg/DFGAbstractValue.h:
+        (JSC::DFG::AbstractValue::clobberArrayModes):
+        (AbstractValue):
+        * dfg/DFGConstantFoldingPhase.cpp:
+        (JSC::DFG::ConstantFoldingPhase::foldConstants):
+
+2012-10-25  Filip Pizlo  <fpi...@apple.com>
+
         REGRESSION (r131793-r131826): Crash going to wikifonia.org
         https://bugs.webkit.org/show_bug.cgi?id=100281
 

Modified: trunk/Source/_javascript_Core/bytecode/ArrayProfile.cpp (132553 => 132554)


--- trunk/Source/_javascript_Core/bytecode/ArrayProfile.cpp	2012-10-26 01:55:41 UTC (rev 132553)
+++ trunk/Source/_javascript_Core/bytecode/ArrayProfile.cpp	2012-10-26 01:57:07 UTC (rev 132554)
@@ -38,14 +38,14 @@
     if (arrayModes == ALL_ARRAY_MODES)
         return "TOP";
 
-    bool isNonArray = !!(arrayModes & NonArray);
-    bool isNonArrayWithContiguous = !!(arrayModes & NonArrayWithContiguous);
-    bool isNonArrayWithArrayStorage = !!(arrayModes & NonArrayWithArrayStorage);
-    bool isNonArrayWithSlowPutArrayStorage = !!(arrayModes & NonArrayWithSlowPutArrayStorage);
-    bool isArray = !!(arrayModes & ArrayClass);
-    bool isArrayWithContiguous = !!(arrayModes & ArrayWithContiguous);
-    bool isArrayWithArrayStorage = !!(arrayModes & ArrayWithArrayStorage);
-    bool isArrayWithSlowPutArrayStorage = !!(arrayModes & ArrayWithSlowPutArrayStorage);
+    bool isNonArray = !!(arrayModes & asArrayModes(NonArray));
+    bool isNonArrayWithContiguous = !!(arrayModes & asArrayModes(NonArrayWithContiguous));
+    bool isNonArrayWithArrayStorage = !!(arrayModes & asArrayModes(NonArrayWithArrayStorage));
+    bool isNonArrayWithSlowPutArrayStorage = !!(arrayModes & asArrayModes(NonArrayWithSlowPutArrayStorage));
+    bool isArray = !!(arrayModes & asArrayModes(ArrayClass));
+    bool isArrayWithContiguous = !!(arrayModes & asArrayModes(ArrayWithContiguous));
+    bool isArrayWithArrayStorage = !!(arrayModes & asArrayModes(ArrayWithArrayStorage));
+    bool isArrayWithSlowPutArrayStorage = !!(arrayModes & asArrayModes(ArrayWithSlowPutArrayStorage));
     
     static char result[256];
     snprintf(

Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp (132553 => 132554)


--- trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp	2012-10-26 01:55:41 UTC (rev 132553)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp	2012-10-26 01:57:07 UTC (rev 132554)
@@ -1421,6 +1421,7 @@
             break;
         }
         forNode(node.child1()).filterArrayModes(arrayModesFor(node.arrayMode()));
+        m_haveStructures = true;
         break;
     }
     case Arrayify: {
@@ -1438,6 +1439,7 @@
             forNode(nodeIndex).clear();
             clobberStructures(indexInBlock);
             forNode(node.child1()).filterArrayModes(arrayModesFor(node.arrayMode()));
+            m_haveStructures = true;
             break;
         default:
             CRASH();

Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractValue.h (132553 => 132554)


--- trunk/Source/_javascript_Core/dfg/DFGAbstractValue.h	2012-10-26 01:55:41 UTC (rev 132553)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractValue.h	2012-10-26 01:57:07 UTC (rev 132554)
@@ -458,29 +458,11 @@
 private:
     void clobberArrayModes()
     {
-        if (m_arrayModes == ALL_ARRAY_MODES)
-            return;
-        
-        if (LIKELY(m_arrayModes & asArrayModes(NonArray)))
-            m_arrayModes = ALL_ARRAY_MODES;
-        else
-            clobberArrayModesSlow();
+        // FIXME: We could make this try to predict the set of array modes that this object
+        // could have in the future. For now, just do the simple thing.
+        m_arrayModes = ALL_ARRAY_MODES;
     }
     
-    void clobberArrayModesSlow()
-    {
-        if (m_arrayModes & asArrayModes(ArrayClass))
-            m_arrayModes = ALL_ARRAY_MODES;
-        else if (m_arrayModes & asArrayModes(NonArrayWithContiguous))
-            m_arrayModes |= asArrayModes(NonArrayWithArrayStorage) | asArrayModes(NonArrayWithSlowPutArrayStorage);
-        else if (m_arrayModes & asArrayModes(ArrayWithContiguous))
-            m_arrayModes |= asArrayModes(ArrayWithArrayStorage) | asArrayModes(ArrayWithSlowPutArrayStorage);
-        else if (m_arrayModes & asArrayModes(NonArrayWithArrayStorage))
-            m_arrayModes |= asArrayModes(NonArrayWithSlowPutArrayStorage);
-        else if (m_arrayModes & asArrayModes(ArrayWithArrayStorage))
-            m_arrayModes |= asArrayModes(ArrayWithArrayStorage);
-    }
-
     void setFuturePossibleStructure(Structure* structure)
     {
         if (structure->transitionWatchpointSetIsStillValid())

Modified: trunk/Source/_javascript_Core/dfg/DFGConstantFoldingPhase.cpp (132553 => 132554)


--- trunk/Source/_javascript_Core/dfg/DFGConstantFoldingPhase.cpp	2012-10-26 01:55:41 UTC (rev 132553)
+++ trunk/Source/_javascript_Core/dfg/DFGConstantFoldingPhase.cpp	2012-10-26 01:57:07 UTC (rev 132554)
@@ -102,8 +102,7 @@
                 break;
             }
                 
-            case CheckArray:
-            case Arrayify: {
+            case CheckArray: {
                 if (!modeAlreadyChecked(m_state.forNode(node.child1()), node.arrayMode()))
                     break;
                 ASSERT(node.refCount() == 1);
@@ -112,6 +111,16 @@
                 break;
             }
                 
+            case Arrayify: {
+                if (!modeAlreadyChecked(m_state.forNode(node.child1()), node.arrayMode()))
+                    break;
+                ASSERT(node.refCount() >= 1);
+                node.setOpAndDefaultFlags(GetButterfly);
+                m_graph.deref(nodeIndex);
+                eliminated = true;
+                break;
+            }
+
             default:
                 break;
             }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to