|
1 function f(x,y,z) { |
|
2 var z; |
|
3 if (x) { |
|
4 if (y) { |
|
5 z = 0xfffffff; |
|
6 } else { |
|
7 z = 0xfffffff; |
|
8 } |
|
9 assertFloat32(z, false); |
|
10 } else { |
|
11 z = Math.fround(z); |
|
12 assertFloat32(z, true); |
|
13 } |
|
14 assertFloat32(z, false); |
|
15 return z; |
|
16 } |
|
17 |
|
18 function g(x,y,z) { |
|
19 var z; |
|
20 if (x) { |
|
21 if (y) { |
|
22 z = 3; |
|
23 } else { |
|
24 z = 6; |
|
25 } |
|
26 assertFloat32(z, false); |
|
27 } else { |
|
28 z = Math.fround(z); |
|
29 assertFloat32(z, true); |
|
30 } |
|
31 assertFloat32(z, true); |
|
32 return z; |
|
33 } |
|
34 |
|
35 setJitCompilerOption("ion.usecount.trigger", 50); |
|
36 |
|
37 for (var n = 100; n--; ) { |
|
38 assertEq(f(0,1,2), 2); |
|
39 assertEq(f(0,0,2), 2); |
|
40 assertEq(f(1,0,2), 0xfffffff); |
|
41 assertEq(f(1,1,2), 0xfffffff); |
|
42 |
|
43 assertEq(g(0,1,2), 2); |
|
44 assertEq(g(0,0,2), 2); |
|
45 assertEq(g(1,0,2), 6); |
|
46 assertEq(g(1,1,2), 3); |
|
47 } |