diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-20 09:56:07 +0000 |
commit | 41386e9cb918eed93b3f13648cbef387e371e451 (patch) | |
tree | a97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp | |
parent | e15dd966d523731101f70ccf768bba12435a0208 (diff) | |
download | WebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz |
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp')
-rw-r--r-- | Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp b/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp index b5c68086d..74b086a7c 100644 --- a/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp +++ b/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp @@ -30,7 +30,7 @@ #include "CodeBlock.h" #include "LinkBuffer.h" -#include "JSCInlines.h" +#include "Operations.h" namespace JSC { @@ -49,12 +49,12 @@ JITInlineCacheGenerator::JITInlineCacheGenerator(CodeBlock* codeBlock, CodeOrigi JITByIdGenerator::JITByIdGenerator( CodeBlock* codeBlock, CodeOrigin codeOrigin, const RegisterSet& usedRegisters, - JSValueRegs base, JSValueRegs value, SpillRegistersMode spillMode) + GPRReg callFrameRegister, JSValueRegs base, JSValueRegs value, bool registersFlushed) : JITInlineCacheGenerator(codeBlock, codeOrigin) , m_base(base) , m_value(value) { - m_stubInfo->patch.spillMode = spillMode; + m_stubInfo->patch.registersFlushed = registersFlushed; m_stubInfo->patch.usedRegisters = usedRegisters; // This is a convenience - in cases where the only registers you're using are base/value, @@ -62,6 +62,7 @@ JITByIdGenerator::JITByIdGenerator( 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) @@ -101,23 +102,15 @@ void JITByIdGenerator::finalize(LinkBuffer& linkBuffer) void JITByIdGenerator::generateFastPathChecks(MacroAssembler& jit, GPRReg butterfly) { - m_structureCheck = jit.patchableBranch32WithPatch( + m_structureCheck = jit.patchableBranchPtrWithPatch( MacroAssembler::NotEqual, - MacroAssembler::Address(m_base.payloadGPR(), JSCell::structureIDOffset()), - m_structureImm, MacroAssembler::TrustedImm32(0)); + MacroAssembler::Address(m_base.payloadGPR(), JSCell::structureOffset()), + m_structureImm, MacroAssembler::TrustedImmPtr(reinterpret_cast<void*>(unusedPointer))); m_propertyStorageLoad = jit.convertibleLoadPtr( MacroAssembler::Address(m_base.payloadGPR(), JSObject::butterflyOffset()), butterfly); } -JITGetByIdGenerator::JITGetByIdGenerator( - CodeBlock* codeBlock, CodeOrigin codeOrigin, const RegisterSet& usedRegisters, - JSValueRegs base, JSValueRegs value, SpillRegistersMode spillMode) - : JITByIdGenerator(codeBlock, codeOrigin, usedRegisters, base, value, spillMode) -{ - RELEASE_ASSERT(base.payloadGPR() != value.tagGPR()); -} - void JITGetByIdGenerator::generateFastPath(MacroAssembler& jit) { generateFastPathChecks(jit, m_value.payloadGPR()); @@ -137,9 +130,11 @@ void JITGetByIdGenerator::generateFastPath(MacroAssembler& jit) JITPutByIdGenerator::JITPutByIdGenerator( CodeBlock* codeBlock, CodeOrigin codeOrigin, const RegisterSet& usedRegisters, - JSValueRegs base, JSValueRegs value, GPRReg scratch, SpillRegistersMode spillMode, - ECMAMode ecmaMode, PutKind putKind) - : JITByIdGenerator(codeBlock, codeOrigin, usedRegisters, base, value, spillMode) + 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) |