OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 var a = [1, 2, 3]; | 5 function newArrayWithGetter() { |
6 Object.defineProperty(a, '1', { | 6 var arr = [1, 2, 3]; |
7 get: function() { delete this[1]; return undefined; }, | 7 Object.defineProperty(arr, '1', { |
8 configurable: true | 8 get: function() { delete this[1]; return undefined; }, |
9 }); | 9 configurable: true |
| 10 }); |
| 11 return arr; |
| 12 } |
| 13 |
| 14 var a = newArrayWithGetter(); |
10 var s = a.slice(1); | 15 var s = a.slice(1); |
11 assertTrue('0' in s); | 16 assertTrue('0' in s); |
12 | 17 |
13 // Sparse case should hit the same code as above due to presence of the getter. | 18 // Sparse case should hit the same code as above due to presence of the getter. |
14 a = [1, 2, 3]; | 19 a = newArrayWithGetter(); |
15 a[0xffff] = 4; | 20 a[0xffff] = 4; |
16 Object.defineProperty(a, '1', { | |
17 get: function() { delete this[1]; return undefined; }, | |
18 configurable: true | |
19 }); | |
20 s = a.slice(1); | 21 s = a.slice(1); |
21 assertTrue('0' in s); | 22 assertTrue('0' in s); |
| 23 |
| 24 a = newArrayWithGetter(); |
| 25 a.shift(); |
| 26 assertTrue('0' in a); |
| 27 |
| 28 a = newArrayWithGetter(); |
| 29 a.unshift(0); |
| 30 assertTrue('2' in a); |
OLD | NEW |