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