summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/jit/JITInlineCacheGenerator.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/jit/JITInlineCacheGenerator.h')
-rw-r--r--Source/JavaScriptCore/jit/JITInlineCacheGenerator.h59
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
-