tor-browser

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

wasm-abi.js (1283B)


      1 for (let numLocals of [3, 4, 5, 6, 17, 18, 19]) {
      2    for (let numParams of [1, 2, 3, 4, 5, 6, 7, 8]) {
      3        let locals = `       (local `;
      4        let setLocals = ``;
      5        let getLocals = ``;
      6        let adds = ``;
      7        let sum = 0;
      8        for (let i = 0; i < numLocals; i++) {
      9            sum += i + 1;
     10            locals += `i32 `;
     11            setLocals += `       (local.set ${i + 1} (i32.add (local.get 0) (i32.const ${i + 1})))\n`;
     12            getLocals += `       local.get ${i + 1}\n`;
     13            if (i > 0)
     14              adds += `       i32.add\n`;
     15        }
     16        locals += `)\n`;
     17 
     18        var callee = `    (func $f (param `;
     19        var caller = `       (call $f `;
     20        for (let i = 0; i < numParams; i++) {
     21            callee += `f32 `;
     22            caller += `(f32.const ${i}) `;
     23        }
     24        callee += `))\n`;
     25        caller += `)\n`;
     26 
     27        var code = `(module \n` +
     28                   callee +
     29                   `    (func (export "run") (param i32) (result i32)\n` +
     30                   locals +
     31                   setLocals +
     32                   caller +
     33                   getLocals +
     34                   adds +
     35                   `    )\n` +
     36                   `)`;
     37        wasmFullPass(code, numLocals * 100 + sum, undefined, 100);
     38    }
     39 }