tor-browser

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

testCloning.js (1625B)


      1 load(libdir + "asm.js");
      2 
      3 var code = asmCompile(USE_ASM + "function g() { return 42 } return g");
      4 assertEq(asmLink(code)(), 42);
      5 assertEq(asmLink(code)(), 42);
      6 
      7 var code = evaluate("(function() { " + USE_ASM + " function g() { return 43 } return g})", {fileName: null});
      8 assertEq(asmLink(code)(), 43);
      9 assertEq(asmLink(code)(), 43);
     10 
     11 var code = asmCompile('glob', 'ffis', 'buf', USE_ASM + 'var i32=new glob.Int32Array(buf); function g() { return i32[0]|0 } return g');
     12 var i32_1 = new Int32Array(BUF_MIN/4);
     13 i32_1[0] = 42;
     14 var i32_2 = new Int32Array(BUF_MIN/4);
     15 i32_2[0] = 13;
     16 assertEq(asmLink(code, this, null, i32_1.buffer)(), 42);
     17 assertEq(asmLink(code, this, null, i32_2.buffer)(), 13);
     18 var i32_3 = new Int32Array(4097);
     19 assertAsmLinkFail(code, this, null, i32_3.buffer);
     20 
     21 var code = asmCompile('glob', 'ffis', USE_ASM + 'var ffi=ffis.ffi; function g(n) { n=n|0; var i=0; for(; (i|0)<(n|0); i=(i+1)|0) ffi() } return g');
     22 var calls1 = 0, calls2 = 0;
     23 function ffi1() { calls1++ }
     24 function ffi2() { calls2++ }
     25 asmLink(code, null, {ffi:ffi1})(100000);
     26 assertEq(calls1, 100000);
     27 assertEq(calls2, 0);
     28 calls1 = 0;
     29 asmLink(code, null, {ffi:ffi2})(50000);
     30 assertEq(calls1, 0);
     31 assertEq(calls2, 50000);
     32 
     33 var code = asmCompile(USE_ASM + 'var g = 0; function h() { g=(g+1)|0; return g|0 } return h');
     34 var h1 = code();
     35 assertEq(h1(), 1);
     36 assertEq(h1(), 2);
     37 var h2 = code();
     38 assertEq(h2(), 1);
     39 assertEq(h1(), 3);
     40 assertEq(h2(), 2);
     41 assertEq(h1(), 4);
     42 
     43 var code = asmCompile(USE_ASM + "return {}");
     44 var h1 = code();
     45 var h2 = code();
     46 assertEq(h1 === h2, false);
     47 assertEq(Object.keys(h1).length, 0);
     48 assertEq(Object.keys(h2).length, 0);