diff options
Diffstat (limited to 'Source/JavaScriptCore/jit/JITInlineCacheGenerator.h')
-rw-r--r-- | Source/JavaScriptCore/jit/JITInlineCacheGenerator.h | 59 |
1 files changed, 27 insertions, 32 deletions
diff --git a/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h b/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h index 6ff0c09b5..469290db5 100644 --- a/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h +++ b/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,8 +23,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef JITInlineCacheGenerator_h -#define JITInlineCacheGenerator_h +#pragma once #if ENABLE(JIT) @@ -37,11 +36,16 @@ namespace JSC { class CodeBlock; +class StructureStubInfo; + +struct CallSiteIndex; + +enum class AccessType : int8_t; class JITInlineCacheGenerator { protected: JITInlineCacheGenerator() { } - JITInlineCacheGenerator(CodeBlock*, CodeOrigin); + JITInlineCacheGenerator(CodeBlock*, CodeOrigin, CallSiteIndex, AccessType); public: StructureStubInfo* stubInfo() const { return m_stubInfo; } @@ -56,38 +60,37 @@ protected: JITByIdGenerator() { } JITByIdGenerator( - CodeBlock*, CodeOrigin, const RegisterSet&, GPRReg callFrameRegister, - JSValueRegs base, JSValueRegs value, bool registersFlushed); + CodeBlock*, CodeOrigin, CallSiteIndex, AccessType, const RegisterSet&, JSValueRegs base, + JSValueRegs value); public: void reportSlowPathCall(MacroAssembler::Label slowPathBegin, MacroAssembler::Call call) { m_slowPathBegin = slowPathBegin; - m_call = call; + m_slowPathCall = call; } MacroAssembler::Label slowPathBegin() const { return m_slowPathBegin; } - MacroAssembler::Jump slowPathJump() const { return m_structureCheck.m_jump; } + MacroAssembler::Jump slowPathJump() const + { + ASSERT(m_slowPathJump.isSet()); + return m_slowPathJump; + } void finalize(LinkBuffer& fastPathLinkBuffer, LinkBuffer& slowPathLinkBuffer); void finalize(LinkBuffer&); protected: - void generateFastPathChecks(MacroAssembler&, GPRReg butterfly); + void generateFastCommon(MacroAssembler&, size_t size); JSValueRegs m_base; JSValueRegs m_value; - MacroAssembler::DataLabelPtr m_structureImm; - MacroAssembler::PatchableJump m_structureCheck; - MacroAssembler::ConvertibleLoadLabel m_propertyStorageLoad; - AssemblerLabel m_loadOrStore; -#if USE(JSVALUE32_64) - AssemblerLabel m_tagLoadOrStore; -#endif + MacroAssembler::Label m_start; MacroAssembler::Label m_done; MacroAssembler::Label m_slowPathBegin; - MacroAssembler::Call m_call; + MacroAssembler::Call m_slowPathCall; + MacroAssembler::Jump m_slowPathJump; }; class JITGetByIdGenerator : public JITByIdGenerator { @@ -95,16 +98,13 @@ public: JITGetByIdGenerator() { } JITGetByIdGenerator( - CodeBlock* codeBlock, CodeOrigin codeOrigin, const RegisterSet& usedRegisters, - GPRReg callFrameRegister, JSValueRegs base, JSValueRegs value, - bool registersFlushed) - : JITByIdGenerator( - codeBlock, codeOrigin, usedRegisters, callFrameRegister, base, value, - registersFlushed) - { - } + CodeBlock*, CodeOrigin, CallSiteIndex, const RegisterSet& usedRegisters, UniquedStringImpl* propertyName, + JSValueRegs base, JSValueRegs value, AccessType); void generateFastPath(MacroAssembler&); + +private: + bool m_isLengthAccess; }; class JITPutByIdGenerator : public JITByIdGenerator { @@ -112,16 +112,14 @@ public: JITPutByIdGenerator() { } JITPutByIdGenerator( - CodeBlock*, CodeOrigin, const RegisterSet& usedRegisters, GPRReg callFrameRegister, - JSValueRegs base, JSValueRegs value, GPRReg scratch, bool registersFlushed, - ECMAMode, PutKind); + CodeBlock*, CodeOrigin, CallSiteIndex, const RegisterSet& usedRegisters, JSValueRegs base, + JSValueRegs, GPRReg scratch, ECMAMode, PutKind); void generateFastPath(MacroAssembler&); V_JITOperation_ESsiJJI slowPathFunction(); private: - GPRReg m_scratch; ECMAMode m_ecmaMode; PutKind m_putKind; }; @@ -129,6 +127,3 @@ private: } // namespace JSC #endif // ENABLE(JIT) - -#endif // JITInlineCacheGenerator_h - |