Changeset 259264 in webkit for trunk/Source/JavaScriptCore/dfg/DFGArrayMode.cpp
- Timestamp:
- Mar 30, 2020, 6:46:55 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGArrayMode.cpp
r259175 r259264 512 512 case Array::SlowPutArrayStorage: 513 513 switch (arrayClass()) { 514 case Array::OriginalArray: { 514 case Array::OriginalArray: 515 case Array::OriginalCopyOnWriteArray: { 515 516 CRASH(); 516 517 return false; … … 531 532 return true; 532 533 } 533 534 default: { 534 535 // Array::OriginalNonArray can be shown when the value is a TypedArray with original structure. 536 // But here, we already filtered TypedArrays. So, just handle it like a NonArray. 537 case Array::NonArray: 538 case Array::OriginalNonArray: { 539 if (arrayModesAlreadyChecked(value.m_arrayModes, asArrayModesIgnoringTypedArrays(NonArrayWithArrayStorage) | asArrayModesIgnoringTypedArrays(NonArrayWithSlowPutArrayStorage))) 540 return true; 541 if (value.m_structure.isTop()) 542 return false; 543 for (unsigned i = value.m_structure.size(); i--;) { 544 RegisteredStructure structure = value.m_structure[i]; 545 if (!hasAnyArrayStorage(structure->indexingType())) 546 return false; 547 if (structure->indexingType() & IsArray) 548 return false; 549 } 550 return true; 551 } 552 553 case Array::PossiblyArray: { 535 554 if (arrayModesAlreadyChecked(value.m_arrayModes, asArrayModesIgnoringTypedArrays(NonArrayWithArrayStorage) | asArrayModesIgnoringTypedArrays(ArrayWithArrayStorage) | asArrayModesIgnoringTypedArrays(NonArrayWithSlowPutArrayStorage) | asArrayModesIgnoringTypedArrays(ArrayWithSlowPutArrayStorage))) 536 555 return true; … … 543 562 } 544 563 return true; 545 } } 564 } 565 } 546 566 547 567 case Array::DirectArguments:
Note:
See TracChangeset
for help on using the changeset viewer.