tor-browser

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

useCounter.js (1144B)


      1 load(libdir + "asm.js");
      2 
      3 let useCounters = getUseCounterResults();
      4 // No asm.js modules will have been instantiated yet.
      5 assertEq(useCounters.AsmJS, 0);
      6 // We will have seen one "use asm" for `valid` when this script has been parsed.
      7 assertEq(useCounters.UseAsm, 1);
      8 // No wasm is being used.
      9 assertEq(useCounters.Wasm, 0);
     10 
     11 // Do an imperative asm.js compilation.
     12 asmLink(asmCompile(
     13  USE_ASM +
     14  "function f(i) { i=i|0; return (i*2)|0 } return f"
     15 ));
     16 
     17 // Do an imperative asm.js compilation that is invalid.
     18 Function.apply(null, [USE_ASM+"function f(){i=i|0} function g() { f(0) } return g"]);
     19 
     20 // Define an asm.js function normally as part of this script.
     21 function valid() {
     22  "use asm";
     23  function f(i) { i=i|0; return (i*2)|0 } return f;
     24 }
     25 let f = valid();
     26 assertEq(f(0), 0);
     27 assertEq(f(1), 2);
     28 
     29 useCounters = getUseCounterResults();
     30 // If asm.js is enabled, then we have instantiated two valid modules.
     31 assertEq(useCounters.AsmJS, isAsmJSCompilationAvailable() ? 2 : 0);
     32 // Even if asm.js is not enabled, we have seen three "use asm" directives.
     33 assertEq(useCounters.UseAsm, 3);
     34 // No wasm is being used.
     35 assertEq(useCounters.Wasm, 0);