Title: [186820] branches/jsc-tailcall/Source/_javascript_Core
Revision
186820
Author
[email protected]
Date
2015-07-14 15:06:57 -0700 (Tue, 14 Jul 2015)

Log Message

jsc-tailcall: Get rid of the arity fixup return thunk
https://bugs.webkit.org/show_bug.cgi?id=146847

Reviewed by Michael Saboff.

This removes the arity check fail return thunk since it is now the
caller's responsibility to restore the stack pointer.

* CMakeLists.txt:
* _javascript_Core.vcxproj/_javascript_Core.vcxproj:
* _javascript_Core.vcxproj/_javascript_Core.vcxproj.filters:
* _javascript_Core.xcodeproj/project.pbxproj:
* dfg/DFGJITCompiler.cpp:
* ftl/FTLLink.cpp:
* jit/ArityCheckFailReturnThunks.cpp: Removed.
* jit/ArityCheckFailReturnThunks.h: Removed.
* jit/JIT.cpp:
* jit/ThunkGenerators.cpp:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/CommonSlowPaths.cpp:
(JSC::setupArityCheckData):
* runtime/CommonSlowPaths.h:
* runtime/Options.h:
* runtime/VM.cpp:
* runtime/VM.h:

Modified Paths

Removed Paths

Diff

Modified: branches/jsc-tailcall/Source/_javascript_Core/CMakeLists.txt (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/CMakeLists.txt	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/CMakeLists.txt	2015-07-14 22:06:57 UTC (rev 186820)
@@ -340,7 +340,6 @@
     interpreter/StackVisitor.cpp
 
     jit/AccessorCallJITStubRoutine.cpp
-    jit/ArityCheckFailReturnThunks.cpp
     jit/AssemblyHelpers.cpp
     jit/BinarySwitch.cpp
     jit/ExecutableAllocationFuzz.cpp

Modified: branches/jsc-tailcall/Source/_javascript_Core/ChangeLog (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/ChangeLog	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/ChangeLog	2015-07-14 22:06:57 UTC (rev 186820)
@@ -1,3 +1,32 @@
+2015-07-13  Basile Clement  <[email protected]>
+
+        jsc-tailcall: Get rid of the arity fixup return thunk
+        https://bugs.webkit.org/show_bug.cgi?id=146847
+
+        Reviewed by Michael Saboff.
+
+        This removes the arity check fail return thunk since it is now the
+        caller's responsibility to restore the stack pointer.
+
+        * CMakeLists.txt:
+        * _javascript_Core.vcxproj/_javascript_Core.vcxproj:
+        * _javascript_Core.vcxproj/_javascript_Core.vcxproj.filters:
+        * _javascript_Core.xcodeproj/project.pbxproj:
+        * dfg/DFGJITCompiler.cpp:
+        * ftl/FTLLink.cpp:
+        * jit/ArityCheckFailReturnThunks.cpp: Removed.
+        * jit/ArityCheckFailReturnThunks.h: Removed.
+        * jit/JIT.cpp:
+        * jit/ThunkGenerators.cpp:
+        * llint/LowLevelInterpreter32_64.asm:
+        * llint/LowLevelInterpreter64.asm:
+        * runtime/CommonSlowPaths.cpp:
+        (JSC::setupArityCheckData):
+        * runtime/CommonSlowPaths.h:
+        * runtime/Options.h:
+        * runtime/VM.cpp:
+        * runtime/VM.h:
+
 2015-07-14  Basile Clement  <[email protected]>
 
         jsc-tailcall: Temporarily disable FTL

Modified: branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj	2015-07-14 22:06:57 UTC (rev 186820)
@@ -604,7 +604,6 @@
     <ClCompile Include="..\interpreter\ProtoCallFrame.cpp" />
     <ClCompile Include="..\interpreter\StackVisitor.cpp" />
     <ClCompile Include="..\jit\AccessorCallJITStubRoutine.cpp" />
-    <ClCompile Include="..\jit\ArityCheckFailReturnThunks.cpp" />
     <ClCompile Include="..\jit\AssemblyHelpers.cpp" />
     <ClCompile Include="..\jit\BinarySwitch.cpp" />
     <ClCompile Include="..\jit\ExecutableAllocationFuzz.cpp" />
@@ -1367,7 +1366,6 @@
     <ClInclude Include="..\interpreter\Register.h" />
     <ClInclude Include="..\interpreter\StackVisitor.h" />
     <ClInclude Include="..\jit\AccessorCallJITStubRoutine.h" />
-    <ClInclude Include="..\jit\ArityCheckFailReturnThunks.h" />
     <ClInclude Include="..\jit\AssemblyHelpers.h" />
     <ClInclude Include="..\jit\BinarySwitch.h" />
     <ClInclude Include="..\jit\CCallHelpers.h" />

Modified: branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj.filters (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj.filters	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj.filters	2015-07-14 22:06:57 UTC (rev 186820)
@@ -1413,9 +1413,6 @@
     <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorProtocolObjects.cpp">
       <Filter>Derived Sources</Filter>
     </ClCompile>
-    <ClCompile Include="..\jit\ArityCheckFailReturnThunks.cpp">
-      <Filter>jit</Filter>
-    </ClCompile>
     <ClCompile Include="..\jit\RegisterPreservationWrapperGenerator.cpp">
       <Filter>jit</Filter>
     </ClCompile>
@@ -3842,9 +3839,6 @@
       <Filter>runtime</Filter>
     </ClInclude>
     <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSDataViewPrototype.lut.h" />
-    <ClInclude Include="..\jit\ArityCheckFailReturnThunks.h">
-      <Filter>jit</Filter>
-    </ClInclude>
     <ClInclude Include="..\jit\RegisterPreservationWrapperGenerator.h">
       <Filter>jit</Filter>
     </ClInclude>

Modified: branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2015-07-14 22:06:57 UTC (rev 186820)
@@ -385,8 +385,6 @@
 		0F6B1CC41862C47800845D97 /* FTLRegisterAtOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CC01862C47800845D97 /* FTLRegisterAtOffset.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		0F6B1CC51862C47800845D97 /* FTLUnwindInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6B1CC11862C47800845D97 /* FTLUnwindInfo.cpp */; };
 		0F6B1CC61862C47800845D97 /* FTLUnwindInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CC21862C47800845D97 /* FTLUnwindInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		0F6B1CC918641DF800845D97 /* ArityCheckFailReturnThunks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6B1CC718641DF800845D97 /* ArityCheckFailReturnThunks.cpp */; };
-		0F6B1CCA18641DF800845D97 /* ArityCheckFailReturnThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CC818641DF800845D97 /* ArityCheckFailReturnThunks.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		0F6C73501AC9F99F00BE1682 /* VariableWriteFireDetail.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6C734E1AC9F99F00BE1682 /* VariableWriteFireDetail.cpp */; };
 		0F6C73511AC9F99F00BE1682 /* VariableWriteFireDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6C734F1AC9F99F00BE1682 /* VariableWriteFireDetail.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		0F6E845A19030BEF00562741 /* DFGVariableAccessData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6E845919030BEF00562741 /* DFGVariableAccessData.cpp */; };
@@ -2127,8 +2125,6 @@
 		0F6B1CC01862C47800845D97 /* FTLRegisterAtOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLRegisterAtOffset.h; path = ftl/FTLRegisterAtOffset.h; sourceTree = "<group>"; };
 		0F6B1CC11862C47800845D97 /* FTLUnwindInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLUnwindInfo.cpp; path = ftl/FTLUnwindInfo.cpp; sourceTree = "<group>"; };
 		0F6B1CC21862C47800845D97 /* FTLUnwindInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLUnwindInfo.h; path = ftl/FTLUnwindInfo.h; sourceTree = "<group>"; };
-		0F6B1CC718641DF800845D97 /* ArityCheckFailReturnThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArityCheckFailReturnThunks.cpp; sourceTree = "<group>"; };
-		0F6B1CC818641DF800845D97 /* ArityCheckFailReturnThunks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArityCheckFailReturnThunks.h; sourceTree = "<group>"; };
 		0F6C734E1AC9F99F00BE1682 /* VariableWriteFireDetail.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VariableWriteFireDetail.cpp; sourceTree = "<group>"; };
 		0F6C734F1AC9F99F00BE1682 /* VariableWriteFireDetail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariableWriteFireDetail.h; sourceTree = "<group>"; };
 		0F6E845919030BEF00562741 /* DFGVariableAccessData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGVariableAccessData.cpp; path = dfg/DFGVariableAccessData.cpp; sourceTree = "<group>"; };
@@ -3905,8 +3901,6 @@
 				0FF054F81AC35B4400E5BE57 /* ExecutableAllocationFuzz.h */,
 				0F7576D018E1FEE9002EF4CD /* AccessorCallJITStubRoutine.cpp */,
 				0F7576D118E1FEE9002EF4CD /* AccessorCallJITStubRoutine.h */,
-				0F6B1CC718641DF800845D97 /* ArityCheckFailReturnThunks.cpp */,
-				0F6B1CC818641DF800845D97 /* ArityCheckFailReturnThunks.h */,
 				0F24E53B17EA9F5900ABB217 /* AssemblyHelpers.cpp */,
 				0F24E53C17EA9F5900ABB217 /* AssemblyHelpers.h */,
 				0F64B26F1A784BAF006E4E66 /* BinarySwitch.cpp */,
@@ -5612,7 +5606,6 @@
 				BC18C3E50E16F5CD00B34460 /* APICast.h in Headers */,
 				BCF605140E203EF800B9A64D /* ArgList.h in Headers */,
 				2A88067919107D5500CB0BBB /* DFGFunctionWhitelist.h in Headers */,
-				0F6B1CCA18641DF800845D97 /* ArityCheckFailReturnThunks.h in Headers */,
 				0F6B1CB91861244C00845D97 /* ArityCheckMode.h in Headers */,
 				A1A009C11831A26E00CF8711 /* ARM64Assembler.h in Headers */,
 				0F898F321B27689F0083A33C /* DFGIntegerRangeOptimizationPhase.h in Headers */,
@@ -7013,7 +7006,6 @@
 				0FE050151AA9091100D33B33 /* DirectArgumentsOffset.cpp in Sources */,
 				0F55F0F414D1063900AC7649 /* AbstractPC.cpp in Sources */,
 				147F39BD107EC37600427A48 /* ArgList.cpp in Sources */,
-				0F6B1CC918641DF800845D97 /* ArityCheckFailReturnThunks.cpp in Sources */,
 				0F743BAA16B88249009F9277 /* ARM64Disassembler.cpp in Sources */,
 				86D3B2C310156BDE002865E7 /* ARMAssembler.cpp in Sources */,
 				65C02850171795E200351E35 /* ARMv7Disassembler.cpp in Sources */,

Modified: branches/jsc-tailcall/Source/_javascript_Core/dfg/DFGJITCompiler.cpp (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/dfg/DFGJITCompiler.cpp	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/dfg/DFGJITCompiler.cpp	2015-07-14 22:06:57 UTC (rev 186820)
@@ -28,7 +28,6 @@
 
 #if ENABLE(DFG_JIT)
 
-#include "ArityCheckFailReturnThunks.h"
 #include "CodeBlock.h"
 #include "DFGFailedFinalizer.h"
 #include "DFGInlineCacheWrapperInlines.h"
@@ -400,11 +399,6 @@
         addPtr(TrustedImm32(maxFrameExtentForSlowPathCall), stackPointerRegister);
     branchTest32(Zero, GPRInfo::returnValueGPR).linkTo(fromArityCheck, this);
     emitStoreCodeOrigin(CodeOrigin(0));
-    GPRReg thunkReg = GPRInfo::argumentGPR1;
-    CodeLocationLabel* arityThunkLabels =
-        m_vm->arityCheckFailReturnThunks->returnPCsFor(*m_vm, m_codeBlock->numParameters());
-    move(TrustedImmPtr(arityThunkLabels), thunkReg);
-    loadPtr(BaseIndex(thunkReg, GPRInfo::returnValueGPR, timesPtr()), thunkReg);
     move(GPRInfo::returnValueGPR, GPRInfo::argumentGPR0);
     m_callArityFixup = call();
     jump(fromArityCheck);

Modified: branches/jsc-tailcall/Source/_javascript_Core/ftl/FTLLink.cpp (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/ftl/FTLLink.cpp	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/ftl/FTLLink.cpp	2015-07-14 22:06:57 UTC (rev 186820)
@@ -28,7 +28,6 @@
 
 #if ENABLE(FTL_JIT)
 
-#include "ArityCheckFailReturnThunks.h"
 #include "CCallHelpers.h"
 #include "CodeBlockWithJITType.h"
 #include "DFGCommon.h"
@@ -169,10 +168,6 @@
         jit.emitFunctionEpilogue();
         mainPathJumps.append(jit.branchTest32(CCallHelpers::Zero, GPRInfo::argumentGPR0));
         jit.emitFunctionPrologue();
-        CodeLocationLabel* arityThunkLabels =
-            vm.arityCheckFailReturnThunks->returnPCsFor(vm, codeBlock->numParameters());
-        jit.move(CCallHelpers::TrustedImmPtr(arityThunkLabels), GPRInfo::argumentGPR1);
-        jit.loadPtr(CCallHelpers::BaseIndex(GPRInfo::argumentGPR1, GPRInfo::argumentGPR0, CCallHelpers::timesPtr()), GPRInfo::argumentGPR1);
         CCallHelpers::Call callArityFixup = jit.call();
         jit.emitFunctionEpilogue();
         mainPathJumps.append(jit.jump());

Deleted: branches/jsc-tailcall/Source/_javascript_Core/jit/ArityCheckFailReturnThunks.cpp (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/jit/ArityCheckFailReturnThunks.cpp	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/jit/ArityCheckFailReturnThunks.cpp	2015-07-14 22:06:57 UTC (rev 186820)
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "ArityCheckFailReturnThunks.h"
-
-#if ENABLE(JIT)
-
-#include "AssemblyHelpers.h"
-#include "LinkBuffer.h"
-#include "JSCInlines.h"
-#include "StackAlignment.h"
-
-namespace JSC {
-
-ArityCheckFailReturnThunks::ArityCheckFailReturnThunks()
-    : m_nextSize(0)
-{
-}
-
-ArityCheckFailReturnThunks::~ArityCheckFailReturnThunks() { }
-
-CodeLocationLabel* ArityCheckFailReturnThunks::returnPCsFor(
-    VM& vm, unsigned numExpectedArgumentsIncludingThis)
-{
-    ASSERT(numExpectedArgumentsIncludingThis >= 1);
-    
-    numExpectedArgumentsIncludingThis = WTF::roundUpToMultipleOf(
-        stackAlignmentRegisters(), numExpectedArgumentsIncludingThis);
-    
-    {
-        ConcurrentJITLocker locker(m_lock);
-        if (numExpectedArgumentsIncludingThis < m_nextSize)
-            return m_returnPCArrays.last().get();
-    }
-    
-    ASSERT(!isCompilationThread());
-    
-    numExpectedArgumentsIncludingThis = std::max(numExpectedArgumentsIncludingThis, m_nextSize * 2);
-    
-    AssemblyHelpers jit(&vm, 0);
-    
-    Vector<AssemblyHelpers::Label> labels;
-    
-    for (unsigned size = m_nextSize; size <= numExpectedArgumentsIncludingThis; size += stackAlignmentRegisters()) {
-        labels.append(jit.label());
-        
-        jit.load32(
-            AssemblyHelpers::Address(
-                AssemblyHelpers::stackPointerRegister,
-                (JSStack::ArgumentCount - JSStack::CallerFrameAndPCSize) * sizeof(Register) +
-                PayloadOffset),
-            GPRInfo::regT4);
-        jit.add32(
-            AssemblyHelpers::TrustedImm32(
-                JSStack::CallFrameHeaderSize - JSStack::CallerFrameAndPCSize + size - 1),
-            GPRInfo::regT4, GPRInfo::regT2);
-        jit.lshift32(AssemblyHelpers::TrustedImm32(3), GPRInfo::regT2);
-        jit.addPtr(AssemblyHelpers::stackPointerRegister, GPRInfo::regT2);
-        jit.loadPtr(GPRInfo::regT2, GPRInfo::regT2);
-        
-        jit.addPtr(
-            AssemblyHelpers::TrustedImm32(size * sizeof(Register)),
-            AssemblyHelpers::stackPointerRegister);
-        
-        // Thunks like ours want to use the return PC to figure out where things
-        // were saved. So, we pay it forward.
-        jit.store32(
-            GPRInfo::regT4,
-            AssemblyHelpers::Address(
-                AssemblyHelpers::stackPointerRegister,
-                (JSStack::ArgumentCount - JSStack::CallerFrameAndPCSize) * sizeof(Register) +
-                PayloadOffset));
-        
-        jit.jump(GPRInfo::regT2);
-    }
-    
-    // Sadly, we cannot fail here because the LLInt may need us.
-    LinkBuffer linkBuffer(vm, jit, GLOBAL_THUNK_ID, JITCompilationMustSucceed);
-    
-    unsigned returnPCsSize = numExpectedArgumentsIncludingThis / stackAlignmentRegisters() + 1;
-    std::unique_ptr<CodeLocationLabel[]> returnPCs =
-        std::make_unique<CodeLocationLabel[]>(returnPCsSize);
-    for (unsigned size = 0; size <= numExpectedArgumentsIncludingThis; size += stackAlignmentRegisters()) {
-        unsigned index = size / stackAlignmentRegisters();
-        RELEASE_ASSERT(index < returnPCsSize);
-        if (size < m_nextSize)
-            returnPCs[index] = m_returnPCArrays.last()[index];
-        else
-            returnPCs[index] = linkBuffer.locationOf(labels[(size - m_nextSize) / stackAlignmentRegisters()]);
-    }
-
-    CodeLocationLabel* result = returnPCs.get();
-
-    {
-        ConcurrentJITLocker locker(m_lock);
-        m_returnPCArrays.append(WTF::move(returnPCs));
-        m_refs.append(FINALIZE_CODE(linkBuffer, ("Arity check fail return thunks for up to numArgs = %u", numExpectedArgumentsIncludingThis)));
-        m_nextSize = numExpectedArgumentsIncludingThis + stackAlignmentRegisters();
-    }
-    
-    return result;
-}
-
-CodeLocationLabel ArityCheckFailReturnThunks::returnPCFor(VM& vm, unsigned slotsToAdd)
-{
-    return returnPCsFor(vm, slotsToAdd)[slotsToAdd / stackAlignmentRegisters()];
-}
-
-} // namespace JSC
-
-#endif // ENABLE(JIT)
-

Deleted: branches/jsc-tailcall/Source/_javascript_Core/jit/ArityCheckFailReturnThunks.h (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/jit/ArityCheckFailReturnThunks.h	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/jit/ArityCheckFailReturnThunks.h	2015-07-14 22:06:57 UTC (rev 186820)
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef ArityCheckFailReturnThunks_h
-#define ArityCheckFailReturnThunks_h
-
-#if ENABLE(JIT)
-
-#include "CodeLocation.h"
-#include "ConcurrentJITLock.h"
-#include <wtf/HashMap.h>
-
-namespace JSC {
-
-class ArityCheckFailReturnThunks {
-public:
-    ArityCheckFailReturnThunks();
-    ~ArityCheckFailReturnThunks();
-    
-    // Returns a pointer to an array of return labels indexed by missingArgs.
-    CodeLocationLabel* returnPCsFor(VM&, unsigned numExpectedArgumentsIncludingThis);
-    
-    CodeLocationLabel returnPCFor(VM&, unsigned slotsToAdd);
-    
-private:
-    Vector<std::unique_ptr<CodeLocationLabel[]>> m_returnPCArrays;
-    unsigned m_nextSize;
-    Vector<MacroAssemblerCodeRef> m_refs;
-    ConcurrentJITLock m_lock;
-};
-
-} // namespace JSC
-
-#endif // ENABLE(JIT)
-
-#endif // ArityCheckFailReturnThunks_h
-

Modified: branches/jsc-tailcall/Source/_javascript_Core/jit/JIT.cpp (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/jit/JIT.cpp	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/jit/JIT.cpp	2015-07-14 22:06:57 UTC (rev 186820)
@@ -29,7 +29,6 @@
 
 #include "JIT.h"
 
-#include "ArityCheckFailReturnThunks.h"
 #include "CodeBlock.h"
 #include "CodeBlockWithJITType.h"
 #include "DFGCapabilities.h"
@@ -586,11 +585,6 @@
         if (maxFrameExtentForSlowPathCall)
             addPtr(TrustedImm32(maxFrameExtentForSlowPathCall), stackPointerRegister);
         branchTest32(Zero, returnValueGPR).linkTo(beginLabel, this);
-        GPRReg thunkReg = GPRInfo::argumentGPR1;
-        CodeLocationLabel* failThunkLabels =
-            m_vm->arityCheckFailReturnThunks->returnPCsFor(*m_vm, m_codeBlock->numParameters());
-        move(TrustedImmPtr(failThunkLabels), thunkReg);
-        loadPtr(BaseIndex(thunkReg, returnValueGPR, timesPtr()), thunkReg);
         move(returnValueGPR, GPRInfo::argumentGPR0);
         emitNakedCall(m_vm->getCTIStub(arityFixupGenerator).code());
 

Modified: branches/jsc-tailcall/Source/_javascript_Core/jit/ThunkGenerators.cpp (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/jit/ThunkGenerators.cpp	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/jit/ThunkGenerators.cpp	2015-07-14 22:06:57 UTC (rev 186820)
@@ -438,13 +438,6 @@
     jit.addPtr(JSInterfaceJIT::regT5, JSInterfaceJIT::callFrameRegister);
     jit.addPtr(JSInterfaceJIT::regT5, JSInterfaceJIT::stackPointerRegister);
 
-    // Save the original return PC.
-    jit.loadPtr(JSInterfaceJIT::Address(JSInterfaceJIT::callFrameRegister, CallFrame::returnPCOffset()), GPRInfo::regT5);
-    jit.storePtr(GPRInfo::regT5, MacroAssembler::BaseIndex(JSInterfaceJIT::regT3, JSInterfaceJIT::argumentGPR0, JSInterfaceJIT::TimesEight));
-    
-    // Install the new return PC.
-    jit.storePtr(GPRInfo::argumentGPR1, JSInterfaceJIT::Address(JSInterfaceJIT::callFrameRegister, CallFrame::returnPCOffset()));
-
 #  if CPU(X86_64)
     jit.push(JSInterfaceJIT::regT4);
 #  endif
@@ -486,13 +479,6 @@
     jit.addPtr(JSInterfaceJIT::regT5, JSInterfaceJIT::callFrameRegister);
     jit.addPtr(JSInterfaceJIT::regT5, JSInterfaceJIT::stackPointerRegister);
 
-    // Save the original return PC.
-    jit.loadPtr(JSInterfaceJIT::Address(JSInterfaceJIT::callFrameRegister, CallFrame::returnPCOffset()), GPRInfo::regT5);
-    jit.storePtr(GPRInfo::regT5, MacroAssembler::BaseIndex(JSInterfaceJIT::regT3, JSInterfaceJIT::argumentGPR0, JSInterfaceJIT::TimesEight));
-    
-    // Install the new return PC.
-    jit.storePtr(GPRInfo::argumentGPR1, JSInterfaceJIT::Address(JSInterfaceJIT::callFrameRegister, CallFrame::returnPCOffset()));
-    
 #  if CPU(X86)
     jit.push(JSInterfaceJIT::regT4);
 #  endif

Modified: branches/jsc-tailcall/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2015-07-14 22:06:57 UTC (rev 186820)
@@ -574,7 +574,6 @@
     btpz t3, .proceedInline
     
     loadp CommonSlowPaths::ArityCheckData::paddedStackSpace[r1], a0
-    loadp CommonSlowPaths::ArityCheckData::returnPC[r1], a1
     call t3
     if ASSERT_ENABLED
         loadp ReturnPC[cfr], t0

Modified: branches/jsc-tailcall/Source/_javascript_Core/llint/LowLevelInterpreter64.asm (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/llint/LowLevelInterpreter64.asm	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/llint/LowLevelInterpreter64.asm	2015-07-14 22:06:57 UTC (rev 186820)
@@ -498,7 +498,6 @@
     btpz t3, .proceedInline
     
     loadp CommonSlowPaths::ArityCheckData::paddedStackSpace[r1], a0
-    loadp CommonSlowPaths::ArityCheckData::returnPC[r1], a1
     call t3
     if ASSERT_ENABLED
         loadp ReturnPC[cfr], t0

Modified: branches/jsc-tailcall/Source/_javascript_Core/runtime/CommonSlowPaths.cpp (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/runtime/CommonSlowPaths.cpp	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/runtime/CommonSlowPaths.cpp	2015-07-14 22:06:57 UTC (rev 186820)
@@ -25,7 +25,6 @@
 
 #include "config.h"
 #include "CommonSlowPaths.h"
-#include "ArityCheckFailReturnThunks.h"
 #include "ArrayConstructor.h"
 #include "CallFrame.h"
 #include "ClonedArguments.h"
@@ -167,15 +166,11 @@
     CommonSlowPaths::ArityCheckData* result = vm.arityCheckData.get();
     result->paddedStackSpace = slotsToAdd;
 #if ENABLE(JIT)
-    if (vm.canUseJIT()) {
+    if (vm.canUseJIT())
         result->thunkToCall = vm.getCTIStub(arityFixupGenerator).code().executableAddress();
-        result->returnPC = vm.arityCheckFailReturnThunks->returnPCFor(vm, slotsToAdd * stackAlignmentRegisters()).executableAddress();
-    } else
+    else
 #endif
-    {
         result->thunkToCall = 0;
-        result->returnPC = 0;
-    }
     return result;
 }
 

Modified: branches/jsc-tailcall/Source/_javascript_Core/runtime/CommonSlowPaths.h (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/runtime/CommonSlowPaths.h	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/runtime/CommonSlowPaths.h	2015-07-14 22:06:57 UTC (rev 186820)
@@ -49,7 +49,6 @@
 struct ArityCheckData {
     unsigned paddedStackSpace;
     void* thunkToCall;
-    void* returnPC;
 };
 
 ALWAYS_INLINE int arityCheckFor(ExecState* exec, JSStack* stack, CodeSpecializationKind kind)

Modified: branches/jsc-tailcall/Source/_javascript_Core/runtime/VM.cpp (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/runtime/VM.cpp	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/runtime/VM.cpp	2015-07-14 22:06:57 UTC (rev 186820)
@@ -30,7 +30,6 @@
 #include "VM.h"
 
 #include "ArgList.h"
-#include "ArityCheckFailReturnThunks.h"
 #include "ArrayBufferNeuteringWatchpoint.h"
 #include "BuiltinExecutables.h"
 #include "CodeBlock.h"
@@ -246,7 +245,6 @@
 
 #if ENABLE(JIT)
     jitStubs = std::make_unique<JITThunks>();
-    arityCheckFailReturnThunks = std::make_unique<ArityCheckFailReturnThunks>();
 #endif
     arityCheckData = std::make_unique<CommonSlowPaths::ArityCheckData>();
 

Modified: branches/jsc-tailcall/Source/_javascript_Core/runtime/VM.h (186819 => 186820)


--- branches/jsc-tailcall/Source/_javascript_Core/runtime/VM.h	2015-07-14 21:56:14 UTC (rev 186819)
+++ branches/jsc-tailcall/Source/_javascript_Core/runtime/VM.h	2015-07-14 22:06:57 UTC (rev 186820)
@@ -71,7 +71,6 @@
 
 namespace JSC {
 
-class ArityCheckFailReturnThunks;
 class BuiltinExecutables;
 class CodeBlock;
 class CodeCache;
@@ -339,7 +338,6 @@
     }
     NativeExecutable* getHostFunction(NativeFunction, Intrinsic);
 
-    std::unique_ptr<ArityCheckFailReturnThunks> arityCheckFailReturnThunks;
 #endif // ENABLE(JIT)
     std::unique_ptr<CommonSlowPaths::ArityCheckData> arityCheckData;
 #if ENABLE(FTL_JIT)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to