//@ skip if not $jitTests //@ defaultNoEagerRun "use strict"; // Checked int_min < value < 0 function opaqueCheckedBetweenIntMinAndZeroExclusive(arg) { if (arg < 0) { if (arg > (0x80000000|0)) { return Math.abs(arg); } } throw "We should not be here"; } noInline(opaqueCheckedBetweenIntMinAndZeroExclusive); function testCheckedBetweenIntMinAndZeroExclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedBetweenIntMinAndZeroExclusive(-i) !== i) { throw "Failed testCheckedBetweenIntMinAndZeroExclusive()"; } if (opaqueCheckedBetweenIntMinAndZeroExclusive(-2147483647) !== 2147483647) { throw "Failed testCheckedBetweenIntMinAndZeroExclusive() on -2147483647"; } } if (numberOfDFGCompiles(opaqueCheckedBetweenIntMinAndZeroExclusive) > 1) { throw "Failed optimizing testCheckedBetweenIntMinAndZeroExclusive(). None of the tested case need to OSR Exit."; } } testCheckedBetweenIntMinAndZeroExclusive(); // Checked int_min < value <= 0 function opaqueCheckedBetweenIntMinExclusiveAndZeroInclusive(arg) { if (arg <= 0) { if (arg > (0x80000000|0)) { return Math.abs(arg); } } throw "We should not be here"; } noInline(opaqueCheckedBetweenIntMinExclusiveAndZeroInclusive); function testCheckedBetweenIntMinExclusiveAndZeroInclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedBetweenIntMinExclusiveAndZeroInclusive(-i) !== i) { throw "Failed testCheckedBetweenIntMinExclusiveAndZeroInclusive()"; } if (opaqueCheckedBetweenIntMinExclusiveAndZeroInclusive(0) !== 0) { throw "Failed testCheckedBetweenIntMinExclusiveAndZeroInclusive() on 0"; } if (opaqueCheckedBetweenIntMinExclusiveAndZeroInclusive(-2147483647) !== 2147483647) { throw "Failed testCheckedBetweenIntMinExclusiveAndZeroInclusive() on -2147483647"; } } if (numberOfDFGCompiles(opaqueCheckedBetweenIntMinExclusiveAndZeroInclusive) > 1) { throw "Failed optimizing testCheckedBetweenIntMinExclusiveAndZeroInclusive(). None of the tested case need to OSR Exit."; } } testCheckedBetweenIntMinExclusiveAndZeroInclusive(); // Checked int_min <= value < 0 function opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive(arg) { if (arg < 0) { if (arg >= (0x80000000|0)) { return Math.abs(arg); } } throw "We should not be here"; } noInline(opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive); function testCheckedBetweenIntMinInclusiveAndZeroExclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive(-i) !== i) { throw "Failed testCheckedBetweenIntMinInclusiveAndZeroExclusive()"; } if (opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive(-2147483647) !== 2147483647) { throw "Failed testCheckedBetweenIntMinInclusiveAndZeroExclusive() on -2147483647"; } } if (numberOfDFGCompiles(opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive) > 1) { throw "Failed optimizing testCheckedBetweenIntMinInclusiveAndZeroExclusive(). None of the tested case need to OSR Exit."; } for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive(-i) !== i) { throw "Failed testCheckedBetweenIntMinInclusiveAndZeroExclusive()"; } let result = opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive(-2147483648); if (result !== 2147483648) { throw "Failed testCheckedBetweenIntMinInclusiveAndZeroExclusive() on -2147483648, got " + result; } } if (numberOfDFGCompiles(opaqueCheckedBetweenIntMinInclusiveAndZeroExclusive) > 2) { throw "Math.abs() on IntMin can OSR Exit but we should quickly settle on double."; } } testCheckedBetweenIntMinInclusiveAndZeroExclusive(); // Checked int_min <= value <= 0 function opaqueCheckedBetweenIntMinAndZeroInclusive(arg) { if (arg <= 0) { if (arg >= (0x80000000|0)) { return Math.abs(arg); } } throw "We should not be here"; } noInline(opaqueCheckedBetweenIntMinAndZeroInclusive); function testCheckedBetweenIntMinAndZeroInclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedBetweenIntMinAndZeroInclusive(-i) !== i) { throw "Failed testCheckedBetweenIntMinAndZeroInclusive()"; } if (opaqueCheckedBetweenIntMinAndZeroInclusive(0) !== 0) { throw "Failed testCheckedBetweenIntMinAndZeroInclusive()"; } if (opaqueCheckedBetweenIntMinAndZeroInclusive(-2147483647) !== 2147483647) { throw "Failed testCheckedBetweenIntMinAndZeroInclusive() on -2147483647"; } } if (numberOfDFGCompiles(opaqueCheckedBetweenIntMinAndZeroInclusive) > 1) { throw "Failed optimizing testCheckedBetweenIntMinAndZeroInclusive(). None of the tested case need to OSR Exit."; } for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedBetweenIntMinAndZeroInclusive(-i) !== i) { throw "Failed testCheckedBetweenIntMinAndZeroInclusive()"; } if (opaqueCheckedBetweenIntMinAndZeroInclusive(0) !== 0) { throw "Failed testCheckedBetweenIntMinAndZeroInclusive()"; } if (opaqueCheckedBetweenIntMinAndZeroInclusive(-2147483648) !== 2147483648) { throw "Failed testCheckedBetweenIntMinAndZeroInclusive() on -2147483648"; } } if (numberOfDFGCompiles(opaqueCheckedBetweenIntMinAndZeroInclusive) > 2) { throw "Math.abs() on IntMin can OSR Exit but we should quickly settle on double."; } } testCheckedBetweenIntMinAndZeroInclusive(); // Unchecked int_min < value < 0 function opaqueUncheckedBetweenIntMinAndZeroExclusive(arg) { if (arg < 0) { if (arg > (0x80000000|0)) { return Math.abs(arg)|0; } } throw "We should not be here"; } noInline(opaqueUncheckedBetweenIntMinAndZeroExclusive); function testUncheckedBetweenIntMinAndZeroExclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueUncheckedBetweenIntMinAndZeroExclusive(-i) !== i) { throw "Failed testUncheckedBetweenIntMinAndZeroExclusive()"; } if (opaqueUncheckedBetweenIntMinAndZeroExclusive(-2147483647) !== 2147483647) { throw "Failed testUncheckedBetweenIntMinAndZeroExclusive() on -2147483647"; } } if (numberOfDFGCompiles(opaqueUncheckedBetweenIntMinAndZeroExclusive) > 1) { throw "Failed optimizing testUncheckedBetweenIntMinAndZeroExclusive(). None of the tested case need to OSR Exit."; } } testUncheckedBetweenIntMinAndZeroExclusive(); // Unchecked int_min < value <= 0 function opaqueUncheckedBetweenIntMinExclusiveAndZeroInclusive(arg) { if (arg <= 0) { if (arg > (0x80000000|0)) { return Math.abs(arg)|0; } } throw "We should not be here"; } noInline(opaqueUncheckedBetweenIntMinExclusiveAndZeroInclusive); function testUncheckedBetweenIntMinExclusiveAndZeroInclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueUncheckedBetweenIntMinExclusiveAndZeroInclusive(-i) !== i) { throw "Failed testUncheckedBetweenIntMinExclusiveAndZeroInclusive()"; } if (opaqueUncheckedBetweenIntMinExclusiveAndZeroInclusive(0) !== 0) { throw "Failed testUncheckedBetweenIntMinExclusiveAndZeroInclusive() on 0"; } if (opaqueUncheckedBetweenIntMinExclusiveAndZeroInclusive(-2147483647) !== 2147483647) { throw "Failed testUncheckedBetweenIntMinExclusiveAndZeroInclusive() on -2147483647"; } } if (numberOfDFGCompiles(opaqueUncheckedBetweenIntMinExclusiveAndZeroInclusive) > 1) { throw "Failed optimizing testUncheckedBetweenIntMinExclusiveAndZeroInclusive(). None of the tested case need to OSR Exit."; } } testUncheckedBetweenIntMinExclusiveAndZeroInclusive(); // Unchecked int_min <= value < 0 function opaqueUncheckedBetweenIntMinInclusiveAndZeroExclusive(arg) { if (arg < 0) { if (arg >= (0x80000000|0)) { return Math.abs(arg)|0; } } throw "We should not be here"; } noInline(opaqueUncheckedBetweenIntMinInclusiveAndZeroExclusive); function testUncheckedBetweenIntMinInclusiveAndZeroExclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueUncheckedBetweenIntMinInclusiveAndZeroExclusive(-i) !== i) { throw "Failed testUncheckedBetweenIntMinInclusiveAndZeroExclusive()"; } if (opaqueUncheckedBetweenIntMinInclusiveAndZeroExclusive(-2147483647) !== 2147483647) { throw "Failed testUncheckedBetweenIntMinInclusiveAndZeroExclusive() on -2147483647"; } if (opaqueUncheckedBetweenIntMinInclusiveAndZeroExclusive(-2147483648) !== -2147483648) { throw "Failed testUncheckedBetweenIntMinInclusiveAndZeroExclusive() on -2147483648"; } } if (numberOfDFGCompiles(opaqueUncheckedBetweenIntMinInclusiveAndZeroExclusive) > 1) { throw "Failed optimizing testUncheckedBetweenIntMinInclusiveAndZeroExclusive(). None of the tested case need to OSR Exit."; } } testUncheckedBetweenIntMinInclusiveAndZeroExclusive(); // Unchecked int_min <= value <= 0 function opaqueUncheckedBetweenIntMinAndZeroInclusive(arg) { if (arg <= 0) { if (arg >= (0x80000000|0)) { return Math.abs(arg)|0; } } throw "We should not be here"; } noInline(opaqueUncheckedBetweenIntMinAndZeroInclusive); function testUncheckedBetweenIntMinAndZeroInclusive() { for (let i = 1; i < 1e5; ++i) { if (opaqueUncheckedBetweenIntMinAndZeroInclusive(-i) !== i) { throw "Failed testUncheckedBetweenIntMinAndZeroInclusive()"; } if (opaqueUncheckedBetweenIntMinAndZeroInclusive(0) !== 0) { throw "Failed testUncheckedBetweenIntMinAndZeroInclusive()"; } if (opaqueUncheckedBetweenIntMinAndZeroInclusive(-2147483647) !== 2147483647) { throw "Failed testUncheckedBetweenIntMinAndZeroInclusive() on -2147483647"; } if (opaqueUncheckedBetweenIntMinInclusiveAndZeroExclusive(-2147483648) !== -2147483648) { throw "Failed testUncheckedBetweenIntMinInclusiveAndZeroExclusive() on -2147483648"; } } if (numberOfDFGCompiles(opaqueUncheckedBetweenIntMinAndZeroInclusive) > 1) { throw "Failed optimizing testUncheckedBetweenIntMinAndZeroInclusive(). None of the tested case need to OSR Exit."; } } testUncheckedBetweenIntMinAndZeroInclusive(); // Checked value < 0 function opaqueCheckedLessThanZero(arg) { if (arg < 0) { return Math.abs(arg); } throw "We should not be here"; } noInline(opaqueCheckedLessThanZero); function testCheckedLessThanZero() { for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedLessThanZero(-i) !== i) { throw "Failed testCheckedLessThanZero()"; } if (opaqueCheckedLessThanZero(-2147483647) !== 2147483647) { throw "Failed testCheckedLessThanZero() on -2147483647"; } } if (numberOfDFGCompiles(opaqueCheckedLessThanZero) > 1) { throw "Failed optimizing testCheckedLessThanZero(). None of the tested case need to OSR Exit."; } for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedLessThanZero(-i) !== i) { throw "Failed testCheckedLessThanZero()"; } let result = opaqueCheckedLessThanZero(-2147483648); if (result !== 2147483648) { throw "Failed testCheckedLessThanZero() on -2147483648, got " + result; } } if (numberOfDFGCompiles(opaqueCheckedLessThanZero) > 2) { throw "Math.abs() on IntMin can OSR Exit but we should quickly settle on double."; } } testCheckedLessThanZero(); // Checked value <= 0 function opaqueCheckedLessThanOrEqualZero(arg) { if (arg <= 0) { return Math.abs(arg); } throw "We should not be here"; } noInline(opaqueCheckedLessThanOrEqualZero); function testCheckedLessThanOrEqualZero() { for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedLessThanOrEqualZero(-i) !== i) { throw "Failed testCheckedLessThanOrEqualZero()"; } if (opaqueCheckedLessThanOrEqualZero(0) !== 0) { throw "Failed testCheckedLessThanOrEqualZero() on 0"; } if (opaqueCheckedLessThanOrEqualZero(-2147483647) !== 2147483647) { throw "Failed testCheckedLessThanOrEqualZero() on -2147483647"; } } if (numberOfDFGCompiles(opaqueCheckedLessThanOrEqualZero) > 1) { throw "Failed optimizing testCheckedLessThanOrEqualZero(). None of the tested case need to OSR Exit."; } for (let i = 1; i < 1e5; ++i) { if (opaqueCheckedLessThanOrEqualZero(-i) !== i) { throw "Failed testCheckedLessThanOrEqualZero()"; } if (opaqueCheckedLessThanOrEqualZero(-2147483648) !== 2147483648) { throw "Failed testCheckedLessThanOrEqualZero() on -2147483648"; } } if (numberOfDFGCompiles(opaqueCheckedLessThanOrEqualZero) > 2) { throw "Math.abs() on IntMin can OSR Exit but we should quickly settle on double."; } } testCheckedLessThanOrEqualZero(); // Unchecked value < 0 function opaqueUncheckedLessThanZero(arg) { if (arg < 0) { return Math.abs(arg)|0; } throw "We should not be here"; } noInline(opaqueUncheckedLessThanZero); function testUncheckedLessThanZero() { for (let i = 1; i < 1e5; ++i) { if (opaqueUncheckedLessThanZero(-i) !== i) { throw "Failed testUncheckedLessThanZero()"; } if (opaqueUncheckedLessThanZero(-2147483647) !== 2147483647) { throw "Failed testUncheckedLessThanZero() on -2147483647"; } if (opaqueUncheckedLessThanZero(-2147483648) !== -2147483648) { throw "Failed testUncheckedLessThanOrEqualZero() on -2147483648"; } } if (numberOfDFGCompiles(opaqueUncheckedLessThanZero) > 1) { throw "Failed optimizing testUncheckedLessThanZero(). None of the tested case need to OSR Exit."; } for (let i = 1; i < 1e5; ++i) { if (opaqueUncheckedLessThanZero(-i) !== i) { throw "Failed testUncheckedLessThanZero()"; } if (opaqueUncheckedLessThanZero(-2147483648) !== -2147483648) { throw "Failed testUncheckedLessThanZero() on -2147483648"; } } if (numberOfDFGCompiles(opaqueUncheckedLessThanZero) > 2) { throw "Math.abs() on IntMin can OSR Exit but we should quickly settle on double."; } } testUncheckedLessThanZero(); // Unchecked value <= 0 function opaqueUncheckedLessThanOrEqualZero(arg) { if (arg <= 0) { return Math.abs(arg)|0; } throw "We should not be here"; } noInline(opaqueUncheckedLessThanOrEqualZero); function testUncheckedLessThanOrEqualZero() { for (let i = 1; i < 1e5; ++i) { if (opaqueUncheckedLessThanOrEqualZero(-i) !== i) { throw "Failed testUncheckedLessThanOrEqualZero()"; } if (opaqueUncheckedLessThanOrEqualZero(0) !== 0) { throw "Failed testUncheckedLessThanOrEqualZero() on 0"; } if (opaqueUncheckedLessThanOrEqualZero(-2147483647) !== 2147483647) { throw "Failed testUncheckedLessThanOrEqualZero() on -2147483647"; } if (opaqueUncheckedLessThanOrEqualZero(-2147483648) !== -2147483648) { throw "Failed testUncheckedLessThanOrEqualZero() on -2147483648"; } } if (numberOfDFGCompiles(opaqueUncheckedLessThanOrEqualZero) > 1) { throw "Failed optimizing testUncheckedLessThanOrEqualZero(). None of the tested case need to OSR Exit."; } } testUncheckedLessThanOrEqualZero();