Changeset 49030 in webkit for trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
- Timestamp:
- Oct 2, 2009, 11:06:49 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
r49005 r49030 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 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); 313 branch32(Equal, regT1, Imm32(JSValue::EmptyValueTag)).linkTo(callGetByValJITStub, this); 314 319 315 emitStore(dst, regT1, regT0); 320 316 } … … 334 330 335 331 Jump inFastVector = branch32(Below, regT2, Address(regT0, OBJECT_OFFSETOF(JSArray, m_fastAccessCutoff))); 336 332 337 333 // Check if the access is within the vector. 338 334 addSlowCase(branch32(AboveOrEqual, regT2, Address(regT3, OBJECT_OFFSETOF(ArrayStorage, m_vectorLength)))); … … 340 336 // 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. 341 337 // 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. 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); 338 addSlowCase(branch32(Equal, BaseIndex(regT3, regT2, TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + 4), Imm32(JSValue::EmptyValueTag))); 345 339 346 340 inFastVector.link(this);
Note:
See TracChangeset
for help on using the changeset viewer.