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);