"use strict"; function assert(b) { if (!b) throw new Error; } function test1() { function foo(dv) { return [dv.getFloat32(0), dv.getFloat64(0)]; } noInline(foo); let ab = new ArrayBuffer(8); let dv = new DataView(ab); dv.setFloat64(0, 128431.42342189432, false); for (let i = 0; i < 10000; ++i) { let result = foo(dv); assert(result[0] !== result[1]); } } test1(); function test2() { function foo(dv) { return [dv.getFloat32(0), dv.getFloat32(0)]; } noInline(foo); let ab = new ArrayBuffer(8); let dv = new DataView(ab); dv.setFloat64(0, 128431.42342189432, false); for (let i = 0; i < 10000; ++i) { let result = foo(dv); assert(result[0] === result[1]); } } test2(); function test3() { function foo(dv, ta) { let a = dv.getFloat64(0, true); ta[0] = Math.PI; let b = dv.getFloat64(0, true); return [a, b]; } noInline(foo); let ab = new ArrayBuffer(8); let dv = new DataView(ab); let ta = new Float64Array(ab); for (let i = 0; i < 40000; ++i) { dv.setFloat64(0, 0.0, true); let result = foo(dv, ta); assert(result[0] === 0.0); assert(result[1] === Math.PI); } } test3(); function test4() { function foo(dv) { let a = dv.getInt32(0, true); let b = dv.getInt32(0, false); return [a, b]; } noInline(foo); let ab = new ArrayBuffer(8); let dv = new DataView(ab); dv.setInt32(0, 0x11223344, true); for (let i = 0; i < 40000; ++i) { let result = foo(dv); assert(result[0] === 0x11223344); assert(result[1] === 0x44332211) } } test4(); function test5() { function foo(dv, littleEndian) { let a = dv.getInt32(0, littleEndian); let b = dv.getInt32(0, !littleEndian); return [a, b]; } noInline(foo); let ab = new ArrayBuffer(8); let dv = new DataView(ab); dv.setInt32(0, 0x11223344, true); for (let i = 0; i < 40000; ++i) { let result = foo(dv, true); assert(result[0] === 0x11223344); assert(result[1] === 0x44332211) } } test5(); function test6() { function foo(dv, littleEndian) { let a = dv.getInt32(0, littleEndian); let b = dv.getInt32(0, littleEndian); return [a, b]; } noInline(foo); let ab = new ArrayBuffer(8); let dv = new DataView(ab); dv.setInt32(0, 0x11223344, true); for (let i = 0; i < 40000; ++i) { let result = foo(dv, true); assert(result[0] === 0x11223344); assert(result[1] === 0x11223344) } } test6(); function test7() { function foo(dv) { let a = dv.getInt32(0, true); let b = dv.getInt32(4, true); return [a, b]; } noInline(foo); let ab = new ArrayBuffer(8); let dv = new DataView(ab); dv.setInt32(0, 0x11223344, true); dv.setInt32(4, 0x12121212, true); for (let i = 0; i < 40000; ++i) { let result = foo(dv, true); assert(result[0] === 0x11223344); assert(result[1] === 0x12121212); } } test7();