+ } patch;
+
+ union {
+ struct {
+ // It would be unwise to put anything here, as it will surely be overwritten.
+ } unset;
+ struct {
+ WriteBarrierBase<Structure> baseObjectStructure;
+ } getByIdSelf;
+ struct {
+ WriteBarrierBase<Structure> baseObjectStructure;
+ WriteBarrierBase<Structure> prototypeStructure;
+ bool isDirect;
+ } getByIdProto;
+ struct {
+ WriteBarrierBase<Structure> baseObjectStructure;
+ WriteBarrierBase<StructureChain> chain;
+ unsigned count : 31;
+ bool isDirect : 1;
+ } getByIdChain;
+ struct {
+ PolymorphicGetByIdList* list;
+ } getByIdList;
+ struct {
+ WriteBarrierBase<Structure> previousStructure;
+ WriteBarrierBase<Structure> structure;
+ WriteBarrierBase<StructureChain> chain;
+ } putByIdTransition;
+ struct {
+ WriteBarrierBase<Structure> baseObjectStructure;
+ } putByIdReplace;
+ struct {
+ PolymorphicPutByIdList* list;
+ } putByIdList;
+ struct {
+ PolymorphicAccessStructureList* structureList;
+ int listSize;
+ } inList;
+ } u;
+
+ RefPtr<JITStubRoutine> stubRoutine;
+ CodeLocationCall callReturnLocation;
+ RefPtr<WatchpointsOnStructureStubInfo> watchpoints;
+};
+
+inline CodeOrigin getStructureStubInfoCodeOrigin(StructureStubInfo& structureStubInfo)
+{
+ return structureStubInfo.codeOrigin;
+}
+
+typedef HashMap<CodeOrigin, StructureStubInfo*, CodeOriginApproximateHash> StubInfoMap;
+
+#else
+
+typedef HashMap<int, void*> StubInfoMap;
+
+#endif // ENABLE(JIT)
+
+} // namespace JSC