Changeset 228454 in webkit
- Timestamp:
- Feb 13, 2018 9:07:07 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r228422 r228454 1 2018-02-13 Saam Barati <sbarati@apple.com> 2 3 putDirectIndexSlowOrBeyondVectorLength needs to convert to dictionary indexing mode always if attributes are present 4 https://bugs.webkit.org/show_bug.cgi?id=182755 5 <rdar://problem/37080864> 6 7 Reviewed by Keith Miller. 8 9 * stress/always-enter-dictionary-indexing-mode-with-getter.js: Added. 10 (test1.o.get 10005): 11 (test1): 12 (test2.o.get 1000): 13 (test2): 14 1 15 2018-02-13 Caitlin Potter <caitp@igalia.com> 2 16 -
trunk/Source/JavaScriptCore/ChangeLog
r228438 r228454 1 2018-02-13 Saam Barati <sbarati@apple.com> 2 3 putDirectIndexSlowOrBeyondVectorLength needs to convert to dictionary indexing mode always if attributes are present 4 https://bugs.webkit.org/show_bug.cgi?id=182755 5 <rdar://problem/37080864> 6 7 Reviewed by Keith Miller. 8 9 putDirectIndexSlowOrBeyondVectorLength with non-zero attributes only converted 10 the object in question to a dictionary indexing mode when the index is less than 11 the vector length. This makes no sense. If we're defining a getter, setter, or read 12 only property, we must always enter the dictionary indexing mode irrespective 13 of the index in relation to the vector length. 14 15 * runtime/JSObject.cpp: 16 (JSC::JSObject::putDirectIndexSlowOrBeyondVectorLength): 17 1 18 2018-02-13 Saam Barati <sbarati@apple.com> 2 19 -
trunk/Source/JavaScriptCore/runtime/JSObject.cpp
r228306 r228454 2923 2923 2924 2924 case ALL_INT32_INDEXING_TYPES: { 2925 if (attributes) { 2926 if (i < m_butterfly->vectorLength()) 2927 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2928 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, convertInt32ToArrayStorage(vm)); 2929 } 2925 ASSERT(!indexingShouldBeSparse()); 2926 if (attributes) 2927 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2930 2928 if (!value.isInt32()) { 2931 2929 convertInt32ForValue(vm, value); … … 2937 2935 2938 2936 case ALL_DOUBLE_INDEXING_TYPES: { 2939 if (attributes) { 2940 if (i < m_butterfly->vectorLength()) 2941 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2942 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, convertDoubleToArrayStorage(vm)); 2943 } 2937 ASSERT(!indexingShouldBeSparse()); 2938 if (attributes) 2939 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2944 2940 if (!value.isNumber()) { 2945 2941 convertDoubleToContiguous(vm); … … 2956 2952 2957 2953 case ALL_CONTIGUOUS_INDEXING_TYPES: { 2958 if (attributes) { 2959 if (i < m_butterfly->vectorLength()) 2960 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2961 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, convertContiguousToArrayStorage(vm)); 2962 } 2954 ASSERT(!indexingShouldBeSparse()); 2955 if (attributes) 2956 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2963 2957 putByIndexBeyondVectorLengthWithoutAttributes<ContiguousShape>(exec, i, value); 2964 2958 return true; … … 2966 2960 2967 2961 case ALL_ARRAY_STORAGE_INDEXING_TYPES: 2968 if (attributes) { 2969 if (i < m_butterfly->vectorLength()) 2970 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2971 } 2962 if (attributes) 2963 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, ensureArrayStorageExistsAndEnterDictionaryIndexingMode(vm)); 2972 2964 return putDirectIndexBeyondVectorLengthWithArrayStorage(exec, i, value, attributes, mode, arrayStorage()); 2973 2965
Note: See TracChangeset
for help on using the changeset viewer.