Title: [146263] trunk
Revision
146263
Author
mhahnenb...@apple.com
Date
2013-03-19 14:49:34 -0700 (Tue, 19 Mar 2013)

Log Message

Crash in SpeculativeJIT::fillSpeculateIntInternal<false> on http://bellard.org/jslinux
https://bugs.webkit.org/show_bug.cgi?id=112738

Reviewed by Filip Pizlo.

Source/_javascript_Core:

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixIntEdge): We shouldn't be killing this node because it could be
referenced by other people.

LayoutTests:

* fast/js/dfg-rshift-by-zero-eliminate-valuetoint32-expected.txt: Added.
* fast/js/dfg-rshift-by-zero-eliminate-valuetoint32.html: Added.
* fast/js/script-tests/dfg-rshift-by-zero-eliminate-valuetoint32.js: Added.
(f):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (146262 => 146263)


--- trunk/LayoutTests/ChangeLog	2013-03-19 21:45:52 UTC (rev 146262)
+++ trunk/LayoutTests/ChangeLog	2013-03-19 21:49:34 UTC (rev 146263)
@@ -1,3 +1,15 @@
+2013-03-19  Mark Hahnenberg  <mhahnenb...@apple.com>
+
+        Crash in SpeculativeJIT::fillSpeculateIntInternal<false> on http://bellard.org/jslinux
+        https://bugs.webkit.org/show_bug.cgi?id=112738
+
+        Reviewed by Filip Pizlo.
+
+        * fast/js/dfg-rshift-by-zero-eliminate-valuetoint32-expected.txt: Added.
+        * fast/js/dfg-rshift-by-zero-eliminate-valuetoint32.html: Added.
+        * fast/js/script-tests/dfg-rshift-by-zero-eliminate-valuetoint32.js: Added.
+        (f):
+
 2013-03-19  Dean Jackson  <d...@apple.com>
 
         Allow PlugIn Snapshotting to be tested

Added: trunk/LayoutTests/fast/js/dfg-rshift-by-zero-eliminate-valuetoint32-expected.txt (0 => 146263)


--- trunk/LayoutTests/fast/js/dfg-rshift-by-zero-eliminate-valuetoint32-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/js/dfg-rshift-by-zero-eliminate-valuetoint32-expected.txt	2013-03-19 21:49:34 UTC (rev 146263)
@@ -0,0 +1,1009 @@
+Tests that right shifting by zero and then doing other bitops doesn't eliminate the ValueToInt32 node.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS f() is undefined
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/js/dfg-rshift-by-zero-eliminate-valuetoint32.html (0 => 146263)


--- trunk/LayoutTests/fast/js/dfg-rshift-by-zero-eliminate-valuetoint32.html	                        (rev 0)
+++ trunk/LayoutTests/fast/js/dfg-rshift-by-zero-eliminate-valuetoint32.html	2013-03-19 21:49:34 UTC (rev 146263)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+</body>
+</html>

Added: trunk/LayoutTests/fast/js/script-tests/dfg-rshift-by-zero-eliminate-valuetoint32.js (0 => 146263)


--- trunk/LayoutTests/fast/js/script-tests/dfg-rshift-by-zero-eliminate-valuetoint32.js	                        (rev 0)
+++ trunk/LayoutTests/fast/js/script-tests/dfg-rshift-by-zero-eliminate-valuetoint32.js	2013-03-19 21:49:34 UTC (rev 146263)
@@ -0,0 +1,15 @@
+description(
+"Tests that right shifting by zero and then doing other bitops doesn't eliminate the ValueToInt32 node."
+);
+
+global = 32;
+
+function f() {
+    var Ha, fa;
+    Ha = global >> 0;
+    fa = Ha & 2;
+    global = Ha & 2;
+}
+
+for (var i = 0; i < 1000; ++i)
+    shouldBe("f()", "undefined");

Modified: trunk/Source/_javascript_Core/ChangeLog (146262 => 146263)


--- trunk/Source/_javascript_Core/ChangeLog	2013-03-19 21:45:52 UTC (rev 146262)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-03-19 21:49:34 UTC (rev 146263)
@@ -1,3 +1,14 @@
+2013-03-19  Mark Hahnenberg  <mhahnenb...@apple.com>
+
+        Crash in SpeculativeJIT::fillSpeculateIntInternal<false> on http://bellard.org/jslinux
+        https://bugs.webkit.org/show_bug.cgi?id=112738
+
+        Reviewed by Filip Pizlo.
+
+        * dfg/DFGFixupPhase.cpp:
+        (JSC::DFG::FixupPhase::fixIntEdge): We shouldn't be killing this node because it could be
+        referenced by other people.
+
 2013-03-19  Oliver Hunt  <oli...@apple.com>
 
         RELEASE_ASSERT fires in exception handler lookup

Modified: trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp (146262 => 146263)


--- trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp	2013-03-19 21:45:52 UTC (rev 146262)
+++ trunk/Source/_javascript_Core/dfg/DFGFixupPhase.cpp	2013-03-19 21:49:34 UTC (rev 146263)
@@ -1240,12 +1240,6 @@
         }
         
         ASSERT(newEdge->shouldSpeculateInteger());
-        
-        // Completely kill the ValueToInt32. We wouldn't have to do crazy things like this
-        // if it weren't for https://bugs.webkit.org/show_bug.cgi?id=111238.
-        node->setOpAndDefaultFlags(Nop);
-        node->child1() = Edge();
-        
         edge = newEdge;
     }
     
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to