tor-browser

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

test.js (1247B)


      1 // |jit-test| skip-if: !wasmStreamingEnabled()
      2 
      3 const { Instance, compile, compileStreaming } = WebAssembly;
      4 
      5 for (let i = 0; i < 200; i++) {
      6    // Possibly free code from a previous iteration, increasing probability
      7    // new code will be allocated in a location previous code was.
      8    gc(undefined, "shrinking");
      9 
     10    function compileAndRun(x, g) {
     11        var cache = streamCacheEntry(wasmTextToBinary(x));
     12 
     13        compileStreaming(cache).then(function (m) {
     14            g(new Instance(m, undefined));
     15            return compileStreaming(cache);
     16        }).then(function (m) {
     17            g(new Instance(m, undefined));
     18        });
     19 
     20        // Serialize the promise execution at this point
     21        drainJobQueue();
     22    }
     23 
     24    // Compile two different modules to increase probability that a module is
     25    // is compiled to a page that a different module resided in previously.
     26    compileAndRun('(module \
     27        (func $test (param i64) (result f64) local.get 0 f64.convert_i64_u )\
     28        (func (export "run") (result i32) i64.const 1 call $test f64.const 1 f64.eq )\
     29    )', function (i) {});
     30    compileAndRun('(module \
     31        (func (export "run") (result i64) (i64.const 1))\
     32    )', function (i) {
     33        i.exports.run();
     34    });
     35 }