Title: [198017] releases/WebKitGTK/webkit-2.12/Source/_javascript_Core
Revision
198017
Author
[email protected]
Date
2016-03-11 06:37:34 -0800 (Fri, 11 Mar 2016)

Log Message

Merge r197687 - [JSC] Improve how DFG zero Floating Point registers
https://bugs.webkit.org/show_bug.cgi?id=155096

Patch by Benjamin Poulain <[email protected]> on 2016-03-07
Reviewed by Geoffrey Garen.

DFG had a weird way of zeroing a FPR:
    -zero a GP.
    -move that to a FP.

Filip added moveZeroToDouble() for B3. This patch
uses that in the lower tiers.

* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::moveZeroToDouble):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
* jit/ThunkGenerators.cpp:
(JSC::floorThunkGenerator):
(JSC::roundThunkGenerator):

Fix the ARM build after r197687
https://bugs.webkit.org/show_bug.cgi?id=155128

Reviewed by Saam Barati.

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::moveZeroToDouble):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog (198016 => 198017)


--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog	2016-03-11 14:28:51 UTC (rev 198016)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/ChangeLog	2016-03-11 14:37:34 UTC (rev 198017)
@@ -1,3 +1,35 @@
+2016-03-07  Csaba Osztrogonác  <[email protected]>
+
+        Fix the ARM build after r197687
+        https://bugs.webkit.org/show_bug.cgi?id=155128
+
+        Reviewed by Saam Barati.
+
+        * assembler/MacroAssemblerARM.h:
+        (JSC::MacroAssemblerARM::moveZeroToDouble):
+
+2016-03-07  Benjamin Poulain  <[email protected]>
+
+        [JSC] Improve how DFG zero Floating Point registers
+        https://bugs.webkit.org/show_bug.cgi?id=155096
+
+        Reviewed by Geoffrey Garen.
+
+        DFG had a weird way of zeroing a FPR:
+            -zero a GP.
+            -move that to a FP.
+
+        Filip added moveZeroToDouble() for B3. This patch
+        uses that in the lower tiers.
+
+        * assembler/MacroAssemblerARMv7.h:
+        (JSC::MacroAssemblerARMv7::moveZeroToDouble):
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
+        * jit/ThunkGenerators.cpp:
+        (JSC::floorThunkGenerator):
+        (JSC::roundThunkGenerator):
+
 2016-03-07  Andreas Kling  <[email protected]>
 
         REGRESSION (r197303): Web Inspector crashes web process when inspecting an element on TOT

Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/assembler/MacroAssemblerARM.h (198016 => 198017)


--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/assembler/MacroAssemblerARM.h	2016-03-11 14:28:51 UTC (rev 198016)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/assembler/MacroAssemblerARM.h	2016-03-11 14:37:34 UTC (rev 198017)
@@ -1201,6 +1201,12 @@
             m_assembler.vmov_f64(dest, src);
     }
 
+    void moveZeroToDouble(FPRegisterID reg)
+    {
+        static double zeroConstant = 0.;
+        loadDouble(TrustedImmPtr(&zeroConstant), reg);
+    }
+
     void addDouble(FPRegisterID src, FPRegisterID dest)
     {
         m_assembler.vadd_f64(dest, dest, src);

Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (198016 => 198017)


--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h	2016-03-11 14:28:51 UTC (rev 198016)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h	2016-03-11 14:37:34 UTC (rev 198017)
@@ -929,6 +929,12 @@
             m_assembler.vmov(dest, src);
     }
 
+    void moveZeroToDouble(FPRegisterID reg)
+    {
+        static double zeroConstant = 0.;
+        loadDouble(TrustedImmPtr(&zeroConstant), reg);
+    }
+
     void loadDouble(TrustedImmPtr address, FPRegisterID dest)
     {
         move(address, addressTempRegister);

Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (198016 => 198017)


--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2016-03-11 14:28:51 UTC (rev 198016)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2016-03-11 14:37:34 UTC (rev 198017)
@@ -1133,13 +1133,17 @@
 
     if (info.registerFormat() == DataFormatNone) {
         if (edge->hasConstant()) {
-            GPRReg gpr = allocate();
-
             if (edge->isNumberConstant()) {
                 FPRReg fpr = fprAllocate();
-                m_jit.move(MacroAssembler::Imm64(reinterpretDoubleToInt64(edge->asNumber())), gpr);
-                m_jit.move64ToDouble(gpr, fpr);
-                unlock(gpr);
+                int64_t doubleAsInt = reinterpretDoubleToInt64(edge->asNumber());
+                if (!doubleAsInt)
+                    m_jit.moveZeroToDouble(fpr);
+                else {
+                    GPRReg gpr = allocate();
+                    m_jit.move(MacroAssembler::Imm64(doubleAsInt), gpr);
+                    m_jit.move64ToDouble(gpr, fpr);
+                    unlock(gpr);
+                }
 
                 m_fprs.retain(fpr, virtualRegister, SpillOrderDouble);
                 info.fillDouble(*m_stream, fpr);

Modified: releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/jit/ThunkGenerators.cpp (198016 => 198017)


--- releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/jit/ThunkGenerators.cpp	2016-03-11 14:28:51 UTC (rev 198016)
+++ releases/WebKitGTK/webkit-2.12/Source/_javascript_Core/jit/ThunkGenerators.cpp	2016-03-11 14:37:34 UTC (rev 198017)
@@ -774,7 +774,6 @@
 
 static const double _oneConstant_ = 1.0;
 static const double negativeHalfConstant = -0.5;
-static const double zeroConstant = 0.0;
 static const double halfConstant = 0.5;
     
 MacroAssemblerCodeRef floorThunkGenerator(VM* vm)
@@ -798,7 +797,7 @@
     SpecializedThunkJIT::Jump intResult;
     SpecializedThunkJIT::JumpList doubleResult;
     if (jit.supportsFloatingPointTruncate()) {
-        jit.loadDouble(MacroAssembler::TrustedImmPtr(&zeroConstant), SpecializedThunkJIT::fpRegT1);
+        jit.moveZeroToDouble(SpecializedThunkJIT::fpRegT1);
         doubleResult.append(jit.branchDouble(MacroAssembler::DoubleEqual, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::fpRegT1));
         SpecializedThunkJIT::JumpList slowPath;
         // Handle the negative doubles in the slow path for now.
@@ -854,7 +853,7 @@
     SpecializedThunkJIT::Jump intResult;
     SpecializedThunkJIT::JumpList doubleResult;
     if (jit.supportsFloatingPointTruncate()) {
-        jit.loadDouble(MacroAssembler::TrustedImmPtr(&zeroConstant), SpecializedThunkJIT::fpRegT1);
+        jit.moveZeroToDouble(SpecializedThunkJIT::fpRegT1);
         doubleResult.append(jit.branchDouble(MacroAssembler::DoubleEqual, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::fpRegT1));
         SpecializedThunkJIT::JumpList slowPath;
         // Handle the negative doubles in the slow path for now.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to