Title: [158820] trunk/Source/_javascript_Core
Revision
158820
Author
[email protected]
Date
2013-11-06 21:05:03 -0800 (Wed, 06 Nov 2013)

Log Message

IC code should handle the call frame register not being the callFrameRegister
https://bugs.webkit.org/show_bug.cgi?id=123865

Reviewed by Geoffrey Garen.
        
For now, in the FTL, the call frame may be something other than our frame pointer,
since it's an argument passed in according to whatever convention LLVM picks.
        
This is temporary in two ways - pretty soon the callFrameRegister will be the actual
frame pointer and not some other register, and LLVM will not pass the frame pointer
as an argument to IC's.

* bytecode/StructureStubInfo.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
* ftl/FTLCompile.cpp:
(JSC::FTL::fixFunctionBasedOnStackMaps):
* ftl/FTLInlineCacheSize.cpp:
(JSC::FTL::sizeOfGetById):
(JSC::FTL::sizeOfPutById):
* jit/CCallHelpers.h:
(JSC::CCallHelpers::setupArguments):
* jit/JITInlineCacheGenerator.cpp:
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITPutByIdGenerator::JITPutByIdGenerator):
* jit/JITInlineCacheGenerator.h:
(JSC::JITGetByIdGenerator::JITGetByIdGenerator):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_put_by_id):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emit_op_put_by_id):
* jit/Repatch.cpp:
(JSC::tryBuildGetByIDList):
(JSC::emitPutTransitionStub):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (158819 => 158820)


--- trunk/Source/_javascript_Core/ChangeLog	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-11-07 05:05:03 UTC (rev 158820)
@@ -1,3 +1,46 @@
+2013-11-06  Filip Pizlo  <[email protected]>
+
+        IC code should handle the call frame register not being the callFrameRegister
+        https://bugs.webkit.org/show_bug.cgi?id=123865
+
+        Reviewed by Geoffrey Garen.
+        
+        For now, in the FTL, the call frame may be something other than our frame pointer,
+        since it's an argument passed in according to whatever convention LLVM picks.
+        
+        This is temporary in two ways - pretty soon the callFrameRegister will be the actual
+        frame pointer and not some other register, and LLVM will not pass the frame pointer
+        as an argument to IC's.
+
+        * bytecode/StructureStubInfo.h:
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::cachedGetById):
+        (JSC::DFG::SpeculativeJIT::cachedPutById):
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::cachedGetById):
+        (JSC::DFG::SpeculativeJIT::cachedPutById):
+        * ftl/FTLCompile.cpp:
+        (JSC::FTL::fixFunctionBasedOnStackMaps):
+        * ftl/FTLInlineCacheSize.cpp:
+        (JSC::FTL::sizeOfGetById):
+        (JSC::FTL::sizeOfPutById):
+        * jit/CCallHelpers.h:
+        (JSC::CCallHelpers::setupArguments):
+        * jit/JITInlineCacheGenerator.cpp:
+        (JSC::JITByIdGenerator::JITByIdGenerator):
+        (JSC::JITPutByIdGenerator::JITPutByIdGenerator):
+        * jit/JITInlineCacheGenerator.h:
+        (JSC::JITGetByIdGenerator::JITGetByIdGenerator):
+        * jit/JITPropertyAccess.cpp:
+        (JSC::JIT::emit_op_get_by_id):
+        (JSC::JIT::emit_op_put_by_id):
+        * jit/JITPropertyAccess32_64.cpp:
+        (JSC::JIT::emit_op_get_by_id):
+        (JSC::JIT::emit_op_put_by_id):
+        * jit/Repatch.cpp:
+        (JSC::tryBuildGetByIDList):
+        (JSC::emitPutTransitionStub):
+
 2013-11-06  Daniel Bates  <[email protected]>
 
         [iOS] Upstream Letterpress effect

Modified: trunk/Source/_javascript_Core/bytecode/StructureStubInfo.h (158819 => 158820)


--- trunk/Source/_javascript_Core/bytecode/StructureStubInfo.h	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/bytecode/StructureStubInfo.h	2013-11-07 05:05:03 UTC (rev 158820)
@@ -225,6 +225,7 @@
 
     struct {
         int8_t registersFlushed;
+        int8_t callFrameRegister;
         int8_t baseGPR;
 #if USE(JSVALUE32_64)
         int8_t valueTagGPR;

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -198,7 +198,7 @@
 void SpeculativeJIT::cachedGetById(CodeOrigin codeOrigin, GPRReg baseTagGPROrNone, GPRReg basePayloadGPR, GPRReg resultTagGPR, GPRReg resultPayloadGPR, unsigned identifierNumber, JITCompiler::Jump slowPathTarget, SpillRegistersMode spillMode)
 {
     JITGetByIdGenerator gen(
-        m_jit.codeBlock(), codeOrigin, usedRegisters(),
+        m_jit.codeBlock(), codeOrigin, usedRegisters(), GPRInfo::callFrameRegister,
         JSValueRegs(baseTagGPROrNone, basePayloadGPR),
         JSValueRegs(resultTagGPR, resultPayloadGPR), spillMode != NeedToSpill);
     
@@ -232,9 +232,9 @@
     writeBarrier(basePayloadGPR, valueTagGPR, valueUse, WriteBarrierForPropertyAccess, scratchGPR);
     
     JITPutByIdGenerator gen(
-        m_jit.codeBlock(), codeOrigin, usedRegisters(), JSValueRegs::payloadOnly(basePayloadGPR),
-        JSValueRegs(valueTagGPR, valuePayloadGPR), scratchGPR, false,
-        m_jit.ecmaModeFor(codeOrigin), putKind);
+        m_jit.codeBlock(), codeOrigin, usedRegisters(), GPRInfo::callFrameRegister,
+        JSValueRegs::payloadOnly(basePayloadGPR), JSValueRegs(valueTagGPR, valuePayloadGPR),
+        scratchGPR, false, m_jit.ecmaModeFor(codeOrigin), putKind);
     
     gen.generateFastPath(m_jit);
     

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT64.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -210,8 +210,8 @@
 void SpeculativeJIT::cachedGetById(CodeOrigin codeOrigin, GPRReg baseGPR, GPRReg resultGPR, unsigned identifierNumber, JITCompiler::Jump slowPathTarget, SpillRegistersMode spillMode)
 {
     JITGetByIdGenerator gen(
-        m_jit.codeBlock(), codeOrigin, usedRegisters(), JSValueRegs(baseGPR),
-        JSValueRegs(resultGPR), spillMode != NeedToSpill);
+        m_jit.codeBlock(), codeOrigin, usedRegisters(), GPRInfo::callFrameRegister,
+        JSValueRegs(baseGPR), JSValueRegs(resultGPR), spillMode != NeedToSpill);
     gen.generateFastPath(m_jit);
     
     JITCompiler::JumpList slowCases;
@@ -232,8 +232,9 @@
     writeBarrier(baseGPR, valueGPR, valueUse, WriteBarrierForPropertyAccess, scratchGPR);
 
     JITPutByIdGenerator gen(
-        m_jit.codeBlock(), codeOrigin, usedRegisters(), JSValueRegs(baseGPR),
-        JSValueRegs(valueGPR), scratchGPR, false, m_jit.ecmaModeFor(codeOrigin), putKind);
+        m_jit.codeBlock(), codeOrigin, usedRegisters(), GPRInfo::callFrameRegister,
+        JSValueRegs(baseGPR), JSValueRegs(valueGPR), scratchGPR, false,
+        m_jit.ecmaModeFor(codeOrigin), putKind);
     gen.generateFastPath(m_jit);
     
     JITCompiler::JumpList slowCases;

Modified: trunk/Source/_javascript_Core/ftl/FTLCompile.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/ftl/FTLCompile.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/ftl/FTLCompile.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -198,8 +198,8 @@
             GPRReg result = GPRInfo::returnValueGPR;
             
             JITGetByIdGenerator gen(
-                codeBlock, getById.codeOrigin(), usedRegisters, JSValueRegs(base),
-                JSValueRegs(result), false);
+                codeBlock, getById.codeOrigin(), usedRegisters, callFrameRegister,
+                JSValueRegs(base), JSValueRegs(result), false);
             
             MacroAssembler::Label begin = slowPathJIT.label();
             
@@ -234,9 +234,9 @@
             GPRReg value = GPRInfo::argumentGPR2;
             
             JITPutByIdGenerator gen(
-                codeBlock, putById.codeOrigin(), usedRegisters, JSValueRegs(base),
-                JSValueRegs(value), GPRInfo::argumentGPR3, false, putById.ecmaMode(),
-                putById.putKind());
+                codeBlock, putById.codeOrigin(), usedRegisters, callFrameRegister,
+                JSValueRegs(base), JSValueRegs(value), GPRInfo::argumentGPR3, false,
+                putById.ecmaMode(), putById.putKind());
             
             MacroAssembler::Label begin = slowPathJIT.label();
             

Modified: trunk/Source/_javascript_Core/ftl/FTLInlineCacheSize.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/ftl/FTLInlineCacheSize.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/ftl/FTLInlineCacheSize.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -44,8 +44,8 @@
     MacroAssembler jit;
     
     JITGetByIdGenerator generator(
-        0, CodeOrigin(), RegisterSet(), JSValueRegs(GPRInfo::regT6), JSValueRegs(GPRInfo::regT7),
-        false);
+        0, CodeOrigin(), RegisterSet(), GPRInfo::callFrameRegister,
+        JSValueRegs(GPRInfo::regT6), JSValueRegs(GPRInfo::regT7), false);
     generator.generateFastPath(jit);
     
     return s_sizeOfGetById = jit.m_assembler.codeSize();
@@ -59,8 +59,9 @@
     MacroAssembler jit;
     
     JITPutByIdGenerator generator(
-        0, CodeOrigin(), RegisterSet(), JSValueRegs(GPRInfo::regT6), JSValueRegs(GPRInfo::regT7),
-        GPRInfo::regT8, false, NotStrictMode, NotDirect);
+        0, CodeOrigin(), RegisterSet(), GPRInfo::callFrameRegister,
+        JSValueRegs(GPRInfo::regT6), JSValueRegs(GPRInfo::regT7), GPRInfo::regT8, false,
+        NotStrictMode, NotDirect);
     generator.generateFastPath(jit);
     
     return s_sizeOfPutById = jit.m_assembler.codeSize();

Modified: trunk/Source/_javascript_Core/jit/CCallHelpers.h (158819 => 158820)


--- trunk/Source/_javascript_Core/jit/CCallHelpers.h	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/jit/CCallHelpers.h	2013-11-07 05:05:03 UTC (rev 158820)
@@ -95,6 +95,44 @@
         addCallArgument(arg2);
     }
     
+    ALWAYS_INLINE void setupArguments(GPRReg arg1, GPRReg arg2, GPRReg arg3)
+    {
+        resetCallArguments();
+        addCallArgument(arg1);
+        addCallArgument(arg2);
+        addCallArgument(arg3);
+    }
+    
+    ALWAYS_INLINE void setupArguments(GPRReg arg1, GPRReg arg2, TrustedImmPtr arg3, TrustedImmPtr arg4)
+    {
+        resetCallArguments();
+        addCallArgument(arg1);
+        addCallArgument(arg2);
+        addCallArgument(arg3);
+        addCallArgument(arg4);
+    }
+    
+    ALWAYS_INLINE void setupArguments(GPRReg arg1, GPRReg arg2, TrustedImmPtr arg3, TrustedImm32 arg4, GPRReg arg5)
+    {
+        resetCallArguments();
+        addCallArgument(arg1);
+        addCallArgument(arg2);
+        addCallArgument(arg3);
+        addCallArgument(arg4);
+        addCallArgument(arg5);
+    }
+    
+    ALWAYS_INLINE void setupArguments(GPRReg arg1, GPRReg arg2, TrustedImmPtr arg3, TrustedImm32 arg4, GPRReg arg5, GPRReg arg6)
+    {
+        resetCallArguments();
+        addCallArgument(arg1);
+        addCallArgument(arg2);
+        addCallArgument(arg3);
+        addCallArgument(arg4);
+        addCallArgument(arg5);
+        addCallArgument(arg6);
+    }
+    
     ALWAYS_INLINE void setupArguments(TrustedImmPtr arg1)
     {
         resetCallArguments();
@@ -906,6 +944,25 @@
         setupTwoStubArgsGPR<GPRInfo::argumentGPR0, GPRInfo::argumentGPR1>(arg1, arg2);
     }
     
+    ALWAYS_INLINE void setupArguments(GPRReg arg1, GPRReg arg2, GPRReg arg3)
+    {
+        setupThreeStubArgsGPR<GPRInfo::argumentGPR0, GPRInfo::argumentGPR1, GPRInfo::argumentGPR2>(arg1, arg2, arg3);
+    }
+    
+    ALWAYS_INLINE void setupArguments(GPRReg arg1, GPRReg arg2, TrustedImmPtr arg3, TrustedImmPtr arg4)
+    {
+        setupTwoStubArgsGPR<GPRInfo::argumentGPR0, GPRInfo::argumentGPR1>(arg1, arg2);
+        move(arg3, GPRInfo::argumentGPR2);
+        move(arg4, GPRInfo::argumentGPR3);
+    }
+    
+    ALWAYS_INLINE void setupArguments(GPRReg arg1, GPRReg arg2, TrustedImmPtr arg3, TrustedImm32 arg4, GPRReg arg5)
+    {
+        setupThreeStubArgsGPR<GPRInfo::argumentGPR0, GPRInfo::argumentGPR1, GPRInfo::argumentGPR4>(arg1, arg2, arg5);
+        move(arg3, GPRInfo::argumentGPR2);
+        move(arg4, GPRInfo::argumentGPR3);
+    }
+    
     ALWAYS_INLINE void setupArguments(GPRReg arg1, TrustedImmPtr arg2, GPRReg arg3, TrustedImmPtr arg4)
     {
         setupTwoStubArgsGPR<GPRInfo::argumentGPR0, GPRInfo::argumentGPR2>(arg1, arg3);

Modified: trunk/Source/_javascript_Core/jit/JITInlineCacheGenerator.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/jit/JITInlineCacheGenerator.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/jit/JITInlineCacheGenerator.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -49,7 +49,7 @@
 
 JITByIdGenerator::JITByIdGenerator(
     CodeBlock* codeBlock, CodeOrigin codeOrigin, const RegisterSet& usedRegisters,
-    JSValueRegs base, JSValueRegs value, bool registersFlushed)
+    GPRReg callFrameRegister, JSValueRegs base, JSValueRegs value, bool registersFlushed)
     : JITInlineCacheGenerator(codeBlock, codeOrigin)
     , m_base(base)
     , m_value(value)
@@ -62,6 +62,7 @@
     m_stubInfo->patch.usedRegisters.set(base);
     m_stubInfo->patch.usedRegisters.set(value);
     
+    m_stubInfo->patch.callFrameRegister = static_cast<int8_t>(callFrameRegister);
     m_stubInfo->patch.baseGPR = static_cast<int8_t>(base.payloadGPR());
     m_stubInfo->patch.valueGPR = static_cast<int8_t>(value.payloadGPR());
 #if USE(JSVALUE32_64)
@@ -129,9 +130,11 @@
 
 JITPutByIdGenerator::JITPutByIdGenerator(
     CodeBlock* codeBlock, CodeOrigin codeOrigin, const RegisterSet& usedRegisters,
-    JSValueRegs base, JSValueRegs value, GPRReg scratch, bool registersFlushed,
-    ECMAMode ecmaMode, PutKind putKind)
-    : JITByIdGenerator(codeBlock, codeOrigin, usedRegisters, base, value, registersFlushed)
+    GPRReg callFrameRegister, JSValueRegs base, JSValueRegs value, GPRReg scratch,
+    bool registersFlushed, ECMAMode ecmaMode, PutKind putKind)
+    : JITByIdGenerator(
+        codeBlock, codeOrigin, usedRegisters, callFrameRegister, base, value,
+        registersFlushed)
     , m_scratch(scratch)
     , m_ecmaMode(ecmaMode)
     , m_putKind(putKind)

Modified: trunk/Source/_javascript_Core/jit/JITInlineCacheGenerator.h (158819 => 158820)


--- trunk/Source/_javascript_Core/jit/JITInlineCacheGenerator.h	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/jit/JITInlineCacheGenerator.h	2013-11-07 05:05:03 UTC (rev 158820)
@@ -56,8 +56,8 @@
     JITByIdGenerator() { }
 
     JITByIdGenerator(
-        CodeBlock*, CodeOrigin, const RegisterSet&, JSValueRegs base, JSValueRegs value,
-        bool registersFlushed);
+        CodeBlock*, CodeOrigin, const RegisterSet&, GPRReg callFrameRegister,
+        JSValueRegs base, JSValueRegs value, bool registersFlushed);
     
 public:
     void reportSlowPathCall(MacroAssembler::Label slowPathBegin, MacroAssembler::Call call)
@@ -96,8 +96,11 @@
 
     JITGetByIdGenerator(
         CodeBlock* codeBlock, CodeOrigin codeOrigin, const RegisterSet& usedRegisters,
-        JSValueRegs base, JSValueRegs value, bool registersFlushed)
-        : JITByIdGenerator(codeBlock, codeOrigin, usedRegisters, base, value, registersFlushed)
+        GPRReg callFrameRegister, JSValueRegs base, JSValueRegs value,
+        bool registersFlushed)
+        : JITByIdGenerator(
+            codeBlock, codeOrigin, usedRegisters, callFrameRegister, base, value,
+            registersFlushed)
     {
     }
     
@@ -109,8 +112,9 @@
     JITPutByIdGenerator() { }
 
     JITPutByIdGenerator(
-        CodeBlock*, CodeOrigin, const RegisterSet& usedRegisters, JSValueRegs base,
-        JSValueRegs value, GPRReg scratch, bool registersFlushed, ECMAMode, PutKind);
+        CodeBlock*, CodeOrigin, const RegisterSet& usedRegisters, GPRReg callFrameRegister,
+        JSValueRegs base, JSValueRegs value, GPRReg scratch, bool registersFlushed,
+        ECMAMode, PutKind);
     
     void generateFastPath(MacroAssembler&);
     

Modified: trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -524,7 +524,7 @@
 
     JITGetByIdGenerator gen(
         m_codeBlock, CodeOrigin(m_bytecodeOffset), RegisterSet::specialRegisters(),
-        JSValueRegs(regT0), JSValueRegs(regT0), true);
+        callFrameRegister, JSValueRegs(regT0), JSValueRegs(regT0), true);
     gen.generateFastPath(*this);
     addSlowCase(gen.slowPathJump());
     m_getByIds.append(gen);
@@ -570,8 +570,8 @@
 
     JITPutByIdGenerator gen(
         m_codeBlock, CodeOrigin(m_bytecodeOffset), RegisterSet::specialRegisters(),
-        JSValueRegs(regT0), JSValueRegs(regT1), regT2, true, m_codeBlock->ecmaMode(),
-        direct ? Direct : NotDirect);
+        callFrameRegister, JSValueRegs(regT0), JSValueRegs(regT1), regT2, true,
+        m_codeBlock->ecmaMode(), direct ? Direct : NotDirect);
     
     gen.generateFastPath(*this);
     addSlowCase(gen.slowPathJump());

Modified: trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -484,7 +484,7 @@
 
     JITGetByIdGenerator gen(
         m_codeBlock, CodeOrigin(m_bytecodeOffset), RegisterSet::specialRegisters(),
-        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), true);
+        callFrameRegister, JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), true);
     gen.generateFastPath(*this);
     addSlowCase(gen.slowPathJump());
     m_getByIds.append(gen);
@@ -530,8 +530,8 @@
     
     JITPutByIdGenerator gen(
         m_codeBlock, CodeOrigin(m_bytecodeOffset), RegisterSet::specialRegisters(),
-        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT3, regT2), regT1, true,
-        m_codeBlock->ecmaMode(), direct ? Direct : NotDirect);
+        callFrameRegister, JSValueRegs::payloadOnly(regT0), JSValueRegs(regT3, regT2),
+        regT1, true, m_codeBlock->ecmaMode(), direct ? Direct : NotDirect);
     
     gen.generateFastPath(*this);
     addSlowCase(gen.slowPathJump());

Modified: trunk/Source/_javascript_Core/jit/Repatch.cpp (158819 => 158820)


--- trunk/Source/_javascript_Core/jit/Repatch.cpp	2013-11-07 04:43:18 UTC (rev 158819)
+++ trunk/Source/_javascript_Core/jit/Repatch.cpp	2013-11-07 05:05:03 UTC (rev 158820)
@@ -460,6 +460,7 @@
         
         stubInfo.u.getByIdSelfList.listSize++;
         
+        GPRReg callFrameRegister = static_cast<GPRReg>(stubInfo.patch.callFrameRegister);
         GPRReg baseGPR = static_cast<GPRReg>(stubInfo.patch.baseGPR);
 #if USE(JSVALUE32_64)
         GPRReg resultTagGPR = static_cast<GPRReg>(stubInfo.patch.valueTagGPR);
@@ -500,11 +501,11 @@
                     stubJit.load32(MacroAssembler::Address(scratchGPR, offsetRelativeToBase(slot.cachedOffset())), scratchGPR);
 #endif
                 }
-                stubJit.setupArgumentsWithExecState(baseGPR, scratchGPR);
+                stubJit.setupArguments(callFrameRegister, baseGPR, scratchGPR);
                 operationFunction = operationCallGetter;
             } else {
-                stubJit.setupArgumentsWithExecState(
-                    baseGPR,
+                stubJit.setupArguments(
+                    callFrameRegister, baseGPR,
                     MacroAssembler::TrustedImmPtr(FunctionPtr(slot.customGetter()).executableAddress()),
                     MacroAssembler::TrustedImmPtr(ident.impl()));
                 operationFunction = operationCallCustomGetter;
@@ -757,6 +758,7 @@
 {
     VM* vm = &exec->vm();
 
+    GPRReg callFrameRegister = static_cast<GPRReg>(stubInfo.patch.callFrameRegister);
     GPRReg baseGPR = static_cast<GPRReg>(stubInfo.patch.baseGPR);
 #if USE(JSVALUE32_64)
     GPRReg valueTagGPR = static_cast<GPRReg>(stubInfo.patch.valueTagGPR);
@@ -771,7 +773,7 @@
     allocator.lock(valueGPR);
     
     CCallHelpers stubJit(vm);
-            
+    
     GPRReg scratchGPR1 = allocator.allocateScratchGPR();
     ASSERT(scratchGPR1 != baseGPR);
     ASSERT(scratchGPR1 != valueGPR);
@@ -913,9 +915,9 @@
         ScratchBuffer* scratchBuffer = vm->scratchBufferForSize(allocator.desiredScratchBufferSize());
         allocator.preserveUsedRegistersToScratchBuffer(stubJit, scratchBuffer, scratchGPR1);
 #if USE(JSVALUE64)
-        stubJit.setupArgumentsWithExecState(baseGPR, MacroAssembler::TrustedImmPtr(structure), MacroAssembler::TrustedImm32(slot.cachedOffset()), valueGPR);
+        stubJit.setupArguments(callFrameRegister, baseGPR, MacroAssembler::TrustedImmPtr(structure), MacroAssembler::TrustedImm32(slot.cachedOffset()), valueGPR);
 #else
-        stubJit.setupArgumentsWithExecState(baseGPR, MacroAssembler::TrustedImmPtr(structure), MacroAssembler::TrustedImm32(slot.cachedOffset()), valueGPR, valueTagGPR);
+        stubJit.setupArguments(callFrameRegister, baseGPR, MacroAssembler::TrustedImmPtr(structure), MacroAssembler::TrustedImm32(slot.cachedOffset()), valueGPR, valueTagGPR);
 #endif
         operationCall = stubJit.call();
         allocator.restoreUsedRegistersFromScratchBuffer(stubJit, scratchBuffer, scratchGPR1);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to