Changeset 47186 in webkit for trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
- Timestamp:
- Aug 12, 2009, 10:58:36 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
r46879 r47186 1123 1123 m_methodCallCompilationInfo.append(MethodCallCompilationInfo(m_propertyAccessInstructionIndex)); 1124 1124 MethodCallCompilationInfo& info = m_methodCallCompilationInfo.last(); 1125 1125 1126 Jump notCell = emitJumpIfNotJSCell(regT0); 1127 1128 BEGIN_UNINTERRUPTED_SEQUENCE(sequenceMethodCheck); 1129 1126 1130 Jump structureCheck = branchPtrWithPatch(NotEqual, Address(regT0, OBJECT_OFFSETOF(JSCell, m_structure)), info.structureToCompare, ImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure))); 1127 1131 DataLabelPtr protoStructureToCompare, protoObj = moveWithPatch(ImmPtr(0), regT1); … … 1130 1134 // This will be relinked to load the function without doing a load. 1131 1135 DataLabelPtr putFunction = moveWithPatch(ImmPtr(0), regT0); 1136 1137 END_UNINTERRUPTED_SEQUENCE(sequenceMethodCheck); 1138 1132 1139 Jump match = jump(); 1133 1140 … … 1192 1199 1193 1200 emitJumpSlowCaseIfNotJSCell(regT0, baseVReg); 1201 1202 BEGIN_UNINTERRUPTED_SEQUENCE(sequenceGetByIdHotPath); 1194 1203 1195 1204 Label hotPathBegin(this); … … 1211 1220 1212 1221 Label putResult(this); 1222 1223 END_UNINTERRUPTED_SEQUENCE(sequenceGetByIdHotPath); 1224 1213 1225 ASSERT(differenceBetween(hotPathBegin, putResult) == patchOffsetGetByIdPutResult); 1214 1226 } … … 1233 1245 linkSlowCaseIfNotJSCell(iter, baseVReg); 1234 1246 linkSlowCase(iter); 1247 1248 BEGIN_UNINTERRUPTED_SEQUENCE(sequenceGetByIdSlowCase); 1235 1249 1236 1250 #ifndef NDEBUG … … 1242 1256 Call call = stubCall.call(resultVReg); 1243 1257 1258 END_UNINTERRUPTED_SEQUENCE(sequenceGetByIdSlowCase); 1259 1244 1260 ASSERT(differenceBetween(coldPathBegin, call) == patchOffsetGetByIdSlowCaseCall); 1245 1261 … … 1264 1280 // Jump to a slow case if either the base object is an immediate, or if the Structure does not match. 1265 1281 emitJumpSlowCaseIfNotJSCell(regT0, baseVReg); 1282 1283 BEGIN_UNINTERRUPTED_SEQUENCE(sequencePutById); 1266 1284 1267 1285 Label hotPathBegin(this); … … 1280 1298 1281 1299 DataLabel32 displacementLabel = storePtrWithAddressOffsetPatch(regT1, Address(regT0, patchGetByIdDefaultOffset)); 1300 1301 END_UNINTERRUPTED_SEQUENCE(sequencePutById); 1302 1282 1303 ASSERT(differenceBetween(hotPathBegin, displacementLabel) == patchOffsetPutByIdPropertyMapOffset); 1283 1304 }
Note:
See TracChangeset
for help on using the changeset viewer.