Title: [92010] trunk/Source/_javascript_Core
Revision
92010
Author
[email protected]
Date
2011-07-29 14:34:44 -0700 (Fri, 29 Jul 2011)

Log Message

Crash when opening docs.google.com
https://bugs.webkit.org/show_bug.cgi?id=65327

Reviewed by Gavin Barraclough.

The speculative JIT was only checking whether a value is an array when
we had already checked that it was, rather then when we hadn't.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compile):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (92009 => 92010)


--- trunk/Source/_javascript_Core/ChangeLog	2011-07-29 21:29:01 UTC (rev 92009)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-07-29 21:34:44 UTC (rev 92010)
@@ -1,3 +1,16 @@
+2011-07-29  Filip Pizlo  <[email protected]>
+
+        Crash when opening docs.google.com
+        https://bugs.webkit.org/show_bug.cgi?id=65327
+
+        Reviewed by Gavin Barraclough.
+        
+        The speculative JIT was only checking whether a value is an array when
+        we had already checked that it was, rather then when we hadn't.
+
+        * dfg/DFGSpeculativeJIT.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+
 2011-07-28  Oliver Hunt  <[email protected]>
 
         *_list instructions are only used in one place, where the code is wrong.

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (92009 => 92010)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2011-07-29 21:29:01 UTC (rev 92009)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2011-07-29 21:34:44 UTC (rev 92010)
@@ -946,7 +946,7 @@
         // Check that base is an array, and that property is contained within m_vector (< m_vectorLength).
         // If we have predicted the base to be type array, we can skip the check.
         Node& baseNode = m_jit.graph()[node.child1()];
-        if (baseNode.op != GetLocal || isArrayPrediction(m_jit.graph().getPrediction(baseNode.local())))
+        if (baseNode.op != GetLocal || !isArrayPrediction(m_jit.graph().getPrediction(baseNode.local())))
             speculationCheck(m_jit.branchPtr(MacroAssembler::NotEqual, MacroAssembler::Address(baseReg), MacroAssembler::TrustedImmPtr(m_jit.globalData()->jsArrayVPtr)));
 
         base.use();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to