test262/implementation-contributed/javascriptcore/stress/compare-eq-on-null-and-undefined-optimized-in-constant-folding.js
test262-automation e9a5a7f918 [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) (#1620)
* [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)
2018-07-03 15:59:58 -04:00

70 lines
1.8 KiB
JavaScript

"use strict"
function unreachableCodeTest() {
var a;
var b = null;
if (b) {
a = 5;
}
return a == b;
}
noInline(unreachableCodeTest);
for (let i = 0; i < 1e4; ++i) {
if (!unreachableCodeTest())
throw "Failed unreachableCodeTest() with i = " + i;
}
function inlinedCompareToNull(a) {
return a == null;
}
function inlinedComparedToUndefined(a) {
return a == undefined;
}
// Warmup. Litter the profile with every types.
function warmupInlineFunctions() {
let returnValue = 0;
for (let i = 0; i < 1e4; ++i) {
returnValue += inlinedCompareToNull("foo");
returnValue += inlinedCompareToNull(null);
returnValue += inlinedCompareToNull(Math);
returnValue += inlinedCompareToNull(5);
returnValue += inlinedCompareToNull(5.5);
returnValue += inlinedComparedToUndefined("foo");
returnValue += inlinedComparedToUndefined(null);
returnValue += inlinedComparedToUndefined(Math);
returnValue += inlinedComparedToUndefined(5);
returnValue += inlinedComparedToUndefined(5.5);
}
return returnValue;
}
noInline(warmupInlineFunctions);
warmupInlineFunctions();
function testInlineFunctions(undefinedArg, nullArg) {
if (inlinedCompareToNull("foo"))
throw "Failed inlinedCompareToNull(\"foo\")";
if (!inlinedCompareToNull(null))
throw "Failed !inlinedCompareToNull(null)";
if (!inlinedCompareToNull(undefined))
throw "Failed !inlinedCompareToNull(undefined)";
if (!inlinedCompareToNull(undefinedArg))
throw "Failed !inlinedCompareToNull(undefinedArg)";
if (!inlinedCompareToNull(nullArg))
throw "Failed !inlinedCompareToNull(nullArg)";
}
noInline(testInlineFunctions);
for (let i = 0; i < 1e4; ++i) {
testInlineFunctions(undefined, null);
}