1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/asmjscache/test/file_slow.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,71 @@ 1.4 +function f1() { "use asm"; function g() {} return g } 1.5 +if (this.jsFuns) { 1.6 + ok(jsFuns.isAsmJSModule(f1), "f1 is an asm.js module"); 1.7 + ok(jsFuns.isAsmJSFunction(f1()), "f1.g is an asm.js function"); 1.8 +} 1.9 + 1.10 +function f2(stdlib, foreign, buffer) { 1.11 + "use asm"; 1.12 + var i32 = new stdlib.Int32Array(buffer); 1.13 + function main(n) { 1.14 + n = n|0; 1.15 + var i = 0, sum = 0; 1.16 + for (; (i|0) < (n|0); i=(i+1)|0) 1.17 + sum = (sum + (i32[(i<<2)>>2]|0))|0; 1.18 + return sum|0; 1.19 + } 1.20 + return main; 1.21 +} 1.22 +if (this.jsFuns) 1.23 + ok(jsFuns.isAsmJSModule(f2), "f2 is an asm.js module"); 1.24 +var i32 = new Int32Array(1024); 1.25 +for (var i = 0; i < i32.length; i++) 1.26 + i32[i] = i; 1.27 +var f2Main = f2(this, null, i32.buffer); 1.28 +if (this.jsFuns) 1.29 + ok(jsFuns.isAsmJSFunction(f2Main), "f2.main is an asm.js function"); 1.30 +if (f2Main(4) !== 6) 1.31 + throw "f2Main(4)"; 1.32 +if (f2Main(100) !== 4950) 1.33 + throw "f2.main(100)"; 1.34 +var sum = (((i32.length - 1) * i32.length) / 2); 1.35 +if (f2Main(i32.length) !== sum) 1.36 + throw "f2.main(" + i32.length + ")"; 1.37 +if (f2Main(i32.length + 100) !== sum) 1.38 + throw "f2.main(" + i32.length + ")"; 1.39 + 1.40 +function f3(stdlib, foreign, buffer) { 1.41 + "use asm"; 1.42 + var done = foreign.done; 1.43 + var i32 = new stdlib.Int32Array(buffer); 1.44 + function main() { 1.45 + var i = 0, sum = 0; 1.46 + while (1) { 1.47 + for (i = 0; (i|0) < 1000; i=(i+1)|0) 1.48 + sum = (sum + i)|0; 1.49 + if (done(sum|0)|0) 1.50 + break; 1.51 + } 1.52 + return sum|0; 1.53 + } 1.54 + return main; 1.55 +} 1.56 +var begin; 1.57 +var lastSum; 1.58 +function done(sum) { 1.59 + if (sum !== ((lastSum + 499500)|0)) 1.60 + throw "bad sum: " + sum + ", " + lastSum + ", " + ((lastSum + 499500)|0); 1.61 + lastSum = sum; 1.62 + return (Date.now() - begin) > 3000; 1.63 +} 1.64 +var f3Main = f3(this, {done:done}, i32.buffer); 1.65 +if (this.jsFuns) 1.66 + ok(jsFuns.isAsmJSFunction(f3Main), "f3.main is an asm.js function"); 1.67 + 1.68 +begin = Date.now(); 1.69 +lastSum = 0; 1.70 +if (f3Main() !== lastSum) 1.71 + throw "f3.main()"; 1.72 + 1.73 +if (!this.jsFuns) 1.74 + postMessage("ok");