| 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 count--; | 76 count--; |
| 77 } | 77 } |
| 78 | 78 |
| 79 return array; | 79 return array; |
| 80 } | 80 } |
| 81 | 81 |
| 82 // ES6 draft 03-17-15, section 22.1.3.3 | 82 // ES6 draft 03-17-15, section 22.1.3.3 |
| 83 function ArrayCopyWithin(target, start, end) { | 83 function ArrayCopyWithin(target, start, end) { |
| 84 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.copyWithin"); | 84 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.copyWithin"); |
| 85 | 85 |
| 86 var array = TO_OBJECT_INLINE(this); | 86 var array = TO_OBJECT(this); |
| 87 var length = $toLength(array.length); | 87 var length = $toLength(array.length); |
| 88 | 88 |
| 89 return InnerArrayCopyWithin(target, start, end, array, length); | 89 return InnerArrayCopyWithin(target, start, end, array, length); |
| 90 } | 90 } |
| 91 | 91 |
| 92 function InnerArrayFind(predicate, thisArg, array, length) { | 92 function InnerArrayFind(predicate, thisArg, array, length) { |
| 93 if (!IS_SPEC_FUNCTION(predicate)) { | 93 if (!IS_SPEC_FUNCTION(predicate)) { |
| 94 throw MakeTypeError(kCalledNonCallable, predicate); | 94 throw MakeTypeError(kCalledNonCallable, predicate); |
| 95 } | 95 } |
| 96 | 96 |
| 97 var needs_wrapper = false; | 97 var needs_wrapper = false; |
| 98 if (IS_NULL(thisArg)) { | 98 if (IS_NULL(thisArg)) { |
| 99 if (%IsSloppyModeFunction(predicate)) thisArg = UNDEFINED; | 99 if (%IsSloppyModeFunction(predicate)) thisArg = UNDEFINED; |
| 100 } else if (!IS_UNDEFINED(thisArg)) { | 100 } else if (!IS_UNDEFINED(thisArg)) { |
| 101 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); | 101 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); |
| 102 } | 102 } |
| 103 | 103 |
| 104 for (var i = 0; i < length; i++) { | 104 for (var i = 0; i < length; i++) { |
| 105 var element = array[i]; | 105 var element = array[i]; |
| 106 var newThisArg = needs_wrapper ? $toObject(thisArg) : thisArg; | 106 var newThisArg = needs_wrapper ? TO_OBJECT(thisArg) : thisArg; |
| 107 if (%_CallFunction(newThisArg, element, i, array, predicate)) { | 107 if (%_CallFunction(newThisArg, element, i, array, predicate)) { |
| 108 return element; | 108 return element; |
| 109 } | 109 } |
| 110 } | 110 } |
| 111 | 111 |
| 112 return; | 112 return; |
| 113 } | 113 } |
| 114 | 114 |
| 115 // ES6 draft 07-15-13, section 15.4.3.23 | 115 // ES6 draft 07-15-13, section 15.4.3.23 |
| 116 function ArrayFind(predicate, thisArg) { | 116 function ArrayFind(predicate, thisArg) { |
| 117 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.find"); | 117 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.find"); |
| 118 | 118 |
| 119 var array = $toObject(this); | 119 var array = TO_OBJECT(this); |
| 120 var length = $toInteger(array.length); | 120 var length = $toInteger(array.length); |
| 121 | 121 |
| 122 return InnerArrayFind(predicate, thisArg, array, length); | 122 return InnerArrayFind(predicate, thisArg, array, length); |
| 123 } | 123 } |
| 124 | 124 |
| 125 function InnerArrayFindIndex(predicate, thisArg, array, length) { | 125 function InnerArrayFindIndex(predicate, thisArg, array, length) { |
| 126 if (!IS_SPEC_FUNCTION(predicate)) { | 126 if (!IS_SPEC_FUNCTION(predicate)) { |
| 127 throw MakeTypeError(kCalledNonCallable, predicate); | 127 throw MakeTypeError(kCalledNonCallable, predicate); |
| 128 } | 128 } |
| 129 | 129 |
| 130 var needs_wrapper = false; | 130 var needs_wrapper = false; |
| 131 if (IS_NULL(thisArg)) { | 131 if (IS_NULL(thisArg)) { |
| 132 if (%IsSloppyModeFunction(predicate)) thisArg = UNDEFINED; | 132 if (%IsSloppyModeFunction(predicate)) thisArg = UNDEFINED; |
| 133 } else if (!IS_UNDEFINED(thisArg)) { | 133 } else if (!IS_UNDEFINED(thisArg)) { |
| 134 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); | 134 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); |
| 135 } | 135 } |
| 136 | 136 |
| 137 for (var i = 0; i < length; i++) { | 137 for (var i = 0; i < length; i++) { |
| 138 var element = array[i]; | 138 var element = array[i]; |
| 139 var newThisArg = needs_wrapper ? $toObject(thisArg) : thisArg; | 139 var newThisArg = needs_wrapper ? TO_OBJECT(thisArg) : thisArg; |
| 140 if (%_CallFunction(newThisArg, element, i, array, predicate)) { | 140 if (%_CallFunction(newThisArg, element, i, array, predicate)) { |
| 141 return i; | 141 return i; |
| 142 } | 142 } |
| 143 } | 143 } |
| 144 | 144 |
| 145 return -1; | 145 return -1; |
| 146 } | 146 } |
| 147 | 147 |
| 148 // ES6 draft 07-15-13, section 15.4.3.24 | 148 // ES6 draft 07-15-13, section 15.4.3.24 |
| 149 function ArrayFindIndex(predicate, thisArg) { | 149 function ArrayFindIndex(predicate, thisArg) { |
| 150 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.findIndex"); | 150 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.findIndex"); |
| 151 | 151 |
| 152 var array = $toObject(this); | 152 var array = TO_OBJECT(this); |
| 153 var length = $toInteger(array.length); | 153 var length = $toInteger(array.length); |
| 154 | 154 |
| 155 return InnerArrayFindIndex(predicate, thisArg, array, length); | 155 return InnerArrayFindIndex(predicate, thisArg, array, length); |
| 156 } | 156 } |
| 157 | 157 |
| 158 // ES6, draft 04-05-14, section 22.1.3.6 | 158 // ES6, draft 04-05-14, section 22.1.3.6 |
| 159 function InnerArrayFill(value, start, end, array, length) { | 159 function InnerArrayFill(value, start, end, array, length) { |
| 160 var i = IS_UNDEFINED(start) ? 0 : TO_INTEGER(start); | 160 var i = IS_UNDEFINED(start) ? 0 : TO_INTEGER(start); |
| 161 var end = IS_UNDEFINED(end) ? length : TO_INTEGER(end); | 161 var end = IS_UNDEFINED(end) ? length : TO_INTEGER(end); |
| 162 | 162 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 180 | 180 |
| 181 for (; i < end; i++) | 181 for (; i < end; i++) |
| 182 array[i] = value; | 182 array[i] = value; |
| 183 return array; | 183 return array; |
| 184 } | 184 } |
| 185 | 185 |
| 186 // ES6, draft 04-05-14, section 22.1.3.6 | 186 // ES6, draft 04-05-14, section 22.1.3.6 |
| 187 function ArrayFill(value, start, end) { | 187 function ArrayFill(value, start, end) { |
| 188 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.fill"); | 188 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.fill"); |
| 189 | 189 |
| 190 var array = $toObject(this); | 190 var array = TO_OBJECT(this); |
| 191 var length = TO_UINT32(array.length); | 191 var length = TO_UINT32(array.length); |
| 192 | 192 |
| 193 return InnerArrayFill(value, start, end, array, length); | 193 return InnerArrayFill(value, start, end, array, length); |
| 194 } | 194 } |
| 195 | 195 |
| 196 function AddArrayElement(constructor, array, i, value) { | 196 function AddArrayElement(constructor, array, i, value) { |
| 197 if (constructor === GlobalArray) { | 197 if (constructor === GlobalArray) { |
| 198 %AddElement(array, i, value); | 198 %AddElement(array, i, value); |
| 199 } else { | 199 } else { |
| 200 ObjectDefineProperty(array, i, { | 200 ObjectDefineProperty(array, i, { |
| 201 value: value, writable: true, configurable: true, enumerable: true | 201 value: value, writable: true, configurable: true, enumerable: true |
| 202 }); | 202 }); |
| 203 } | 203 } |
| 204 } | 204 } |
| 205 | 205 |
| 206 // ES6, draft 10-14-14, section 22.1.2.1 | 206 // ES6, draft 10-14-14, section 22.1.2.1 |
| 207 function ArrayFrom(arrayLike, mapfn, receiver) { | 207 function ArrayFrom(arrayLike, mapfn, receiver) { |
| 208 var items = $toObject(arrayLike); | 208 var items = TO_OBJECT(arrayLike); |
| 209 var mapping = !IS_UNDEFINED(mapfn); | 209 var mapping = !IS_UNDEFINED(mapfn); |
| 210 | 210 |
| 211 if (mapping) { | 211 if (mapping) { |
| 212 if (!IS_SPEC_FUNCTION(mapfn)) { | 212 if (!IS_SPEC_FUNCTION(mapfn)) { |
| 213 throw MakeTypeError(kCalledNonCallable, mapfn); | 213 throw MakeTypeError(kCalledNonCallable, mapfn); |
| 214 } else if (%IsSloppyModeFunction(mapfn)) { | 214 } else if (%IsSloppyModeFunction(mapfn)) { |
| 215 if (IS_NULL(receiver)) { | 215 if (IS_NULL(receiver)) { |
| 216 receiver = UNDEFINED; | 216 receiver = UNDEFINED; |
| 217 } else if (!IS_UNDEFINED(receiver)) { | 217 } else if (!IS_UNDEFINED(receiver)) { |
| 218 receiver = TO_OBJECT_INLINE(receiver); | 218 receiver = TO_OBJECT(receiver); |
| 219 } | 219 } |
| 220 } | 220 } |
| 221 } | 221 } |
| 222 | 222 |
| 223 var iterable = GetMethod(items, symbolIterator); | 223 var iterable = GetMethod(items, symbolIterator); |
| 224 var k; | 224 var k; |
| 225 var result; | 225 var result; |
| 226 var mappedValue; | 226 var mappedValue; |
| 227 var nextValue; | 227 var nextValue; |
| 228 | 228 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 | 312 |
| 313 utils.Export(function(to) { | 313 utils.Export(function(to) { |
| 314 to.ArrayFrom = ArrayFrom; | 314 to.ArrayFrom = ArrayFrom; |
| 315 to.InnerArrayCopyWithin = InnerArrayCopyWithin; | 315 to.InnerArrayCopyWithin = InnerArrayCopyWithin; |
| 316 to.InnerArrayFill = InnerArrayFill; | 316 to.InnerArrayFill = InnerArrayFill; |
| 317 to.InnerArrayFind = InnerArrayFind; | 317 to.InnerArrayFind = InnerArrayFind; |
| 318 to.InnerArrayFindIndex = InnerArrayFindIndex; | 318 to.InnerArrayFindIndex = InnerArrayFindIndex; |
| 319 }); | 319 }); |
| 320 | 320 |
| 321 }) | 321 }) |
| OLD | NEW |