blob: be229721803c8465f81d4fcaf329a9542c248c97 [file] [log] [blame]
//@ 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();