OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 // Flags: --harmony-tolength | 5 // Flags: --harmony-tolength |
6 | 6 |
7 // Test array functions do not cause infinite loops when length is negative, | 7 // Test array functions do not cause infinite loops when length is negative, |
8 // max_value, etc. | 8 // max_value, etc. |
9 | 9 |
10 // ArrayToString | 10 // ArrayToString |
(...skipping 15 matching lines...) Expand all Loading... |
26 assertEquals(0, result.length); | 26 assertEquals(0, result.length); |
27 | 27 |
28 // ArrayPush | 28 // ArrayPush |
29 | 29 |
30 var o = { length: Number.MIN_VALUE }; | 30 var o = { length: Number.MIN_VALUE }; |
31 Array.prototype.push.call(o, 1); | 31 Array.prototype.push.call(o, 1); |
32 assertEquals(1, o.length); | 32 assertEquals(1, o.length); |
33 assertEquals(1, o[0]); | 33 assertEquals(1, o[0]); |
34 | 34 |
35 var o = { length: Number.MAX_VALUE }; | 35 var o = { length: Number.MAX_VALUE }; |
36 assertThrows(() => Array.prototype.push.call(o, 1), TypeError); | 36 Array.prototype.push.call(o, 1); |
| 37 assertEquals(o.length, Number.MAX_SAFE_INTEGER + 1); |
| 38 assertEquals(1, o[Number.MAX_SAFE_INTEGER]); |
| 39 |
| 40 Array.prototype.push.call(o, 2); |
| 41 assertEquals(o.length, Number.MAX_SAFE_INTEGER + 1); |
| 42 assertEquals(2, o[Number.MAX_SAFE_INTEGER]); |
37 | 43 |
38 // ArrayPop | 44 // ArrayPop |
39 | 45 |
40 var o = { length: 0 }; | 46 var o = { length: 0 }; |
41 Array.prototype.pop.call(o); | 47 Array.prototype.pop.call(o); |
42 assertEquals(0, o.length); | 48 assertEquals(0, o.length); |
43 | 49 |
44 var o = { length: Number.MIN_VALUE }; | 50 var o = { length: Number.MIN_VALUE }; |
45 Array.prototype.pop.call(o); | 51 Array.prototype.pop.call(o); |
46 assertEquals(0, o.length); | 52 assertEquals(0, o.length); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 | 199 |
194 var o = { length: Number.MIN_VALUE }; | 200 var o = { length: Number.MIN_VALUE }; |
195 Array.prototype.reduceRight.call(o, func, 0); | 201 Array.prototype.reduceRight.call(o, func, 0); |
196 assertEquals(Number.MIN_VALUE, o.length); | 202 assertEquals(Number.MIN_VALUE, o.length); |
197 | 203 |
198 // ArrayFill | 204 // ArrayFill |
199 | 205 |
200 var o = { length: Number.MIN_VALUE }; | 206 var o = { length: Number.MIN_VALUE }; |
201 Array.prototype.fill(o, 0); | 207 Array.prototype.fill(o, 0); |
202 assertEquals(Number.MIN_VALUE, o.length); | 208 assertEquals(Number.MIN_VALUE, o.length); |
OLD | NEW |