Changeset 49005 in webkit for trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
- Timestamp:
- Oct 1, 2009, 4:49:28 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
r49004 r49005 311 311 load32(BaseIndex(regT0, regT2, TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + 4), regT1); // tag 312 312 load32(BaseIndex(regT0, regT2, TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0])), regT0); // payload 313 branch32(Equal, regT1, Imm32(JSValue::EmptyValueTag)).linkTo(callGetByValJITStub, this); 314 313 314 // FIXME: Maybe we can optimize this comparison to JSValue(). 315 Jump skip = branch32(NotEqual, regT0, Imm32(0)); 316 branch32(Equal, regT1, Imm32(JSValue::CellTag), callGetByValJITStub); 317 318 skip.link(this); 315 319 emitStore(dst, regT1, regT0); 316 320 } … … 330 334 331 335 Jump inFastVector = branch32(Below, regT2, Address(regT0, OBJECT_OFFSETOF(JSArray, m_fastAccessCutoff))); 332 336 333 337 // Check if the access is within the vector. 334 338 addSlowCase(branch32(AboveOrEqual, regT2, Address(regT3, OBJECT_OFFSETOF(ArrayStorage, m_vectorLength)))); … … 336 340 // This is a write to the slow part of the vector; first, we have to check if this would be the first write to this location. 337 341 // FIXME: should be able to handle initial write to array; increment the the number of items in the array, and potentially update fast access cutoff. 338 addSlowCase(branch32(Equal, BaseIndex(regT3, regT2, TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + 4), Imm32(JSValue::EmptyValueTag))); 342 Jump skip = branch32(NotEqual, BaseIndex(regT3, regT2, TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + 4), Imm32(JSValue::CellTag)); 343 addSlowCase(branch32(Equal, BaseIndex(regT3, regT2, TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0])), Imm32(0))); 344 skip.link(this); 339 345 340 346 inFastVector.link(this);
Note:
See TracChangeset
for help on using the changeset viewer.