#include "CodeOrigin.h"
#include "JITInlineCacheGenerator.h"
#include "MacroAssembler.h"
-#include <wtf/text/StringImpl.h>
+#include <wtf/text/UniquedStringImpl.h>
namespace JSC { namespace FTL {
public:
InlineCacheDescriptor() { }
- InlineCacheDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, StringImpl* uid)
+ InlineCacheDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, UniquedStringImpl* uid)
: m_stackmapID(stackmapID)
, m_codeOrigin(codeOrigin)
, m_uid(uid)
unsigned stackmapID() const { return m_stackmapID; }
CodeOrigin codeOrigin() const { return m_codeOrigin; }
- StringImpl* uid() const { return m_uid; }
+ UniquedStringImpl* uid() const { return m_uid; }
private:
unsigned m_stackmapID;
CodeOrigin m_codeOrigin;
- StringImpl* m_uid;
+ UniquedStringImpl* m_uid;
public:
Vector<MacroAssembler::Jump> m_slowPathDone;
public:
GetByIdDescriptor() { }
- GetByIdDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, StringImpl* uid)
+ GetByIdDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, UniquedStringImpl* uid)
: InlineCacheDescriptor(stackmapID, codeOrigin, uid)
{
}
PutByIdDescriptor() { }
PutByIdDescriptor(
- unsigned stackmapID, CodeOrigin codeOrigin, StringImpl* uid,
+ unsigned stackmapID, CodeOrigin codeOrigin, UniquedStringImpl* uid,
ECMAMode ecmaMode, PutKind putKind)
: InlineCacheDescriptor(stackmapID, codeOrigin, uid)
, m_ecmaMode(ecmaMode)
PutKind m_putKind;
};
+struct CheckInGenerator {
+ StructureStubInfo* m_stub;
+ MacroAssembler::Call m_slowCall;
+ MacroAssembler::Label m_beginLabel;
+
+ CheckInGenerator(StructureStubInfo* stub, MacroAssembler::Call slowCall, MacroAssembler::Label beginLabel)
+ : m_stub(stub)
+ , m_slowCall(slowCall)
+ , m_beginLabel(beginLabel)
+ {
+ }
+};
+
+class CheckInDescriptor : public InlineCacheDescriptor {
+public:
+ CheckInDescriptor() { }
+
+ CheckInDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const UniquedStringImpl* uid)
+ : InlineCacheDescriptor(stackmapID, codeOrigin, nullptr)
+ , m_uid(uid)
+ {
+ }
+
+
+ const UniquedStringImpl* m_uid;
+ Vector<CheckInGenerator> m_generators;
+};
+
+
} } // namespace JSC::FTL
#endif // ENABLE(FTL_JIT)