dom/asmjscache/test/file_slow.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 function f1() { "use asm"; function g() {} return g }
     2 if (this.jsFuns) {
     3     ok(jsFuns.isAsmJSModule(f1), "f1 is an asm.js module");
     4     ok(jsFuns.isAsmJSFunction(f1()), "f1.g is an asm.js function");
     5 }
     7 function f2(stdlib, foreign, buffer) {
     8     "use asm";
     9     var i32 = new stdlib.Int32Array(buffer);
    10     function main(n) {
    11         n = n|0;
    12         var i = 0, sum = 0;
    13         for (; (i|0) < (n|0); i=(i+1)|0)
    14             sum = (sum + (i32[(i<<2)>>2]|0))|0;
    15         return sum|0;
    16     }
    17     return main;
    18 }
    19 if (this.jsFuns)
    20     ok(jsFuns.isAsmJSModule(f2), "f2 is an asm.js module");
    21 var i32 = new Int32Array(1024);
    22 for (var i = 0; i < i32.length; i++)
    23     i32[i] = i;
    24 var f2Main = f2(this, null, i32.buffer);
    25 if (this.jsFuns)
    26     ok(jsFuns.isAsmJSFunction(f2Main), "f2.main is an asm.js function");
    27 if (f2Main(4) !== 6)
    28     throw "f2Main(4)";
    29 if (f2Main(100) !== 4950)
    30     throw "f2.main(100)";
    31 var sum = (((i32.length - 1) * i32.length) / 2);
    32 if (f2Main(i32.length) !== sum)
    33     throw "f2.main(" + i32.length + ")";
    34 if (f2Main(i32.length + 100) !== sum)
    35     throw "f2.main(" + i32.length + ")";
    37 function f3(stdlib, foreign, buffer) {
    38     "use asm";
    39     var done = foreign.done;
    40     var i32 = new stdlib.Int32Array(buffer);
    41     function main() {
    42         var i = 0, sum = 0;
    43         while (1) {
    44             for (i = 0; (i|0) < 1000; i=(i+1)|0)
    45                 sum = (sum + i)|0;
    46             if (done(sum|0)|0)
    47                 break;
    48         }
    49         return sum|0;
    50     }
    51     return main;
    52 }
    53 var begin;
    54 var lastSum;
    55 function done(sum) {
    56     if (sum !== ((lastSum + 499500)|0))
    57         throw "bad sum: " + sum + ", " + lastSum + ", " + ((lastSum + 499500)|0);
    58     lastSum = sum;
    59     return (Date.now() - begin) > 3000;
    60 }
    61 var f3Main = f3(this, {done:done}, i32.buffer);
    62 if (this.jsFuns)
    63     ok(jsFuns.isAsmJSFunction(f3Main), "f3.main is an asm.js function");
    65 begin = Date.now();
    66 lastSum = 0;
    67 if (f3Main() !== lastSum)
    68     throw "f3.main()";
    70 if (!this.jsFuns)
    71     postMessage("ok");

mercurial