Title: [95233] trunk/Source/_javascript_Core
Revision
95233
Author
fpi...@apple.com
Date
2011-09-15 14:53:48 -0700 (Thu, 15 Sep 2011)

Log Message

DFG speculative JIT sometimes asserts that a value is not a number
even when it doesn't know anything about the number
https://bugs.webkit.org/show_bug.cgi?id=68189

Reviewed by Oliver Hunt.

* dfg/DFGGenerationInfo.h:
(JSC::DFG::GenerationInfo::isUnknownJS):
* dfg/DFGJITCodeGenerator.cpp:
(JSC::DFG::JITCodeGenerator::isKnownNotNumber):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (95232 => 95233)


--- trunk/Source/_javascript_Core/ChangeLog	2011-09-15 21:49:17 UTC (rev 95232)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-09-15 21:53:48 UTC (rev 95233)
@@ -1,5 +1,18 @@
 2011-09-15  Filip Pizlo  <fpi...@apple.com>
 
+        DFG speculative JIT sometimes asserts that a value is not a number
+        even when it doesn't know anything about the number
+        https://bugs.webkit.org/show_bug.cgi?id=68189
+
+        Reviewed by Oliver Hunt.
+
+        * dfg/DFGGenerationInfo.h:
+        (JSC::DFG::GenerationInfo::isUnknownJS):
+        * dfg/DFGJITCodeGenerator.cpp:
+        (JSC::DFG::JITCodeGenerator::isKnownNotNumber):
+
+2011-09-15  Filip Pizlo  <fpi...@apple.com>
+
         All of the functionality in the non-speculative JIT should be
         available to the speculative JIT via helper methods
         https://bugs.webkit.org/show_bug.cgi?id=68186

Modified: trunk/Source/_javascript_Core/dfg/DFGGenerationInfo.h (95232 => 95233)


--- trunk/Source/_javascript_Core/dfg/DFGGenerationInfo.h	2011-09-15 21:49:17 UTC (rev 95232)
+++ trunk/Source/_javascript_Core/dfg/DFGGenerationInfo.h	2011-09-15 21:53:48 UTC (rev 95233)
@@ -259,6 +259,12 @@
     {
         return isJSFormat(DataFormatJSBoolean);
     }
+    
+    bool isUnknownJS()
+    {
+        return registerFormat() == DataFormatNone || registerFormat() == DataFormatJS
+            || spillFormat() == DataFormatNone || spillFormat() == DataFormatJS;
+    }
 
     // Get the machine resister currently holding the value.
     GPRReg gpr() { ASSERT(m_registerFormat && m_registerFormat != DataFormatDouble); return u.gpr; }

Modified: trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp (95232 => 95233)


--- trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp	2011-09-15 21:49:17 UTC (rev 95232)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCodeGenerator.cpp	2011-09-15 21:53:48 UTC (rev 95233)
@@ -414,7 +414,7 @@
     VirtualRegister virtualRegister = node.virtualRegister();
     GenerationInfo& info = m_generationInfo[virtualRegister];
     
-    return (!info.isJSDouble() && !info.isJSInteger())
+    return (!info.isJSDouble() && !info.isJSInteger() && !info.isUnknownJS())
         || (node.isConstant() && !isNumberConstant(nodeIndex));
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to