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

Side by Side Diff: test/mjsunit/external-array.js

Issue 14580012: Update mjsunit tests to be complaint with ES6 implementation of typed arrays (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 var a = new Int32Array(2); 42 var a = new Int32Array(2);
43 for (var i = 0; i < 5; i++) { 43 for (var i = 0; i < 5; i++) {
44 f(a); 44 f(a);
45 } 45 }
46 %OptimizeFunctionOnNextCall(f); 46 %OptimizeFunctionOnNextCall(f);
47 f(a); 47 f(a);
48 48
49 assertEquals(0, a[0]); 49 assertEquals(0, a[0]);
50 assertEquals(0, a[1]); 50 assertEquals(0, a[1]);
51 51
52 // No-parameter constructor should fail right now.
53 function abfunc1() {
54 return new ArrayBuffer();
55 }
56 assertThrows(abfunc1);
57
58 // Test derivation from an ArrayBuffer 52 // Test derivation from an ArrayBuffer
59 var ab = new ArrayBuffer(12); 53 var ab = new ArrayBuffer(12);
60 assertInstance(ab, ArrayBuffer); 54 assertInstance(ab, ArrayBuffer);
61 var derived_uint8 = new Uint8Array(ab); 55 var derived_uint8 = new Uint8Array(ab);
62 assertInstance(derived_uint8, Uint8Array); 56 assertInstance(derived_uint8, Uint8Array);
63 assertSame(ab, derived_uint8.buffer); 57 assertSame(ab, derived_uint8.buffer);
64 assertEquals(12, derived_uint8.length); 58 assertEquals(12, derived_uint8.length);
65 assertEquals(12, derived_uint8.byteLength); 59 assertEquals(12, derived_uint8.byteLength);
66 assertEquals(0, derived_uint8.byteOffset); 60 assertEquals(0, derived_uint8.byteOffset);
67 assertEquals(1, derived_uint8.BYTES_PER_ELEMENT); 61 assertEquals(1, derived_uint8.BYTES_PER_ELEMENT);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 assertEquals(a.byteLength, a.buffer.byteLength); 148 assertEquals(a.byteLength, a.buffer.byteLength);
155 assertEquals(a.length * a.BYTES_PER_ELEMENT, a.buffer.byteLength); 149 assertEquals(a.length * a.BYTES_PER_ELEMENT, a.buffer.byteLength);
156 150
157 // Test that an implicitly created buffer is a valid buffer. 151 // Test that an implicitly created buffer is a valid buffer.
158 a = new Float64Array(7); 152 a = new Float64Array(7);
159 assertSame(a.buffer, (new Uint16Array(a.buffer)).buffer); 153 assertSame(a.buffer, (new Uint16Array(a.buffer)).buffer);
160 assertSame(a.buffer, (new Float32Array(a.buffer,4)).buffer); 154 assertSame(a.buffer, (new Float32Array(a.buffer,4)).buffer);
161 assertSame(a.buffer, (new Int8Array(a.buffer,3,51)).buffer); 155 assertSame(a.buffer, (new Int8Array(a.buffer,3,51)).buffer);
162 assertInstance(a.buffer, ArrayBuffer); 156 assertInstance(a.buffer, ArrayBuffer);
163 157
164 // Test the correct behavior of the |BYTES_PER_ELEMENT| property (which is 158 // Test the correct behavior of the |BYTES_PER_ELEMENT| property
165 // "constant", but not read-only).
166 a = new Int32Array(2); 159 a = new Int32Array(2);
167 assertEquals(4, a.BYTES_PER_ELEMENT); 160 assertEquals(4, a.BYTES_PER_ELEMENT);
168 a.BYTES_PER_ELEMENT = 42;
169 assertEquals(42, a.BYTES_PER_ELEMENT);
170 a = new Uint8Array(2); 161 a = new Uint8Array(2);
171 assertEquals(1, a.BYTES_PER_ELEMENT); 162 assertEquals(1, a.BYTES_PER_ELEMENT);
172 a = new Int16Array(2); 163 a = new Int16Array(2);
173 assertEquals(2, a.BYTES_PER_ELEMENT); 164 assertEquals(2, a.BYTES_PER_ELEMENT);
174 165
175 // Test Float64Arrays. 166 // Test Float64Arrays.
176 function get(a, index) { 167 function get(a, index) {
177 return a[index]; 168 return a[index];
178 } 169 }
179 function set(a, index, value) { 170 function set(a, index, value) {
(...skipping 15 matching lines...) Expand all
195 assertEquals(3.5, array[1]); 186 assertEquals(3.5, array[1]);
196 } 187 }
197 %OptimizeFunctionOnNextCall(get); 188 %OptimizeFunctionOnNextCall(get);
198 assertEquals(2.5, get(array, 0)); 189 assertEquals(2.5, get(array, 0));
199 assertEquals(3.5, get(array, 1)); 190 assertEquals(3.5, get(array, 1));
200 } 191 }
201 192
202 // Test non-number parameters. 193 // Test non-number parameters.
203 var array_with_length_from_non_number = new Int32Array("2"); 194 var array_with_length_from_non_number = new Int32Array("2");
204 assertEquals(2, array_with_length_from_non_number.length); 195 assertEquals(2, array_with_length_from_non_number.length);
205 array_with_length_from_non_number = new Int32Array(undefined);
206 assertEquals(0, array_with_length_from_non_number.length);
207 var foo = { valueOf: function() { return 3; } };
208 array_with_length_from_non_number = new Int32Array(foo);
209 assertEquals(3, array_with_length_from_non_number.length);
210 foo = { toString: function() { return "4"; } };
211 array_with_length_from_non_number = new Int32Array(foo);
212 assertEquals(4, array_with_length_from_non_number.length);
213
214 196
215 // Test loads and stores. 197 // Test loads and stores.
216 types = [Array, Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, 198 types = [Array, Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array,
217 Uint32Array, Uint8ClampedArray, Float32Array, Float64Array]; 199 Uint32Array, Uint8ClampedArray, Float32Array, Float64Array];
218 200
219 test_result_nan = [NaN, 0, 0, 0, 0, 0, 0, 0, NaN, NaN]; 201 test_result_nan = [NaN, 0, 0, 0, 0, 0, 0, 0, NaN, NaN];
220 test_result_low_int = [-1, -1, 255, -1, 65535, -1, 0xFFFFFFFF, 0, -1, -1]; 202 test_result_low_int = [-1, -1, 255, -1, 65535, -1, 0xFFFFFFFF, 0, -1, -1];
221 test_result_low_double = [-1.25, -1, 255, -1, 65535, -1, 0xFFFFFFFF, 0, -1.25, - 1.25]; 203 test_result_low_double = [-1.25, -1, 255, -1, 65535, -1, 0xFFFFFFFF, 0, -1.25, - 1.25];
222 test_result_middle = [253.75, -3, 253, 253, 253, 253, 253, 254, 253.75, 253.75]; 204 test_result_middle = [253.75, -3, 253, 253, 253, 253, 253, 254, 253.75, 253.75];
223 test_result_high_int = [256, 0, 0, 256, 256, 256, 256, 255, 256, 256]; 205 test_result_high_int = [256, 0, 0, 256, 256, 256, 256, 255, 256, 256];
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 run_test(test_store_middle_tagged, a, test_result_middle[t]); 334 run_test(test_store_middle_tagged, a, test_result_middle[t]);
353 run_test(test_store_high_double, a, test_result_high_double[t]); 335 run_test(test_store_high_double, a, test_result_high_double[t]);
354 run_test(test_store_high_tagged, a, test_result_high_double[t]); 336 run_test(test_store_high_tagged, a, test_result_high_double[t]);
355 337
356 // Test the correct behavior of the |length| property (which is read-only). 338 // Test the correct behavior of the |length| property (which is read-only).
357 if (t != 0) { 339 if (t != 0) {
358 assertEquals(kElementCount, a.length); 340 assertEquals(kElementCount, a.length);
359 a.length = 2; 341 a.length = 2;
360 assertEquals(kElementCount, a.length); 342 assertEquals(kElementCount, a.length);
361 assertTrue(delete a.length); 343 assertTrue(delete a.length);
362 a.length = 2;
363 assertEquals(2, a.length);
364 344
365 // Make sure bounds checks are handled correctly for external arrays. 345 // Make sure bounds checks are handled correctly for external arrays.
366 run_bounds_test(a); 346 run_bounds_test(a);
367 run_bounds_test(a); 347 run_bounds_test(a);
368 run_bounds_test(a); 348 run_bounds_test(a);
369 %OptimizeFunctionOnNextCall(run_bounds_test); 349 %OptimizeFunctionOnNextCall(run_bounds_test);
370 run_bounds_test(a); 350 run_bounds_test(a);
371 %DeoptimizeFunction(run_bounds_test); 351 %DeoptimizeFunction(run_bounds_test);
372 gc(); // Makes V8 forget about type information for test_func. 352 gc(); // Makes V8 forget about type information for test_func.
373 353
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 assertEquals(0, a.length); 425 assertEquals(0, a.length);
446 a[0] = 1; 426 a[0] = 1;
447 assertEquals(undefined, a[0]); 427 assertEquals(undefined, a[0]);
448 a = new Uint16Array(0); 428 a = new Uint16Array(0);
449 assertInstance(a, Uint16Array); 429 assertInstance(a, Uint16Array);
450 assertEquals(0, a.byteLength); 430 assertEquals(0, a.byteLength);
451 assertEquals(0, a.length); 431 assertEquals(0, a.length);
452 a[0] = 1; 432 a[0] = 1;
453 assertEquals(undefined, a[0]); 433 assertEquals(undefined, a[0]);
454 434
455
456 // Check construction from arrays. 435 // Check construction from arrays.
457 a = new Uint32Array([]); 436 a = new Uint32Array([]);
458 assertInstance(a, Uint32Array); 437 assertInstance(a, Uint32Array);
459 assertEquals(0, a.length); 438 assertEquals(0, a.length);
460 assertEquals(0, a.byteLength); 439 assertEquals(0, a.byteLength);
461 assertEquals(0, a.buffer.byteLength); 440 assertEquals(0, a.buffer.byteLength);
462 assertEquals(4, a.BYTES_PER_ELEMENT); 441 assertEquals(4, a.BYTES_PER_ELEMENT);
463 assertInstance(a.buffer, ArrayBuffer); 442 assertInstance(a.buffer, ArrayBuffer);
464 a = new Uint16Array([1,2,3]); 443 a = new Uint16Array([1,2,3]);
465 assertInstance(a, Uint16Array); 444 assertInstance(a, Uint16Array);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 assertSame(a.buffer, aa.buffer); 511 assertSame(a.buffer, aa.buffer);
533 aa = a.subarray(0,-8); 512 aa = a.subarray(0,-8);
534 assertInstance(aa, Uint16Array); 513 assertInstance(aa, Uint16Array);
535 assertEquals(0, aa.length); 514 assertEquals(0, aa.length);
536 assertEquals(0, aa.byteLength); 515 assertEquals(0, aa.byteLength);
537 assertEquals(2, aa.BYTES_PER_ELEMENT); 516 assertEquals(2, aa.BYTES_PER_ELEMENT);
538 assertSame(a.buffer, aa.buffer); 517 assertSame(a.buffer, aa.buffer);
539 518
540 assertThrows(function(){ a.subarray.call({}, 0) }); 519 assertThrows(function(){ a.subarray.call({}, 0) });
541 assertThrows(function(){ a.subarray.call([], 0) }); 520 assertThrows(function(){ a.subarray.call([], 0) });
542 assertThrows(function(){ a.subarray.call(a) });
543
544 521
545 // Call constructors directly as functions, and through .call and .apply 522 // Call constructors directly as functions, and through .call and .apply
546 523
547 b = ArrayBuffer(100) 524 b = ArrayBuffer(100)
548 a = Int8Array(b, 5, 77) 525 a = Int8Array(b, 5, 77)
549 assertInstance(b, ArrayBuffer) 526 assertInstance(b, ArrayBuffer)
550 assertInstance(a, Int8Array) 527 assertInstance(a, Int8Array)
551 assertSame(b, a.buffer) 528 assertSame(b, a.buffer)
552 assertEquals(5, a.byteOffset) 529 assertEquals(5, a.byteOffset)
553 assertEquals(77, a.byteLength) 530 assertEquals(77, a.byteLength)
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 684
708 built_in_array = new Array(1.5, 2, 3, 4, 5, 6); 685 built_in_array = new Array(1.5, 2, 3, 4, 5, 6);
709 assertEquals(1.5, goo(built_in_array, 0)); 686 assertEquals(1.5, goo(built_in_array, 0));
710 assertEquals(1.5, goo(built_in_array, 0)); 687 assertEquals(1.5, goo(built_in_array, 0));
711 %OptimizeFunctionOnNextCall(goo); 688 %OptimizeFunctionOnNextCall(goo);
712 %OptimizeFunctionOnNextCall(boo); 689 %OptimizeFunctionOnNextCall(boo);
713 boo(built_in_array, 0, 2.5); 690 boo(built_in_array, 0, 2.5);
714 assertEquals(2.5, goo(built_in_array, 0)); 691 assertEquals(2.5, goo(built_in_array, 0));
715 %ClearFunctionTypeFeedback(goo); 692 %ClearFunctionTypeFeedback(goo);
716 %ClearFunctionTypeFeedback(boo); 693 %ClearFunctionTypeFeedback(boo);
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/external-array-no-sse2.js » ('j') | test/mjsunit/external-array-no-sse2.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698