Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(617)

Side by Side Diff: test/mjsunit/regress/regress-typedarray-length.js

Issue 1313493005: [accessors] second-chance typed array field lookup (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: last fixes Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/accessors.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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));
OLDNEW
« no previous file with comments | « src/accessors.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698