| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 (function(global, utils, extrasUtils) { | 5 (function(global, utils, extrasUtils) { |
| 6 | 6 |
| 7 "use strict"; | 7 "use strict"; |
| 8 | 8 |
| 9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
| 10 | 10 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 var MaxSimple; | 22 var MaxSimple; |
| 23 var MinSimple; | 23 var MinSimple; |
| 24 var ObjectDefineProperty; | 24 var ObjectDefineProperty; |
| 25 var ObjectHasOwnProperty; | 25 var ObjectHasOwnProperty; |
| 26 var ObjectIsFrozen; | 26 var ObjectIsFrozen; |
| 27 var ObjectIsSealed; | 27 var ObjectIsSealed; |
| 28 var ObjectToString = utils.ImportNow("object_to_string"); | 28 var ObjectToString = utils.ImportNow("object_to_string"); |
| 29 var ObserveBeginPerformSplice; | 29 var ObserveBeginPerformSplice; |
| 30 var ObserveEndPerformSplice; | 30 var ObserveEndPerformSplice; |
| 31 var ObserveEnqueueSpliceRecord; | 31 var ObserveEnqueueSpliceRecord; |
| 32 var SameValueZero; |
| 32 var iteratorSymbol = utils.ImportNow("iterator_symbol"); | 33 var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
| 33 var unscopablesSymbol = utils.ImportNow("unscopables_symbol"); | 34 var unscopablesSymbol = utils.ImportNow("unscopables_symbol"); |
| 34 | 35 |
| 35 utils.Import(function(from) { | 36 utils.Import(function(from) { |
| 36 AddIndexedProperty = from.AddIndexedProperty; | 37 AddIndexedProperty = from.AddIndexedProperty; |
| 37 GetIterator = from.GetIterator; | 38 GetIterator = from.GetIterator; |
| 38 GetMethod = from.GetMethod; | 39 GetMethod = from.GetMethod; |
| 39 MakeTypeError = from.MakeTypeError; | 40 MakeTypeError = from.MakeTypeError; |
| 40 MaxSimple = from.MaxSimple; | 41 MaxSimple = from.MaxSimple; |
| 41 MinSimple = from.MinSimple; | 42 MinSimple = from.MinSimple; |
| 42 ObjectDefineProperty = from.ObjectDefineProperty; | 43 ObjectDefineProperty = from.ObjectDefineProperty; |
| 43 ObjectHasOwnProperty = from.ObjectHasOwnProperty; | 44 ObjectHasOwnProperty = from.ObjectHasOwnProperty; |
| 44 ObjectIsFrozen = from.ObjectIsFrozen; | 45 ObjectIsFrozen = from.ObjectIsFrozen; |
| 45 ObjectIsSealed = from.ObjectIsSealed; | 46 ObjectIsSealed = from.ObjectIsSealed; |
| 46 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; | 47 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; |
| 47 ObserveEndPerformSplice = from.ObserveEndPerformSplice; | 48 ObserveEndPerformSplice = from.ObserveEndPerformSplice; |
| 48 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; | 49 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; |
| 50 SameValueZero = from.SameValueZero; |
| 49 }); | 51 }); |
| 50 | 52 |
| 51 utils.ImportFromExperimental(function(from) { | 53 utils.ImportFromExperimental(function(from) { |
| 52 FLAG_harmony_tolength = from.FLAG_harmony_tolength; | 54 FLAG_harmony_tolength = from.FLAG_harmony_tolength; |
| 53 }); | 55 }); |
| 54 | 56 |
| 55 // ------------------------------------------------------------------- | 57 // ------------------------------------------------------------------- |
| 56 | 58 |
| 57 // Global list of arrays visited during toString, toLocaleString and | 59 // Global list of arrays visited during toString, toLocaleString and |
| 58 // join invocations. | 60 // join invocations. |
| (...skipping 1628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1687 function ArrayFill(value, start, end) { | 1689 function ArrayFill(value, start, end) { |
| 1688 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.fill"); | 1690 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.fill"); |
| 1689 | 1691 |
| 1690 var array = TO_OBJECT(this); | 1692 var array = TO_OBJECT(this); |
| 1691 var length = TO_LENGTH_OR_UINT32(array.length); | 1693 var length = TO_LENGTH_OR_UINT32(array.length); |
| 1692 | 1694 |
| 1693 return InnerArrayFill(value, start, end, array, length); | 1695 return InnerArrayFill(value, start, end, array, length); |
| 1694 } | 1696 } |
| 1695 | 1697 |
| 1696 | 1698 |
| 1699 function InnerArrayIncludes(searchElement, fromIndex, array, length) { |
| 1700 if (length === 0) { |
| 1701 return false; |
| 1702 } |
| 1703 |
| 1704 var n = TO_INTEGER(fromIndex); |
| 1705 |
| 1706 var k; |
| 1707 if (n >= 0) { |
| 1708 k = n; |
| 1709 } else { |
| 1710 k = length + n; |
| 1711 if (k < 0) { |
| 1712 k = 0; |
| 1713 } |
| 1714 } |
| 1715 |
| 1716 while (k < length) { |
| 1717 var elementK = array[k]; |
| 1718 if (SameValueZero(searchElement, elementK)) { |
| 1719 return true; |
| 1720 } |
| 1721 |
| 1722 ++k; |
| 1723 } |
| 1724 |
| 1725 return false; |
| 1726 } |
| 1727 |
| 1728 |
| 1729 // ES2016 draft, section 22.1.3.11 |
| 1730 function ArrayIncludes(searchElement, fromIndex) { |
| 1731 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.includes"); |
| 1732 |
| 1733 var array = TO_OBJECT(this); |
| 1734 var length = TO_LENGTH(array.length); |
| 1735 |
| 1736 return InnerArrayIncludes(searchElement, fromIndex, array, length); |
| 1737 } |
| 1738 |
| 1739 |
| 1697 function AddArrayElement(constructor, array, i, value) { | 1740 function AddArrayElement(constructor, array, i, value) { |
| 1698 if (constructor === GlobalArray) { | 1741 if (constructor === GlobalArray) { |
| 1699 AddIndexedProperty(array, i, value); | 1742 AddIndexedProperty(array, i, value); |
| 1700 } else { | 1743 } else { |
| 1701 ObjectDefineProperty(array, i, { | 1744 ObjectDefineProperty(array, i, { |
| 1702 value: value, writable: true, configurable: true, enumerable: true | 1745 value: value, writable: true, configurable: true, enumerable: true |
| 1703 }); | 1746 }); |
| 1704 } | 1747 } |
| 1705 } | 1748 } |
| 1706 | 1749 |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1845 "some", getFunction("some", ArraySome, 1), | 1888 "some", getFunction("some", ArraySome, 1), |
| 1846 "every", getFunction("every", ArrayEvery, 1), | 1889 "every", getFunction("every", ArrayEvery, 1), |
| 1847 "map", getFunction("map", ArrayMap, 1), | 1890 "map", getFunction("map", ArrayMap, 1), |
| 1848 "indexOf", getFunction("indexOf", ArrayIndexOf, 1), | 1891 "indexOf", getFunction("indexOf", ArrayIndexOf, 1), |
| 1849 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1), | 1892 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1), |
| 1850 "reduce", getFunction("reduce", ArrayReduce, 1), | 1893 "reduce", getFunction("reduce", ArrayReduce, 1), |
| 1851 "reduceRight", getFunction("reduceRight", ArrayReduceRight, 1), | 1894 "reduceRight", getFunction("reduceRight", ArrayReduceRight, 1), |
| 1852 "copyWithin", getFunction("copyWithin", ArrayCopyWithin, 2), | 1895 "copyWithin", getFunction("copyWithin", ArrayCopyWithin, 2), |
| 1853 "find", getFunction("find", ArrayFind, 1), | 1896 "find", getFunction("find", ArrayFind, 1), |
| 1854 "findIndex", getFunction("findIndex", ArrayFindIndex, 1), | 1897 "findIndex", getFunction("findIndex", ArrayFindIndex, 1), |
| 1855 "fill", getFunction("fill", ArrayFill, 1) | 1898 "fill", getFunction("fill", ArrayFill, 1), |
| 1899 "includes", getFunction("includes", ArrayIncludes, 1), |
| 1856 ]); | 1900 ]); |
| 1857 | 1901 |
| 1858 %FinishArrayPrototypeSetup(GlobalArray.prototype); | 1902 %FinishArrayPrototypeSetup(GlobalArray.prototype); |
| 1859 | 1903 |
| 1860 // The internal Array prototype doesn't need to be fancy, since it's never | 1904 // The internal Array prototype doesn't need to be fancy, since it's never |
| 1861 // exposed to user code. | 1905 // exposed to user code. |
| 1862 // Adding only the functions that are actually used. | 1906 // Adding only the functions that are actually used. |
| 1863 utils.SetUpLockedPrototype(InternalArray, GlobalArray(), [ | 1907 utils.SetUpLockedPrototype(InternalArray, GlobalArray(), [ |
| 1864 "indexOf", getFunction("indexOf", ArrayIndexOf), | 1908 "indexOf", getFunction("indexOf", ArrayIndexOf), |
| 1865 "join", getFunction("join", ArrayJoin), | 1909 "join", getFunction("join", ArrayJoin), |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1897 to.ArrayJoin = ArrayJoin; | 1941 to.ArrayJoin = ArrayJoin; |
| 1898 to.ArrayPush = ArrayPush; | 1942 to.ArrayPush = ArrayPush; |
| 1899 to.ArrayToString = ArrayToString; | 1943 to.ArrayToString = ArrayToString; |
| 1900 to.InnerArrayCopyWithin = InnerArrayCopyWithin; | 1944 to.InnerArrayCopyWithin = InnerArrayCopyWithin; |
| 1901 to.InnerArrayEvery = InnerArrayEvery; | 1945 to.InnerArrayEvery = InnerArrayEvery; |
| 1902 to.InnerArrayFill = InnerArrayFill; | 1946 to.InnerArrayFill = InnerArrayFill; |
| 1903 to.InnerArrayFilter = InnerArrayFilter; | 1947 to.InnerArrayFilter = InnerArrayFilter; |
| 1904 to.InnerArrayFind = InnerArrayFind; | 1948 to.InnerArrayFind = InnerArrayFind; |
| 1905 to.InnerArrayFindIndex = InnerArrayFindIndex; | 1949 to.InnerArrayFindIndex = InnerArrayFindIndex; |
| 1906 to.InnerArrayForEach = InnerArrayForEach; | 1950 to.InnerArrayForEach = InnerArrayForEach; |
| 1951 to.InnerArrayIncludes = InnerArrayIncludes; |
| 1907 to.InnerArrayIndexOf = InnerArrayIndexOf; | 1952 to.InnerArrayIndexOf = InnerArrayIndexOf; |
| 1908 to.InnerArrayJoin = InnerArrayJoin; | 1953 to.InnerArrayJoin = InnerArrayJoin; |
| 1909 to.InnerArrayLastIndexOf = InnerArrayLastIndexOf; | 1954 to.InnerArrayLastIndexOf = InnerArrayLastIndexOf; |
| 1910 to.InnerArrayMap = InnerArrayMap; | 1955 to.InnerArrayMap = InnerArrayMap; |
| 1911 to.InnerArrayReduce = InnerArrayReduce; | 1956 to.InnerArrayReduce = InnerArrayReduce; |
| 1912 to.InnerArrayReduceRight = InnerArrayReduceRight; | 1957 to.InnerArrayReduceRight = InnerArrayReduceRight; |
| 1913 to.InnerArraySome = InnerArraySome; | 1958 to.InnerArraySome = InnerArraySome; |
| 1914 to.InnerArraySort = InnerArraySort; | 1959 to.InnerArraySort = InnerArraySort; |
| 1915 to.InnerArrayToLocaleString = InnerArrayToLocaleString; | 1960 to.InnerArrayToLocaleString = InnerArrayToLocaleString; |
| 1916 to.PackedArrayReverse = PackedArrayReverse; | 1961 to.PackedArrayReverse = PackedArrayReverse; |
| 1917 }); | 1962 }); |
| 1918 | 1963 |
| 1919 %InstallToContext([ | 1964 %InstallToContext([ |
| 1920 "array_pop", ArrayPop, | 1965 "array_pop", ArrayPop, |
| 1921 "array_push", ArrayPush, | 1966 "array_push", ArrayPush, |
| 1922 "array_shift", ArrayShift, | 1967 "array_shift", ArrayShift, |
| 1923 "array_splice", ArraySplice, | 1968 "array_splice", ArraySplice, |
| 1924 "array_slice", ArraySlice, | 1969 "array_slice", ArraySlice, |
| 1925 "array_unshift", ArrayUnshift, | 1970 "array_unshift", ArrayUnshift, |
| 1926 ]); | 1971 ]); |
| 1927 | 1972 |
| 1928 }); | 1973 }); |
| OLD | NEW |