mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 14:30:27 +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)
55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
function opaqueAbs(value)
|
|
{
|
|
return Math.abs(value)|0;
|
|
}
|
|
noInline(opaqueAbs);
|
|
|
|
for (let i = 0; i < 1e4; ++i) {
|
|
var positiveResult = opaqueAbs(i);
|
|
if (positiveResult !== i)
|
|
throw "Incorrect result at i = " + i + " result = " + positiveResult;
|
|
var negativeResult = opaqueAbs(-i);
|
|
if (negativeResult !== i)
|
|
throw "Incorrect result at -i = " + -i + " result = " + negativeResult;
|
|
}
|
|
|
|
|
|
var intMax = 2147483647;
|
|
var intMin = 2147483647;
|
|
|
|
var intMaxResult = opaqueAbs(intMax);
|
|
if (intMaxResult !== intMax)
|
|
throw "Incorrect result at intMax result = " + intMaxResult;
|
|
var intMaxResult = opaqueAbs(intMin);
|
|
if (intMaxResult !== intMin)
|
|
throw "Incorrect result at intMax result = " + intMaxResult;
|
|
|
|
// Numbers around IntMax/IntMin. Numbers outside the bounds are doubles and opaqueAbs()
|
|
// has to OSR Exit to handle them correctly.
|
|
for (let i = intMax - 1e4; i < intMax + 1e4; ++i) {
|
|
var positiveResult = opaqueAbs(i);
|
|
if (positiveResult !== (i|0))
|
|
throw "Incorrect result at i = " + i + " result = " + positiveResult;
|
|
var negativeResult = opaqueAbs(-i);
|
|
if (negativeResult !== (i|0))
|
|
throw "Incorrect result at -i = " + -i + " result = " + negativeResult;
|
|
}
|
|
|
|
// Edge cases and exits.
|
|
if (opaqueAbs(NaN) !== 0)
|
|
throw "opaqueAbs(NaN) failed.";
|
|
if (opaqueAbs(Infinity) !== 0)
|
|
throw "opaqueAbs(Infinity) failed.";
|
|
if (opaqueAbs(-Infinity) !== 0)
|
|
throw "opaqueAbs(-Infinity) failed.";
|
|
if (opaqueAbs(null) !== 0)
|
|
throw "opaqueAbs(null) failed.";
|
|
if (opaqueAbs(undefined) !== 0)
|
|
throw "opaqueAbs(undefined) failed.";
|
|
if (opaqueAbs(true) !== 1)
|
|
throw "opaqueAbs(true) failed.";
|
|
if (opaqueAbs(false) !== 0)
|
|
throw "opaqueAbs(false) failed.";
|
|
if (opaqueAbs({foo:"bar"}) !== 0)
|
|
throw "opaqueAbs({foo:'bar'}) failed.";
|