| 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() { | 5 (function() { |
| 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 if (!IS_SPEC_FUNCTION(predicate)) { | 76 if (!IS_SPEC_FUNCTION(predicate)) { |
| 77 throw MakeTypeError(kCalledNonCallable, predicate); | 77 throw MakeTypeError(kCalledNonCallable, predicate); |
| 78 } | 78 } |
| 79 | 79 |
| 80 var thisArg; | 80 var thisArg; |
| 81 if (%_ArgumentsLength() > 1) { | 81 if (%_ArgumentsLength() > 1) { |
| 82 thisArg = %_Arguments(1); | 82 thisArg = %_Arguments(1); |
| 83 } | 83 } |
| 84 | 84 |
| 85 var needs_wrapper = false; | 85 var needs_wrapper = false; |
| 86 if (IS_NULL_OR_UNDEFINED(thisArg)) { | 86 if (IS_NULL(thisArg)) { |
| 87 thisArg = %GetDefaultReceiver(predicate) || thisArg; | 87 if (%IsSloppyModeFunction(predicate)) thisArg = UNDEFINED; |
| 88 } else { | 88 } else if (!IS_UNDEFINED(thisArg)) { |
| 89 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); | 89 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); |
| 90 } | 90 } |
| 91 | 91 |
| 92 for (var i = 0; i < length; i++) { | 92 for (var i = 0; i < length; i++) { |
| 93 if (i in array) { | 93 if (i in array) { |
| 94 var element = array[i]; | 94 var element = array[i]; |
| 95 var newThisArg = needs_wrapper ? ToObject(thisArg) : thisArg; | 95 var newThisArg = needs_wrapper ? ToObject(thisArg) : thisArg; |
| 96 if (%_CallFunction(newThisArg, element, i, array, predicate)) { | 96 if (%_CallFunction(newThisArg, element, i, array, predicate)) { |
| 97 return element; | 97 return element; |
| 98 } | 98 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 113 if (!IS_SPEC_FUNCTION(predicate)) { | 113 if (!IS_SPEC_FUNCTION(predicate)) { |
| 114 throw MakeTypeError(kCalledNonCallable, predicate); | 114 throw MakeTypeError(kCalledNonCallable, predicate); |
| 115 } | 115 } |
| 116 | 116 |
| 117 var thisArg; | 117 var thisArg; |
| 118 if (%_ArgumentsLength() > 1) { | 118 if (%_ArgumentsLength() > 1) { |
| 119 thisArg = %_Arguments(1); | 119 thisArg = %_Arguments(1); |
| 120 } | 120 } |
| 121 | 121 |
| 122 var needs_wrapper = false; | 122 var needs_wrapper = false; |
| 123 if (IS_NULL_OR_UNDEFINED(thisArg)) { | 123 if (IS_NULL(thisArg)) { |
| 124 thisArg = %GetDefaultReceiver(predicate) || thisArg; | 124 if (%IsSloppyModeFunction(predicate)) thisArg = UNDEFINED; |
| 125 } else { | 125 } else if (!IS_UNDEFINED(thisArg)) { |
| 126 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); | 126 needs_wrapper = SHOULD_CREATE_WRAPPER(predicate, thisArg); |
| 127 } | 127 } |
| 128 | 128 |
| 129 for (var i = 0; i < length; i++) { | 129 for (var i = 0; i < length; i++) { |
| 130 if (i in array) { | 130 if (i in array) { |
| 131 var element = array[i]; | 131 var element = array[i]; |
| 132 var newThisArg = needs_wrapper ? ToObject(thisArg) : thisArg; | 132 var newThisArg = needs_wrapper ? ToObject(thisArg) : thisArg; |
| 133 if (%_CallFunction(newThisArg, element, i, array, predicate)) { | 133 if (%_CallFunction(newThisArg, element, i, array, predicate)) { |
| 134 return i; | 134 return i; |
| 135 } | 135 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 } | 183 } |
| 184 | 184 |
| 185 // ES6, draft 10-14-14, section 22.1.2.1 | 185 // ES6, draft 10-14-14, section 22.1.2.1 |
| 186 function ArrayFrom(arrayLike, mapfn, receiver) { | 186 function ArrayFrom(arrayLike, mapfn, receiver) { |
| 187 var items = ToObject(arrayLike); | 187 var items = ToObject(arrayLike); |
| 188 var mapping = !IS_UNDEFINED(mapfn); | 188 var mapping = !IS_UNDEFINED(mapfn); |
| 189 | 189 |
| 190 if (mapping) { | 190 if (mapping) { |
| 191 if (!IS_SPEC_FUNCTION(mapfn)) { | 191 if (!IS_SPEC_FUNCTION(mapfn)) { |
| 192 throw MakeTypeError(kCalledNonCallable, mapfn); | 192 throw MakeTypeError(kCalledNonCallable, mapfn); |
| 193 } else if (IS_NULL_OR_UNDEFINED(receiver)) { | 193 } else if (%IsSloppyModeFunction(mapfn)) { |
| 194 receiver = %GetDefaultReceiver(mapfn) || receiver; | 194 if (IS_NULL(receiver)) { |
| 195 } else if (!IS_SPEC_OBJECT(receiver) && %IsSloppyModeFunction(mapfn)) { | 195 receiver = UNDEFINED; |
| 196 receiver = ToObject(receiver); | 196 } else if (!IS_UNDEFINED(receiver)) { |
| 197 receiver = TO_OBJECT_INLINE(receiver); |
| 198 } |
| 197 } | 199 } |
| 198 } | 200 } |
| 199 | 201 |
| 200 var iterable = GetMethod(items, symbolIterator); | 202 var iterable = GetMethod(items, symbolIterator); |
| 201 var k; | 203 var k; |
| 202 var result; | 204 var result; |
| 203 var mappedValue; | 205 var mappedValue; |
| 204 var nextValue; | 206 var nextValue; |
| 205 | 207 |
| 206 if (!IS_UNDEFINED(iterable)) { | 208 if (!IS_UNDEFINED(iterable)) { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 | 281 |
| 280 // Set up the non-enumerable functions on the Array prototype object. | 282 // Set up the non-enumerable functions on the Array prototype object. |
| 281 InstallFunctions(GlobalArray.prototype, DONT_ENUM, [ | 283 InstallFunctions(GlobalArray.prototype, DONT_ENUM, [ |
| 282 "copyWithin", ArrayCopyWithin, | 284 "copyWithin", ArrayCopyWithin, |
| 283 "find", ArrayFind, | 285 "find", ArrayFind, |
| 284 "findIndex", ArrayFindIndex, | 286 "findIndex", ArrayFindIndex, |
| 285 "fill", ArrayFill | 287 "fill", ArrayFill |
| 286 ]); | 288 ]); |
| 287 | 289 |
| 288 })(); | 290 })(); |
| OLD | NEW |