tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

lazy-stubs-jitentry.js (1535B)


      1 function test() {
      2  var table = wasmEvalText(`(module
      3        (func $add0 (param i32) (result i32) (i32.add (local.get 0) (i32.const 0)))
      4        (func $add1 (param i32) (result i32) (i32.add (local.get 0) (i32.const 1)))
      5        (func $add2 (param i32) (result i32) (i32.add (local.get 0) (i32.const 2)))
      6        (func $add3 (param i32) (result i32) (i32.add (local.get 0) (i32.const 3)))
      7        (func $add4 (param i32) (result i32) (i32.add (local.get 0) (i32.const 4)))
      8        (func $add5 (param i32) (result i32) (i32.add (local.get 0) (i32.const 5)))
      9        (func $add6 (param i32) (result i32) (i32.add (local.get 0) (i32.const 6)))
     10        (func $add7 (param i32) (result i32) (i32.add (local.get 0) (i32.const 7)))
     11        (func $add8 (param i32) (result i32) (i32.add (local.get 0) (i32.const 8)))
     12        (func $add9 (param i32) (result i32) (i32.add (local.get 0) (i32.const 9)))
     13        (table (export "table") 10 funcref)
     14        (elem (i32.const 0) $add0)
     15        (elem (i32.const 1) $add1)
     16        (elem (i32.const 2) $add2)
     17        (elem (i32.const 3) $add3)
     18        (elem (i32.const 4) $add4)
     19        (elem (i32.const 5) $add5)
     20        (elem (i32.const 6) $add6)
     21        (elem (i32.const 7) $add7)
     22        (elem (i32.const 8) $add8)
     23        (elem (i32.const 9) $add9)
     24    )`).exports.table;
     25  var exps = [];
     26  for (var i = 0; i < 10; i++) {
     27    exps.push(table.get(i));
     28  }
     29  var res = 0;
     30  for (var i = 0; i < 80; i++) {
     31    var exp = exps[i % exps.length];
     32    res = exp(res);
     33  }
     34  assertEq(res, 360);
     35 }
     36 test();