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 (function() { |
| 75 "use strict"; |
| 76 |
| 77 class MyTypedArray extends Int32Array { |
| 78 constructor(length) { |
| 79 super(length); |
| 80 } |
| 81 } |
| 82 |
| 83 a = new MyTypedArray(1024); |
| 84 |
| 85 get = function(a) { |
| 86 return a.length; |
| 87 } |
| 88 |
| 89 assertEquals(1024, get(a)); |
| 90 assertEquals(1024, get(a)); |
| 91 assertEquals(1024, get(a)); |
| 92 %OptimizeFunctionOnNextCall(get); |
| 93 assertEquals(1024, get(a)); |
| 94 })(); |
| 95 |
| 96 (function() { |
| 97 "use strict"; |
| 98 var a = new Uint8Array(4); |
| 99 Object.defineProperty(a, "length", {get: function() { return "blah"; }}); |
| 100 get = function(a) { |
| 101 return a.length; |
| 102 } |
| 103 |
| 104 assertEquals("blah", get(a)); |
| 105 assertEquals("blah", get(a)); |
| 106 assertEquals("blah", get(a)); |
| 107 %OptimizeFunctionOnNextCall(get); |
| 108 assertEquals("blah", get(a)); |
| 109 })(); |
| 110 |
74 // Ensure we cannot delete length, byteOffset, byteLength. | 111 // Ensure we cannot delete length, byteOffset, byteLength. |
75 assertTrue(Int32Array.prototype.hasOwnProperty("length")); | 112 assertTrue(Int32Array.prototype.hasOwnProperty("length")); |
76 assertTrue(Int32Array.prototype.hasOwnProperty("byteOffset")); | 113 assertTrue(Int32Array.prototype.hasOwnProperty("byteOffset")); |
77 assertTrue(Int32Array.prototype.hasOwnProperty("byteLength")); | 114 assertTrue(Int32Array.prototype.hasOwnProperty("byteLength")); |
78 assertFalse(delete Int32Array.prototype.length); | 115 assertFalse(delete Int32Array.prototype.length); |
79 assertFalse(delete Int32Array.prototype.byteOffset); | 116 assertFalse(delete Int32Array.prototype.byteOffset); |
80 assertFalse(delete Int32Array.prototype.byteLength); | 117 assertFalse(delete Int32Array.prototype.byteLength); |
81 | 118 |
82 a = new Int32Array(100); | 119 a = new Int32Array(100); |
83 | 120 |
(...skipping 19 matching lines...) Expand all Loading... |
103 | 140 |
104 get = function(a) { | 141 get = function(a) { |
105 return a.byteOffset; | 142 return a.byteOffset; |
106 } | 143 } |
107 | 144 |
108 assertEquals(0, get(a)); | 145 assertEquals(0, get(a)); |
109 assertEquals(0, get(a)); | 146 assertEquals(0, get(a)); |
110 assertEquals(0, get(a)); | 147 assertEquals(0, get(a)); |
111 %OptimizeFunctionOnNextCall(get); | 148 %OptimizeFunctionOnNextCall(get); |
112 assertEquals(0, get(a)); | 149 assertEquals(0, get(a)); |
OLD | NEW |