|
1 // |jit-test| slow; |
|
2 |
|
3 load(libdir + "parallelarray-helpers.js"); |
|
4 |
|
5 function mergeSorted(l1, l2) { |
|
6 var result = []; |
|
7 var i1 = 0, i2 = 0, j = 0; |
|
8 while (i1 < l1.length && i2 < l2.length) { |
|
9 if (l1[i1] < l2[i2]) |
|
10 result[j++] = l1[i1++]; |
|
11 else |
|
12 result[j++] = l2[i2++]; |
|
13 } |
|
14 while (i1 < l1.length) { |
|
15 result[j++] = l1[i1++]; |
|
16 } |
|
17 while (i2 < l2.length) { |
|
18 result[j++] = l2[i2++]; |
|
19 } |
|
20 return result; |
|
21 } |
|
22 |
|
23 function test() { |
|
24 var elts = []; |
|
25 var ints = range(1, 5), c = 0; |
|
26 |
|
27 // Using 2048 as the length of elts induces bailouts due to GC. |
|
28 // This exposed various bugs. |
|
29 for (var i = 0; i < 2048; i++) |
|
30 elts[i] = ints; |
|
31 |
|
32 var scanned1 = seq_scan(elts, mergeSorted); |
|
33 var scanned2 = elts.scanPar(mergeSorted); |
|
34 assertStructuralEq(scanned1, scanned2); |
|
35 } |
|
36 |
|
37 if (getBuildConfiguration().parallelJS) |
|
38 test(); |