dom/asmjscache/test/file_slow.js

changeset 0
6474c204b198
     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");

mercurial