mirror of
https://github.com/tc39/test262.git
synced 2025-05-08 00:40:28 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
428 lines
16 KiB
JavaScript
428 lines
16 KiB
JavaScript
//@ 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();
|