blob: 66e8cbb613b74558eed96fc988ae727c1fc79428 [file] [log] [blame]
//@ runFTLNoCJIT
var o1 = {
i: 65,
valueOf: function() { return this.i; }
};
result = 0;
function foo(a) {
var result = String.fromCharCode(a);
// Busy work just to allow the DFG and FTL to optimize this. If the above causes
// us to speculation fail out to the baseline, this busy work will take a lot longer
// to run.
// This loop below also gets the DFG to compile this function sooner.
var count = 0;
for (var i = 0; i < 1000; i++)
count++;
return result + count;
}
noInline(foo);
var iterations;
var expectedResult;
if (this.window) {
// The layout test doesn't like too many iterations and may time out.
iterations = 10000;
expectedResult = 10001;
} else {
iterations = 100000;
expectedResult = 100001;
}
for (var i = 0; i <= iterations; i++) {
var resultStr;
if (i % 2 == 2)
resultStr = foo('65');
else if (i % 2 == 1)
resultStr = foo(o1);
else
resultStr = foo(65);
if (resultStr == 'A1000')
result++;
}
if (result != expectedResult)
throw "Bad result: " + result;