function foo(o) { return o[0]; } noInline(foo); function isBigEndian() { var word = new Int16Array(1); word[0] = 1; var bytes = new Int8Array(word.buffer); return !bytes[0]; } function test(a, b, x) { var intArray = new Int32Array(2); intArray[0] = a; intArray[1] = b; var floatArray = new Float64Array(intArray.buffer); var element = foo(floatArray); var result = element + 1; if (("" + result) != ("" + x)) throw "Error: bad result for " + a + ", " + b + ": " + result + ", but expected: " + x + "; loaded " + element + " from the array"; } for (var i = 0; i < 100000; ++i) test(0, 0, 1); if (isBigEndian()) { test(0xFFFF0000, 0, 0/0); test(0, 0xFFFF0000, 1); } else { test(0xFFFF0000, 0, 1); test(0, 0xFFFF0000, 0/0); }