Title: [225360] trunk/Source/_javascript_Core
Revision
225360
Author
utatane....@gmail.com
Date
2017-11-30 15:22:18 -0800 (Thu, 30 Nov 2017)

Log Message

[JSC] Use getEffectiveAddress more in JSC
https://bugs.webkit.org/show_bug.cgi?id=180154

Reviewed by Mark Lam.

We can use MacroAssembler::getEffectiveAddress for stack height calculation.
And we also add MacroAssembler::negPtr(src, dest) variation.

* assembler/MacroAssembler.h:
(JSC::MacroAssembler::negPtr):
* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::neg32):
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::neg32):
(JSC::MacroAssemblerARM64::neg64):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::neg32):
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::neg32):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::neg32):
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::neg64):
* dfg/DFGThunks.cpp:
(JSC::DFG::osrEntryThunkGenerator):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
* jit/SetupVarargsFrame.cpp:
(JSC::emitSetVarargsFrame):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (225359 => 225360)


--- trunk/Source/_javascript_Core/ChangeLog	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/ChangeLog	2017-11-30 23:22:18 UTC (rev 225360)
@@ -1,3 +1,35 @@
+2017-11-29  Yusuke Suzuki  <utatane....@gmail.com>
+
+        [JSC] Use getEffectiveAddress more in JSC
+        https://bugs.webkit.org/show_bug.cgi?id=180154
+
+        Reviewed by Mark Lam.
+
+        We can use MacroAssembler::getEffectiveAddress for stack height calculation.
+        And we also add MacroAssembler::negPtr(src, dest) variation.
+
+        * assembler/MacroAssembler.h:
+        (JSC::MacroAssembler::negPtr):
+        * assembler/MacroAssemblerARM.h:
+        (JSC::MacroAssemblerARM::neg32):
+        * assembler/MacroAssemblerARM64.h:
+        (JSC::MacroAssemblerARM64::neg32):
+        (JSC::MacroAssemblerARM64::neg64):
+        * assembler/MacroAssemblerARMv7.h:
+        (JSC::MacroAssemblerARMv7::neg32):
+        * assembler/MacroAssemblerMIPS.h:
+        (JSC::MacroAssemblerMIPS::neg32):
+        * assembler/MacroAssemblerX86Common.h:
+        (JSC::MacroAssemblerX86Common::neg32):
+        * assembler/MacroAssemblerX86_64.h:
+        (JSC::MacroAssemblerX86_64::neg64):
+        * dfg/DFGThunks.cpp:
+        (JSC::DFG::osrEntryThunkGenerator):
+        * ftl/FTLLowerDFGToB3.cpp:
+        (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
+        * jit/SetupVarargsFrame.cpp:
+        (JSC::emitSetVarargsFrame):
+
 2017-11-30  Mark Lam  <mark....@apple.com>
 
         jsc shell's flashHeapAccess() should not do JS work after releasing access to the heap.

Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.h (225359 => 225360)


--- trunk/Source/_javascript_Core/assembler/MacroAssembler.h	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.h	2017-11-30 23:22:18 UTC (rev 225360)
@@ -597,6 +597,11 @@
         neg32(dest);
     }
 
+    void negPtr(RegisterID src, RegisterID dest)
+    {
+        neg32(src, dest);
+    }
+
     void orPtr(RegisterID src, RegisterID dest)
     {
         or32(src, dest);
@@ -906,6 +911,11 @@
         neg64(dest);
     }
 
+    void negPtr(RegisterID src, RegisterID dest)
+    {
+        neg64(src, dest);
+    }
+
     void orPtr(RegisterID src, RegisterID dest)
     {
         or64(src, dest);

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h (225359 => 225360)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h	2017-11-30 23:22:18 UTC (rev 225360)
@@ -224,6 +224,11 @@
         m_assembler.rsbs(srcDest, srcDest, ARMAssembler::getOp2Byte(0));
     }
 
+    void neg32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.rsbs(dest, src, ARMAssembler::getOp2Byte(0));
+    }
+
     void or32(RegisterID src, RegisterID dest)
     {
         m_assembler.orrs(dest, dest, src);

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (225359 => 225360)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2017-11-30 23:22:18 UTC (rev 225360)
@@ -568,11 +568,21 @@
         m_assembler.neg<32>(dest, dest);
     }
 
+    void neg32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.neg<32>(dest, src);
+    }
+
     void neg64(RegisterID dest)
     {
         m_assembler.neg<64>(dest, dest);
     }
 
+    void neg64(RegisterID src, RegisterID dest)
+    {
+        m_assembler.neg<64>(dest, src);
+    }
+
     void or32(RegisterID src, RegisterID dest)
     {
         or32(dest, src, dest);

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (225359 => 225360)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h	2017-11-30 23:22:18 UTC (rev 225360)
@@ -348,6 +348,11 @@
         m_assembler.neg(srcDest, srcDest);
     }
 
+    void neg32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.neg(dest, src);
+    }
+
     void or32(RegisterID src, RegisterID dest)
     {
         m_assembler.orr(dest, dest, src);

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (225359 => 225360)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h	2017-11-30 23:22:18 UTC (rev 225360)
@@ -384,6 +384,11 @@
         m_assembler.subu(srcDest, MIPSRegisters::zero, srcDest);
     }
 
+    void neg32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.subu(dest, MIPSRegisters::zero, src);
+    }
+
     void or32(RegisterID src, RegisterID dest)
     {
         m_assembler.orInsn(dest, dest, src);

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (225359 => 225360)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h	2017-11-30 23:22:18 UTC (rev 225360)
@@ -511,6 +511,12 @@
         m_assembler.negl_r(srcDest);
     }
 
+    void neg32(RegisterID src, RegisterID dest)
+    {
+        move32IfNeeded(src, dest);
+        m_assembler.negl_r(dest);
+    }
+
     void neg32(Address srcDest)
     {
         m_assembler.negl_m(srcDest.offset, srcDest.base);

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h (225359 => 225360)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h	2017-11-30 23:22:18 UTC (rev 225360)
@@ -619,6 +619,12 @@
         m_assembler.negq_r(dest);
     }
 
+    void neg64(RegisterID src, RegisterID dest)
+    {
+        move(src, dest);
+        m_assembler.negq_r(dest);
+    }
+
     void neg64(Address dest)
     {
         m_assembler.negq_m(dest.offset, dest.base);

Modified: trunk/Source/_javascript_Core/dfg/DFGThunks.cpp (225359 => 225360)


--- trunk/Source/_javascript_Core/dfg/DFGThunks.cpp	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/dfg/DFGThunks.cpp	2017-11-30 23:22:18 UTC (rev 225360)
@@ -123,15 +123,12 @@
     
     jit.move(GPRInfo::returnValueGPR2, GPRInfo::regT0);
     jit.loadPtr(MacroAssembler::Address(GPRInfo::regT0, offsetOfFrameSize), GPRInfo::regT1); // Load the frame size.
-    jit.move(GPRInfo::regT1, GPRInfo::regT2);
-    jit.lshiftPtr(MacroAssembler::Imm32(3), GPRInfo::regT2);
-    jit.move(GPRInfo::callFrameRegister, MacroAssembler::stackPointerRegister);
-    jit.subPtr(GPRInfo::regT2, MacroAssembler::stackPointerRegister);
+    jit.negPtr(GPRInfo::regT1, GPRInfo::regT2);
+    jit.getEffectiveAddress(MacroAssembler::BaseIndex(GPRInfo::callFrameRegister, GPRInfo::regT2, MacroAssembler::TimesEight), MacroAssembler::stackPointerRegister);
     
     MacroAssembler::Label loop = jit.label();
     jit.subPtr(MacroAssembler::TrustedImm32(1), GPRInfo::regT1);
-    jit.move(GPRInfo::regT1, GPRInfo::regT4);
-    jit.negPtr(GPRInfo::regT4);
+    jit.negPtr(GPRInfo::regT1, GPRInfo::regT4);
     jit.load32(MacroAssembler::BaseIndex(GPRInfo::regT0, GPRInfo::regT1, MacroAssembler::TimesEight, offsetOfLocals), GPRInfo::regT2);
     jit.load32(MacroAssembler::BaseIndex(GPRInfo::regT0, GPRInfo::regT1, MacroAssembler::TimesEight, offsetOfLocals + sizeof(int32_t)), GPRInfo::regT3);
     jit.store32(GPRInfo::regT2, MacroAssembler::BaseIndex(GPRInfo::callFrameRegister, GPRInfo::regT4, MacroAssembler::TimesEight, -static_cast<intptr_t>(sizeof(Register))));

Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp (225359 => 225360)


--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2017-11-30 23:22:18 UTC (rev 225360)
@@ -7233,8 +7233,7 @@
                     jit.addPtr(CCallHelpers::TrustedImm32(stackAlignmentRegisters() - 1), scratchGPR1);
                     jit.andPtr(CCallHelpers::TrustedImm32(~(stackAlignmentRegisters() - 1)), scratchGPR1);
                     jit.negPtr(scratchGPR1);
-                    jit.lshiftPtr(CCallHelpers::Imm32(3), scratchGPR1);
-                    jit.addPtr(GPRInfo::callFrameRegister, scratchGPR1);
+                    jit.getEffectiveAddress(CCallHelpers::BaseIndex(GPRInfo::callFrameRegister, scratchGPR1, CCallHelpers::TimesEight), scratchGPR1);
 
                     // Before touching stack values, we should update the stack pointer to protect them from signal stack.
                     jit.addPtr(CCallHelpers::TrustedImm32(sizeof(CallerFrameAndPC)), scratchGPR1, CCallHelpers::stackPointerRegister);

Modified: trunk/Source/_javascript_Core/jit/SetupVarargsFrame.cpp (225359 => 225360)


--- trunk/Source/_javascript_Core/jit/SetupVarargsFrame.cpp	2017-11-30 23:17:34 UTC (rev 225359)
+++ trunk/Source/_javascript_Core/jit/SetupVarargsFrame.cpp	2017-11-30 23:22:18 UTC (rev 225360)
@@ -56,8 +56,7 @@
     
     // Now resultGPR has the right stack frame offset in Register units.
     jit.negPtr(resultGPR);
-    jit.lshiftPtr(CCallHelpers::Imm32(3), resultGPR);
-    jit.addPtr(GPRInfo::callFrameRegister, resultGPR);
+    jit.getEffectiveAddress(CCallHelpers::BaseIndex(GPRInfo::callFrameRegister, resultGPR, CCallHelpers::TimesEight), resultGPR);
 }
 
 static void emitSetupVarargsFrameFastCase(VM& vm, CCallHelpers& jit, GPRReg numUsedSlotsGPR, GPRReg scratchGPR1, GPRReg scratchGPR2, GPRReg scratchGPR3, ValueRecovery argCountRecovery, VirtualRegister firstArgumentReg, unsigned firstVarArgOffset, CCallHelpers::JumpList& slowCase)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to