tor-browser

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

testNeuter.js (1333B)


      1 // |jit-test| skip-if: !isAsmJSCompilationAvailable()
      2 
      3 load(libdir + "asm.js");
      4 load(libdir + "asserts.js");
      5 
      6 var m = asmCompile('stdlib', 'foreign', 'buffer',
      7                  `"use asm";
      8                   var i32 = new stdlib.Int32Array(buffer);
      9                   function set(i,j) {
     10                       i=i|0;
     11                       j=j|0;
     12                       i32[i>>2] = j;
     13                   }
     14                   function get(i) {
     15                       i=i|0;
     16                       return i32[i>>2]|0
     17                   }
     18                   return {get:get, set:set}`);
     19 
     20 var buffer = new ArrayBuffer(BUF_MIN);
     21 var {get, set} = asmLink(m, this, null, buffer);
     22 set(4, 42);
     23 assertEq(get(4), 42);
     24 assertThrowsInstanceOf(() => detachArrayBuffer(buffer), Error);
     25 
     26 var m = asmCompile('stdlib', 'foreign', 'buffer',
     27                  `"use asm";
     28                   var i32 = new stdlib.Int32Array(buffer);
     29                   var ffi = foreign.ffi;
     30                   function inner(i) {
     31                       i=i|0;
     32                       ffi();
     33                       return i32[i>>2]|0
     34                   }
     35                   return inner`);
     36 
     37 var buffer = new ArrayBuffer(BUF_MIN);
     38 function ffi1()
     39 {
     40    assertThrowsInstanceOf(() => detachArrayBuffer(buffer), Error);
     41 }
     42 
     43 var inner = asmLink(m, this, {ffi: ffi1}, buffer);