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: --allow-natives-syntax | 5 // Flags: --allow-natives-syntax |
6 | 6 |
7 var a = new Int32Array(100); | 7 var a = new Int32Array(100); |
8 a.__proto__ = null; | 8 a.__proto__ = null; |
9 | 9 |
10 function get(a) { | 10 function get(a) { |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 return a.length; | 64 return a.length; |
65 } | 65 } |
66 | 66 |
67 assertEquals(undefined, get(a)); | 67 assertEquals(undefined, get(a)); |
68 assertEquals(undefined, get(a)); | 68 assertEquals(undefined, get(a)); |
69 assertEquals(undefined, get(a)); | 69 assertEquals(undefined, get(a)); |
70 %OptimizeFunctionOnNextCall(get); | 70 %OptimizeFunctionOnNextCall(get); |
71 assertEquals(undefined, get(a)); | 71 assertEquals(undefined, get(a)); |
72 })(); | 72 })(); |
73 | 73 |
| 74 // Ensure we cannot delete length, byteOffset, byteLength. |
| 75 assertTrue(Int32Array.prototype.hasOwnProperty("length")); |
| 76 assertTrue(Int32Array.prototype.hasOwnProperty("byteOffset")); |
| 77 assertTrue(Int32Array.prototype.hasOwnProperty("byteLength")); |
| 78 assertFalse(delete Int32Array.prototype.length); |
| 79 assertFalse(delete Int32Array.prototype.byteOffset); |
| 80 assertFalse(delete Int32Array.prototype.byteLength); |
| 81 |
74 a = new Int32Array(100); | 82 a = new Int32Array(100); |
75 | 83 |
76 get = function(a) { | 84 get = function(a) { |
77 return a.length; | 85 return a.length; |
78 } | 86 } |
79 | 87 |
80 assertEquals(100, get(a)); | 88 assertEquals(100, get(a)); |
81 assertEquals(100, get(a)); | 89 assertEquals(100, get(a)); |
82 assertEquals(100, get(a)); | 90 assertEquals(100, get(a)); |
83 %OptimizeFunctionOnNextCall(get); | 91 %OptimizeFunctionOnNextCall(get); |
(...skipping 11 matching lines...) Expand all Loading... |
95 | 103 |
96 get = function(a) { | 104 get = function(a) { |
97 return a.byteOffset; | 105 return a.byteOffset; |
98 } | 106 } |
99 | 107 |
100 assertEquals(0, get(a)); | 108 assertEquals(0, get(a)); |
101 assertEquals(0, get(a)); | 109 assertEquals(0, get(a)); |
102 assertEquals(0, get(a)); | 110 assertEquals(0, get(a)); |
103 %OptimizeFunctionOnNextCall(get); | 111 %OptimizeFunctionOnNextCall(get); |
104 assertEquals(0, get(a)); | 112 assertEquals(0, get(a)); |
105 | |
106 // Ensure we can delete length, byteOffset, byteLength. | |
107 for (var name of ['length', 'byteOffset', 'byteLength', 'buffer']) { | |
108 var property = Object.getOwnPropertyDescriptor( | |
109 Int32Array.prototype.__proto__, name); | |
110 assertEquals("object", typeof property); | |
111 assertEquals(true, property.configurable); | |
112 assertEquals(false, property.enumerable); | |
113 assertEquals("function", typeof property.get); | |
114 } | |
OLD | NEW |