| /* |
| * Any copyright is dedicated to the Public Domain. |
| * http://creativecommons.org/licenses/publicdomain/ |
| */ |
| |
| if (!this.hasOwnProperty("TypedObject")) |
| quit(); |
| |
| // Test a single function (`bar`) being used with arrays that are all |
| // of known length, but not the same length. |
| |
| setJitCompilerOption("ion.warmup.trigger", 30); |
| |
| var N0 = 50; |
| var N1 = 100; |
| var N2 = 150; |
| var T = TypedObject; |
| var Array0 = T.uint32.array(N0); |
| var Array1 = T.uint32.array(N1); |
| var Array2 = T.uint32.array(N2); |
| |
| function bar(array, i, v) { |
| assertEq(array[i], v); |
| } |
| |
| function foo() { |
| var array0 = new Array0(); |
| var array1 = new Array1(); |
| var array2 = new Array2(); |
| |
| for (var i = 0; i < N0; i++) |
| array0[i] = i + 0; |
| |
| for (var i = 0; i < N1; i++) |
| array1[i] = i + 1; |
| |
| for (var i = 0; i < N2; i++) |
| array2[i] = i + 2; |
| |
| // get it primed up.. |
| for (var i = 0; i < N0; i++) { |
| bar(array0, i, i); |
| bar(array1, i, i + 1); |
| bar(array2, i, i + 2); |
| } |
| |
| // ...do some OOB accesses... |
| for (var i = N0; i < N1; i++) { |
| bar(array0, i, undefined); |
| bar(array1, i, i + 1); |
| bar(array2, i, i + 2); |
| } |
| |
| // ...and some more. |
| for (var i = N1; i < N2; i++) { |
| bar(array0, i, undefined); |
| bar(array1, i, undefined); |
| bar(array2, i, i + 2); |
| } |
| } |
| |
| foo(); |