| |
| var buf = new ArrayBuffer(4096); |
| var f64 = new Float64Array(buf); |
| var i32 = new Int32Array(buf); |
| var u32 = new Uint32Array(buf); |
| |
| function ffi(d) { |
| str = String(d); |
| } |
| |
| |
| function FFI1(glob, imp, b) { |
| "use asm"; |
| |
| var i8=new glob.Int8Array(b);var u8=new glob.Uint8Array(b); |
| var i16=new glob.Int16Array(b);var u16=new glob.Uint16Array(b); |
| var i32=new glob.Int32Array(b);var u32=new glob.Uint32Array(b); |
| var f32=new glob.Float32Array(b);var f64=new glob.Float64Array(b); |
| |
| var ffi=imp.ffi; |
| |
| function g() { |
| ffi(+f64[0]) |
| } |
| return g |
| } |
| |
| g = FFI1(this, {ffi:ffi}, buf); |
| |
| |
| // that sounds dangerous! |
| var a = [0,1,0xffff0000,0x7fff0000,0xfff80000,0x7ff80000,0xfffc0000,0x7ffc0000,0xffffffff,0x0000ffff,0x00008fff7]; |
| for (i of a) { |
| for (j of a) { |
| u32[0] = i; |
| u32[1] = j; |
| |
| print(f64[0]+" (input)"); |
| //assertEq(f(), f64[0]); |
| |
| g(); |
| assertEq(str, String(f64[0])); |
| } |
| } |