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