js/src/jit-test/tests/parallel/closure-nested-branch.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:00c780b10b21
1 load(libdir + "parallelarray-helpers.js");
2
3 function testClosureCreationAndInvocation() {
4 var a = range(0, 64);
5 function makeaddv(v) {
6 var u = 1;
7 var t = 2;
8 var s = 3;
9 var r = 4;
10 var q = 5;
11 var p = 6;
12 var o = 7;
13 var n = 8;
14 var m = 9;
15 var l = 10;
16 var k = 11;
17 var j = 12;
18 var i = 13;
19 var h = 14;
20 var g = 15;
21 var f = 16;
22 var e = 17;
23 var d = 18;
24 var c = 19;
25 var b = 20;
26 var a = 21;
27 return ((v % 2 == 0)
28 ? function (x) { return a; }
29 : function (x) {
30 switch (x) {
31 case 0: return a; case 1: return b;
32 case 2: return c; case 3: return d;
33 case 4: return e; case 5: return f;
34 case 6: return g; case 7: return h;
35 case 8: return i; case 9: return j;
36 case 10: return k; case 11: return l;
37 case 12: return m; case 13: return n;
38 case 14: return o; case 15: return p;
39 case 16: return q; case 17: return r;
40 case 18: return s; case 19: return t;
41 case 20: return u;
42 }
43 });
44 }
45 var m;
46 for (var i in MODES) m = a.mapPar(makeaddv, MODES[i]);
47 assertEq(m[21](1), 20); // v == 21; x == 1 ==> inner function returns b == 20
48
49 var n = a.mapPar(function (v) { return function (x) { return v; }});
50 assertEq(n[21](1), 21); // v == 21
51 }
52
53 if (getBuildConfiguration().parallelJS)
54 testClosureCreationAndInvocation();

mercurial