Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| --ion-eager
function optimize(a, b) {
a = a | 0;
b = b | 0;
if ((a & 3) === 0) {
a = a + 1 | 0
}
if ((a & 7) !== 0) {
a = a + 1 | 0
}
return a + b | 0
}
for (var i=0; i<20; i++) {
assertEq(optimize(4 | 0, 6 | 0), 12);
assertEq(optimize(7 | 0, 11 | 0), 19);
}
function not_optimizable(a, b) {
a = a | 0;
b = b | 0;
if ((a & 3) > 0) {
a = a + 1 | 0
}
if ((a & 3) >= 0) {
a = a + 1 | 0
}
if ((a & 7) < 0) {
a = a + 1 | 0
}
if ((a & 7) <= 0) {
a = a + 1 | 0
}
if ((b & 3) === 1) {
b = b + 1 | 0
}
if ((b & 7) !== 3) {
b = b + 1 | 0
}
return a + b | 0
}
for (var i=0; i<20; i++) {
assertEq(not_optimizable(4 | 0, 6 | 0), 12);
assertEq(not_optimizable(7 | 0, 11 | 0), 20);
}