1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
/* Handle recompilation of arithmetic operations, and on-stack int -> double conversion. */
function add(x, y)
{
var z = x + y;
assertEq(z, 2147483732);
assertEq(z - 10, 2147483722);
}
add(0x7ffffff0, 100);
function mul(x, y)
{
var z = x * y;
assertEq(z, 4294967264);
}
mul(0x7ffffff0, 2);
function div1(x, y)
{
var z = x / y;
assertEq(z + 10, 20);
}
div1(100, 10);
function div2(x, y)
{
var z = x / y;
assertEq(z + 10, 20.5);
}
div2(105, 10);
function uncopy(x, y)
{
var q = x;
x += y;
q++;
assertEq(q, 2147483633);
assertEq(x, 2147483732);
}
uncopy(0x7ffffff0, 100);
function addmore(x, y)
{
var q = (x + 10) + (x + y);
assertEq(q, 4294967374);
x = q;
}
addmore(0x7ffffff0, 100);
|