Title: [200990] trunk/Source/_javascript_Core
Revision
200990
Author
commit-qu...@webkit.org
Date
2016-05-16 20:28:46 -0700 (Mon, 16 May 2016)

Log Message

[JSC][DFG] Fill spilled Int32 as Int32 instead of JSInt32
https://bugs.webkit.org/show_bug.cgi?id=157700

Patch by Benjamin Poulain <bpoul...@apple.com> on 2016-05-16
Reviewed by Michael Saboff.

In general, fillSpeculateInt32() originate from SpeculateInt32
and the user does not care about the tag.

This is particularily obvious on Sunspider's math-spectral-norm.js.
In that test, registers are frequently spilled because of x86's DIV.

When they are re-filled, they were always tagged.
Since the loops are small, all the tagging adds up.

* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (200989 => 200990)


--- trunk/Source/_javascript_Core/ChangeLog	2016-05-17 02:34:14 UTC (rev 200989)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-05-17 03:28:46 UTC (rev 200990)
@@ -1,3 +1,22 @@
+2016-05-16  Benjamin Poulain  <bpoul...@apple.com>
+
+        [JSC][DFG] Fill spilled Int32 as Int32 instead of JSInt32
+        https://bugs.webkit.org/show_bug.cgi?id=157700
+
+        Reviewed by Michael Saboff.
+
+        In general, fillSpeculateInt32() originate from SpeculateInt32
+        and the user does not care about the tag.
+
+        This is particularily obvious on Sunspider's math-spectral-norm.js.
+        In that test, registers are frequently spilled because of x86's DIV.
+
+        When they are re-filled, they were always tagged.
+        Since the loops are small, all the tagging adds up.
+
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):
+
 2016-05-16  Saam barati  <sbar...@apple.com>
 
         Unreviewed Cloop build fix.

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (200989 => 200990)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2016-05-17 02:34:14 UTC (rev 200989)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2016-05-17 03:28:46 UTC (rev 200990)
@@ -942,11 +942,13 @@
             }
             if (spillFormat == DataFormatInt32) {
                 m_jit.load32(JITCompiler::addressFor(virtualRegister), gpr);
-                m_jit.or64(GPRInfo::tagTypeNumberRegister, gpr);
-            } else
+                info.fillInt32(*m_stream, gpr);
+                returnFormat = DataFormatInt32;
+            } else {
                 m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);
-            info.fillJSValue(*m_stream, gpr, DataFormatJSInt32);
-            returnFormat = DataFormatJSInt32;
+                info.fillJSValue(*m_stream, gpr, DataFormatJSInt32);
+                returnFormat = DataFormatJSInt32;
+            }
             return gpr;
         }
         m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to