+ CodeOrigin m_codeOrigin;
+};
+
+struct PropertyAccessRecord {
+ enum RegisterMode { RegistersFlushed, RegistersInUse };
+
+#if USE(JSVALUE64)
+ PropertyAccessRecord(
+ CodeOrigin codeOrigin,
+ MacroAssembler::DataLabelPtr structureImm,
+ MacroAssembler::PatchableJump structureCheck,
+ MacroAssembler::ConvertibleLoadLabel propertyStorageLoad,
+ MacroAssembler::DataLabelCompact loadOrStore,
+ SlowPathGenerator* slowPathGenerator,
+ MacroAssembler::Label done,
+ int8_t baseGPR,
+ int8_t valueGPR,
+ const RegisterSet& usedRegisters,
+ RegisterMode registerMode = RegistersInUse)
+#elif USE(JSVALUE32_64)
+ PropertyAccessRecord(
+ CodeOrigin codeOrigin,
+ MacroAssembler::DataLabelPtr structureImm,
+ MacroAssembler::PatchableJump structureCheck,
+ MacroAssembler::ConvertibleLoadLabel propertyStorageLoad,
+ MacroAssembler::DataLabelCompact tagLoadOrStore,
+ MacroAssembler::DataLabelCompact payloadLoadOrStore,
+ SlowPathGenerator* slowPathGenerator,
+ MacroAssembler::Label done,
+ int8_t baseGPR,
+ int8_t valueTagGPR,
+ int8_t valueGPR,
+ const RegisterSet& usedRegisters,
+ RegisterMode registerMode = RegistersInUse)
+#endif
+ : m_codeOrigin(codeOrigin)
+ , m_structureImm(structureImm)
+ , m_structureCheck(structureCheck)
+ , m_propertyStorageLoad(propertyStorageLoad)
+#if USE(JSVALUE64)
+ , m_loadOrStore(loadOrStore)
+#elif USE(JSVALUE32_64)
+ , m_tagLoadOrStore(tagLoadOrStore)
+ , m_payloadLoadOrStore(payloadLoadOrStore)
+#endif
+ , m_slowPathGenerator(slowPathGenerator)
+ , m_done(done)
+ , m_baseGPR(baseGPR)
+#if USE(JSVALUE32_64)
+ , m_valueTagGPR(valueTagGPR)
+#endif
+ , m_valueGPR(valueGPR)
+ , m_usedRegisters(usedRegisters)
+ , m_registerMode(registerMode)
+ {
+ }
+
+ CodeOrigin m_codeOrigin;
+ MacroAssembler::DataLabelPtr m_structureImm;
+ MacroAssembler::PatchableJump m_structureCheck;
+ MacroAssembler::ConvertibleLoadLabel m_propertyStorageLoad;
+#if USE(JSVALUE64)
+ MacroAssembler::DataLabelCompact m_loadOrStore;
+#elif USE(JSVALUE32_64)
+ MacroAssembler::DataLabelCompact m_tagLoadOrStore;
+ MacroAssembler::DataLabelCompact m_payloadLoadOrStore;
+#endif
+ SlowPathGenerator* m_slowPathGenerator;
+ MacroAssembler::Label m_done;
+ int8_t m_baseGPR;
+#if USE(JSVALUE32_64)
+ int8_t m_valueTagGPR;
+#endif
+ int8_t m_valueGPR;
+ RegisterSet m_usedRegisters;
+ RegisterMode m_registerMode;