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 'use strict'; | 5 'use strict'; |
6 | 6 |
7 // This file relies on the fact that the following declaration has been made | 7 // This file relies on the fact that the following declaration has been made |
8 // in runtime.js: | 8 // in runtime.js: |
9 // var $Array = global.Array; | 9 // var $Array = global.Array; |
10 | 10 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
116 if ((end - i) > 0 && ObjectIsFrozen(array)) { | 116 if ((end - i) > 0 && ObjectIsFrozen(array)) { |
117 throw MakeTypeError("array_functions_on_frozen", | 117 throw MakeTypeError("array_functions_on_frozen", |
118 ["Array.prototype.fill"]); | 118 ["Array.prototype.fill"]); |
119 } | 119 } |
120 | 120 |
121 for (; i < end; i++) | 121 for (; i < end; i++) |
122 array[i] = value; | 122 array[i] = value; |
123 return array; | 123 return array; |
124 } | 124 } |
125 | 125 |
126 // ES6, draft 05-22-14, section 22.1.2.3 | |
127 function ArrayOf() { | |
128 var len = %_ArgumentsLength(); | |
129 var C = this; | |
130 if (%IsConstructor(C)) { | |
131 var A = new C(len); | |
132 } else { | |
133 var A = []; | |
134 } | |
135 for (var k = 0; k < len; k++) { | |
136 %AddProperty(A, k, %_Arguments(k), DONT_ENUM); | |
caitp (gmail)
2014/07/07 16:52:09
Should this not be enumerable? I don't see anythin
| |
137 } | |
138 A.length = len; | |
139 return A; | |
140 } | |
141 | |
126 // ------------------------------------------------------------------- | 142 // ------------------------------------------------------------------- |
127 | 143 |
128 function HarmonyArrayExtendArrayPrototype() { | 144 function HarmonyArrayExtendArrayPrototype() { |
129 %CheckIsBootstrapping(); | 145 %CheckIsBootstrapping(); |
130 | 146 |
147 // Set up non-enumerable functions on the Array object. | |
148 InstallFunctions($Array, DONT_ENUM, $Array( | |
149 "of", ArrayOf | |
150 )); | |
151 | |
131 // Set up the non-enumerable functions on the Array prototype object. | 152 // Set up the non-enumerable functions on the Array prototype object. |
132 InstallFunctions($Array.prototype, DONT_ENUM, $Array( | 153 InstallFunctions($Array.prototype, DONT_ENUM, $Array( |
133 "find", ArrayFind, | 154 "find", ArrayFind, |
134 "findIndex", ArrayFindIndex, | 155 "findIndex", ArrayFindIndex, |
135 "fill", ArrayFill | 156 "fill", ArrayFill |
136 )); | 157 )); |
137 } | 158 } |
138 | 159 |
139 HarmonyArrayExtendArrayPrototype(); | 160 HarmonyArrayExtendArrayPrototype(); |
OLD | NEW |