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