blob: e3d47a938e581bac7975c34758f1e1148e430d95 [file] [log] [blame]
sbarati@apple.com16f1ac32018-08-30 19:27:56 +00001"use strict";
2
3function assert(b) {
4 if (!b)
5 throw new Error;
6}
7
8
9function test1() {
10 function foo(dv) {
11 return [dv.getFloat32(0), dv.getFloat64(0)];
12 }
13 noInline(foo);
14
15 let ab = new ArrayBuffer(8);
16 let dv = new DataView(ab);
17 dv.setFloat64(0, 128431.42342189432, false);
18 for (let i = 0; i < 10000; ++i) {
19 let result = foo(dv);
20 assert(result[0] !== result[1]);
21 }
22}
23test1();
24
25function test2() {
26 function foo(dv) {
27 return [dv.getFloat32(0), dv.getFloat32(0)];
28 }
29 noInline(foo);
30
31 let ab = new ArrayBuffer(8);
32 let dv = new DataView(ab);
33 dv.setFloat64(0, 128431.42342189432, false);
34 for (let i = 0; i < 10000; ++i) {
35 let result = foo(dv);
36 assert(result[0] === result[1]);
37 }
38}
39test2();
40
41function test3() {
42 function foo(dv, ta) {
43 let a = dv.getFloat64(0, true);
44 ta[0] = Math.PI;
45 let b = dv.getFloat64(0, true);
46 return [a, b];
47 }
48 noInline(foo);
49
50 let ab = new ArrayBuffer(8);
51 let dv = new DataView(ab);
52 let ta = new Float64Array(ab);
53 for (let i = 0; i < 40000; ++i) {
54 dv.setFloat64(0, 0.0, true);
55 let result = foo(dv, ta);
56 assert(result[0] === 0.0);
57 assert(result[1] === Math.PI);
58 }
59}
60test3();
61
62function test4() {
63 function foo(dv) {
64 let a = dv.getInt32(0, true);
65 let b = dv.getInt32(0, false);
66 return [a, b];
67 }
68 noInline(foo);
69
70 let ab = new ArrayBuffer(8);
71 let dv = new DataView(ab);
72 dv.setInt32(0, 0x11223344, true);
73 for (let i = 0; i < 40000; ++i) {
74 let result = foo(dv);
75 assert(result[0] === 0x11223344);
76 assert(result[1] === 0x44332211)
77 }
78}
79test4();
80
81function test5() {
82 function foo(dv, littleEndian) {
83 let a = dv.getInt32(0, littleEndian);
84 let b = dv.getInt32(0, !littleEndian);
85 return [a, b];
86 }
87 noInline(foo);
88
89 let ab = new ArrayBuffer(8);
90 let dv = new DataView(ab);
91 dv.setInt32(0, 0x11223344, true);
92 for (let i = 0; i < 40000; ++i) {
93 let result = foo(dv, true);
94 assert(result[0] === 0x11223344);
95 assert(result[1] === 0x44332211)
96 }
97}
98test5();
99
100function test6() {
101 function foo(dv, littleEndian) {
102 let a = dv.getInt32(0, littleEndian);
103 let b = dv.getInt32(0, littleEndian);
104 return [a, b];
105 }
106 noInline(foo);
107
108 let ab = new ArrayBuffer(8);
109 let dv = new DataView(ab);
110 dv.setInt32(0, 0x11223344, true);
111 for (let i = 0; i < 40000; ++i) {
112 let result = foo(dv, true);
113 assert(result[0] === 0x11223344);
114 assert(result[1] === 0x11223344)
115 }
116}
117test6();
118
119function test7() {
120 function foo(dv) {
121 let a = dv.getInt32(0, true);
122 let b = dv.getInt32(4, true);
123 return [a, b];
124 }
125 noInline(foo);
126
127 let ab = new ArrayBuffer(8);
128 let dv = new DataView(ab);
129 dv.setInt32(0, 0x11223344, true);
130 dv.setInt32(4, 0x12121212, true);
131 for (let i = 0; i < 40000; ++i) {
132 let result = foo(dv, true);
133 assert(result[0] === 0x11223344);
134 assert(result[1] === 0x12121212);
135 }
136}
137test7();