OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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) { | 5 (function(global, utils) { |
6 | 6 |
7 'use strict'; | 7 'use strict'; |
8 | 8 |
9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
10 | 10 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 } | 78 } |
79 | 79 |
80 return array; | 80 return array; |
81 } | 81 } |
82 | 82 |
83 // ES6 draft 03-17-15, section 22.1.3.3 | 83 // ES6 draft 03-17-15, section 22.1.3.3 |
84 function ArrayCopyWithin(target, start, end) { | 84 function ArrayCopyWithin(target, start, end) { |
85 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.copyWithin"); | 85 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.copyWithin"); |
86 | 86 |
87 var array = TO_OBJECT(this); | 87 var array = TO_OBJECT(this); |
88 var length = $toLength(array.length); | 88 var length = TO_LENGTH(array.length); |
89 | 89 |
90 return InnerArrayCopyWithin(target, start, end, array, length); | 90 return InnerArrayCopyWithin(target, start, end, array, length); |
91 } | 91 } |
92 | 92 |
93 function InnerArrayFind(predicate, thisArg, array, length) { | 93 function InnerArrayFind(predicate, thisArg, array, length) { |
94 if (!IS_CALLABLE(predicate)) { | 94 if (!IS_CALLABLE(predicate)) { |
95 throw MakeTypeError(kCalledNonCallable, predicate); | 95 throw MakeTypeError(kCalledNonCallable, predicate); |
96 } | 96 } |
97 | 97 |
98 for (var i = 0; i < length; i++) { | 98 for (var i = 0; i < length; i++) { |
99 var element = array[i]; | 99 var element = array[i]; |
100 if (%_Call(predicate, thisArg, element, i, array)) { | 100 if (%_Call(predicate, thisArg, element, i, array)) { |
101 return element; | 101 return element; |
102 } | 102 } |
103 } | 103 } |
104 | 104 |
105 return; | 105 return; |
106 } | 106 } |
107 | 107 |
108 // ES6 draft 07-15-13, section 15.4.3.23 | 108 // ES6 draft 07-15-13, section 15.4.3.23 |
109 function ArrayFind(predicate, thisArg) { | 109 function ArrayFind(predicate, thisArg) { |
110 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.find"); | 110 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.find"); |
111 | 111 |
112 var array = TO_OBJECT(this); | 112 var array = TO_OBJECT(this); |
113 var length = $toInteger(array.length); | 113 var length = TO_INTEGER(array.length); |
114 | 114 |
115 return InnerArrayFind(predicate, thisArg, array, length); | 115 return InnerArrayFind(predicate, thisArg, array, length); |
116 } | 116 } |
117 | 117 |
118 function InnerArrayFindIndex(predicate, thisArg, array, length) { | 118 function InnerArrayFindIndex(predicate, thisArg, array, length) { |
119 if (!IS_CALLABLE(predicate)) { | 119 if (!IS_CALLABLE(predicate)) { |
120 throw MakeTypeError(kCalledNonCallable, predicate); | 120 throw MakeTypeError(kCalledNonCallable, predicate); |
121 } | 121 } |
122 | 122 |
123 for (var i = 0; i < length; i++) { | 123 for (var i = 0; i < length; i++) { |
124 var element = array[i]; | 124 var element = array[i]; |
125 if (%_Call(predicate, thisArg, element, i, array)) { | 125 if (%_Call(predicate, thisArg, element, i, array)) { |
126 return i; | 126 return i; |
127 } | 127 } |
128 } | 128 } |
129 | 129 |
130 return -1; | 130 return -1; |
131 } | 131 } |
132 | 132 |
133 // ES6 draft 07-15-13, section 15.4.3.24 | 133 // ES6 draft 07-15-13, section 15.4.3.24 |
134 function ArrayFindIndex(predicate, thisArg) { | 134 function ArrayFindIndex(predicate, thisArg) { |
135 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.findIndex"); | 135 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.findIndex"); |
136 | 136 |
137 var array = TO_OBJECT(this); | 137 var array = TO_OBJECT(this); |
138 var length = $toInteger(array.length); | 138 var length = TO_INTEGER(array.length); |
139 | 139 |
140 return InnerArrayFindIndex(predicate, thisArg, array, length); | 140 return InnerArrayFindIndex(predicate, thisArg, array, length); |
141 } | 141 } |
142 | 142 |
143 // ES6, draft 04-05-14, section 22.1.3.6 | 143 // ES6, draft 04-05-14, section 22.1.3.6 |
144 function InnerArrayFill(value, start, end, array, length) { | 144 function InnerArrayFill(value, start, end, array, length) { |
145 var i = IS_UNDEFINED(start) ? 0 : TO_INTEGER(start); | 145 var i = IS_UNDEFINED(start) ? 0 : TO_INTEGER(start); |
146 var end = IS_UNDEFINED(end) ? length : TO_INTEGER(end); | 146 var end = IS_UNDEFINED(end) ? length : TO_INTEGER(end); |
147 | 147 |
148 if (i < 0) { | 148 if (i < 0) { |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 nextValue = next.value; | 226 nextValue = next.value; |
227 if (mapping) { | 227 if (mapping) { |
228 mappedValue = %_Call(mapfn, receiver, nextValue, k); | 228 mappedValue = %_Call(mapfn, receiver, nextValue, k); |
229 } else { | 229 } else { |
230 mappedValue = nextValue; | 230 mappedValue = nextValue; |
231 } | 231 } |
232 AddArrayElement(this, result, k, mappedValue); | 232 AddArrayElement(this, result, k, mappedValue); |
233 k++; | 233 k++; |
234 } | 234 } |
235 } else { | 235 } else { |
236 var len = $toLength(items.length); | 236 var len = TO_LENGTH(items.length); |
237 result = %IsConstructor(this) ? new this(len) : new GlobalArray(len); | 237 result = %IsConstructor(this) ? new this(len) : new GlobalArray(len); |
238 | 238 |
239 for (k = 0; k < len; ++k) { | 239 for (k = 0; k < len; ++k) { |
240 nextValue = items[k]; | 240 nextValue = items[k]; |
241 if (mapping) { | 241 if (mapping) { |
242 mappedValue = %_Call(mapfn, receiver, nextValue, k); | 242 mappedValue = %_Call(mapfn, receiver, nextValue, k); |
243 } else { | 243 } else { |
244 mappedValue = nextValue; | 244 mappedValue = nextValue; |
245 } | 245 } |
246 AddArrayElement(this, result, k, mappedValue); | 246 AddArrayElement(this, result, k, mappedValue); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 | 291 |
292 utils.Export(function(to) { | 292 utils.Export(function(to) { |
293 to.ArrayFrom = ArrayFrom; | 293 to.ArrayFrom = ArrayFrom; |
294 to.InnerArrayCopyWithin = InnerArrayCopyWithin; | 294 to.InnerArrayCopyWithin = InnerArrayCopyWithin; |
295 to.InnerArrayFill = InnerArrayFill; | 295 to.InnerArrayFill = InnerArrayFill; |
296 to.InnerArrayFind = InnerArrayFind; | 296 to.InnerArrayFind = InnerArrayFind; |
297 to.InnerArrayFindIndex = InnerArrayFindIndex; | 297 to.InnerArrayFindIndex = InnerArrayFindIndex; |
298 }); | 298 }); |
299 | 299 |
300 }) | 300 }) |
OLD | NEW |