Title: [171354] trunk/Source/_javascript_Core
Revision
171354
Author
fpi...@apple.com
Date
2014-07-22 12:46:41 -0700 (Tue, 22 Jul 2014)

Log Message

ASSERTION FAILED: info.spillFormat() & DataFormatJS in JSC::DFG::SpeculativeJIT::fillSpeculateCell
https://bugs.webkit.org/show_bug.cgi?id=135155
<rdar://problem/17763909>

Reviewed by Oliver Hunt.
        
The DFG fillSpeculate code paths all need to be mindful of the fact that they may be stumbling upon a
contradiction, and that this is OK. In this case, we were speculating cell on an int.

* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
* tests/stress/regress-135155.js: Added.
(run.t.length):
(run):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (171353 => 171354)


--- trunk/Source/_javascript_Core/ChangeLog	2014-07-22 19:36:46 UTC (rev 171353)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-07-22 19:46:41 UTC (rev 171354)
@@ -1,3 +1,20 @@
+2014-07-22  Filip Pizlo  <fpi...@apple.com>
+
+        ASSERTION FAILED: info.spillFormat() & DataFormatJS in JSC::DFG::SpeculativeJIT::fillSpeculateCell
+        https://bugs.webkit.org/show_bug.cgi?id=135155
+        <rdar://problem/17763909>
+
+        Reviewed by Oliver Hunt.
+        
+        The DFG fillSpeculate code paths all need to be mindful of the fact that they may be stumbling upon a
+        contradiction, and that this is OK. In this case, we were speculating cell on an int.
+
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
+        * tests/stress/regress-135155.js: Added.
+        (run.t.length):
+        (run):
+
 2014-07-18  Filip Pizlo  <fpi...@apple.com>
 
         Extend exception fuzzing to the LLInt

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (171353 => 171354)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2014-07-22 19:36:46 UTC (rev 171353)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2014-07-22 19:46:41 UTC (rev 171354)
@@ -1019,7 +1019,12 @@
             terminateSpeculativeExecution(Uncountable, JSValueRegs(), 0);
             return gpr;
         }
-        RELEASE_ASSERT(info.spillFormat() & DataFormatJS);
+        
+        if (!(info.spillFormat() & DataFormatJS)) {
+            terminateSpeculativeExecution(Uncountable, JSValueRegs(), 0);
+            return gpr;
+        }
+        
         m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled);
         m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);
 

Added: trunk/Source/_javascript_Core/tests/stress/regress-135155.js (0 => 171354)


--- trunk/Source/_javascript_Core/tests/stress/regress-135155.js	                        (rev 0)
+++ trunk/Source/_javascript_Core/tests/stress/regress-135155.js	2014-07-22 19:46:41 UTC (rev 171354)
@@ -0,0 +1,9 @@
+function run() {
+    for (var t = 1, i = 0; i < 10000; t++, i++) {
+        t.length = function() {
+            var foo = iv.charCodeAt(foo, undefined);
+        };
+    }
+}
+
+run();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to