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

Side by Side Diff: test/mjsunit/harmony/atomics.js

Issue 1227913006: Don't use length property when bounds checking atomics functions (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: modify regression test Created 5 years, 5 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/harmony-atomics.js ('k') | test/mjsunit/regress/regress-crbug-501809.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 // Flags: --harmony-atomics --harmony-sharedarraybuffer 5 // Flags: --harmony-atomics --harmony-sharedarraybuffer
6 // 6 //
7 7
8 function toRangeWrapped(value) { 8 function toRangeWrapped(value) {
9 var range = this.max - this.min + 1; 9 var range = this.max - this.min + 1;
10 while (value < this.min) { 10 while (value < this.min) {
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 assertEquals(undefined, Atomics.compareExchange(si32a, i, 0, 0), name); 116 assertEquals(undefined, Atomics.compareExchange(si32a, i, 0, 0), name);
117 assertEquals(undefined, Atomics.load(si32a, i), name); 117 assertEquals(undefined, Atomics.load(si32a, i), name);
118 assertEquals(undefined, Atomics.store(si32a, i, 0), name); 118 assertEquals(undefined, Atomics.store(si32a, i, 0), name);
119 assertEquals(undefined, Atomics.add(si32a, i, 0), name); 119 assertEquals(undefined, Atomics.add(si32a, i, 0), name);
120 assertEquals(undefined, Atomics.sub(si32a, i, 0), name); 120 assertEquals(undefined, Atomics.sub(si32a, i, 0), name);
121 assertEquals(undefined, Atomics.and(si32a, i, 0), name); 121 assertEquals(undefined, Atomics.and(si32a, i, 0), name);
122 assertEquals(undefined, Atomics.or(si32a, i, 0), name); 122 assertEquals(undefined, Atomics.or(si32a, i, 0), name);
123 assertEquals(undefined, Atomics.xor(si32a, i, 0), name); 123 assertEquals(undefined, Atomics.xor(si32a, i, 0), name);
124 assertEquals(undefined, Atomics.exchange(si32a, i, 0), name); 124 assertEquals(undefined, Atomics.exchange(si32a, i, 0), name);
125 }); 125 });
126
127 // Monkey-patch length and make sure these functions still return undefined.
128 Object.defineProperty(si32a, 'length', {get: function() { return 1000; }});
129 [2, 100].forEach(function(i) {
130 var name = String(i);
131 assertEquals(undefined, Atomics.compareExchange(si32a, i, 0, 0), name);
132 assertEquals(undefined, Atomics.load(si32a, i), name);
133 assertEquals(undefined, Atomics.store(si32a, i, 0), name);
134 assertEquals(undefined, Atomics.add(si32a, i, 0), name);
135 assertEquals(undefined, Atomics.sub(si32a, i, 0), name);
136 assertEquals(undefined, Atomics.and(si32a, i, 0), name);
137 assertEquals(undefined, Atomics.or(si32a, i, 0), name);
138 assertEquals(undefined, Atomics.xor(si32a, i, 0), name);
139 assertEquals(undefined, Atomics.exchange(si32a, i, 0), name);
140 });
126 })(); 141 })();
127 142
128 (function TestGoodIndex() { 143 (function TestGoodIndex() {
129 var sab = new SharedArrayBuffer(64); 144 var sab = new SharedArrayBuffer(64);
130 var si32a = new Int32Array(sab); 145 var si32a = new Int32Array(sab);
131 146
132 var valueOf = {valueOf: function(){ return 3;}}; 147 var valueOf = {valueOf: function(){ return 3;}};
133 var toString = {toString: function(){ return '3';}}; 148 var toString = {toString: function(){ return '3';}};
134 149
135 [3, 3.5, '3', '3.5', valueOf, toString].forEach(function(i) { 150 [3, 3.5, '3', '3.5', valueOf, toString].forEach(function(i) {
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 // Exchange 450 // Exchange
436 sta[0] = val = 0x12; 451 sta[0] = val = 0x12;
437 operand = 0x22 + offset; 452 operand = 0x22 + offset;
438 valWrapped = t.toRange(operand); 453 valWrapped = t.toRange(operand);
439 assertEquals(val, Atomics.exchange(sta, 0, operand), name); 454 assertEquals(val, Atomics.exchange(sta, 0, operand), name);
440 assertEquals(valWrapped, sta[0], name); 455 assertEquals(valWrapped, sta[0], name);
441 } 456 }
442 457
443 }); 458 });
444 })(); 459 })();
OLDNEW
« no previous file with comments | « src/harmony-atomics.js ('k') | test/mjsunit/regress/regress-crbug-501809.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698