Title: [96841] trunk/Source/_javascript_Core
Revision
96841
Author
[email protected]
Date
2011-10-06 12:00:50 -0700 (Thu, 06 Oct 2011)

Log Message

DFG JIT 32_64 should check type of values being filled by fillSpeculateInt
https://bugs.webkit.org/show_bug.cgi?id=69549

Reviewed by Oliver Hunt.

This breaks sunspider/3d-cube.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
    - Speculation check on the tag. 

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (96840 => 96841)


--- trunk/Source/_javascript_Core/ChangeLog	2011-10-06 18:58:04 UTC (rev 96840)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-10-06 19:00:50 UTC (rev 96841)
@@ -1,3 +1,16 @@
+2011-10-06  Gavin Barraclough  <[email protected]>
+
+        DFG JIT 32_64 should check type of values being filled by fillSpeculateInt
+        https://bugs.webkit.org/show_bug.cgi?id=69549
+
+        Reviewed by Oliver Hunt.
+
+        This breaks sunspider/3d-cube.
+
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
+            - Speculation check on the tag. 
+
 2011-10-06  Mark Hahnenberg  <[email protected]>
 
         Snow Leopard build fix

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (96840 => 96841)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2011-10-06 18:58:04 UTC (rev 96840)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2011-10-06 19:00:50 UTC (rev 96841)
@@ -61,12 +61,15 @@
             return allocate();
         }
 
-        ASSERT(info.spillFormat() & DataFormatJS);
+        DataFormat spillFormat = info.spillFormat();
+        ASSERT(spillFormat & DataFormatJS);
 
         m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled);
 
         // If we know this was spilled as an integer we can fill without checking.
-        // FIXME: Currently we always assume strict integers.
+        if (spillFormat != DataFormatJSInteger)
+            speculationCheck(m_jit.branch32(MacroAssembler::NotEqual, JITCompiler::tagFor(virtualRegister), TrustedImm32(JSValue::Int32Tag)));
+
         m_jit.load32(JITCompiler::payloadFor(virtualRegister), gpr);
         info.fillInteger(gpr);
         returnFormat = DataFormatInteger;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to