blob: b4bbbea9b49b483c9ed433116717b1a8da308028 [file] [edit]
// FTL tier coverage for FastArrayValues/Keys/Entries — force tier-up to FTL and verify correctness.
//@ runFTLNoCJIT
//@ runDefault("--useConcurrentJIT=1", "--thresholdForFTLOptimizeAfterWarmUp=10", "--thresholdForFTLOptimizeSoon=10", "--thresholdForOptimizeAfterWarmUp=10")
function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error('bad value: ' + actual + ' (expected ' + expected + ')');
}
function values(array) {
var sum = 0;
for (var v of array.values())
sum += v;
return sum;
}
noInline(values);
function keys(array) {
var sum = 0;
for (var k of array.keys())
sum += k;
return sum;
}
noInline(keys);
function entries(array) {
var sum = 0;
for (var [k, v] of array.entries())
sum += k * 1000 + v;
return sum;
}
noInline(entries);
var array = [];
for (var i = 0; i < 100; ++i)
array.push(i + 1);
var expectedValues = 0, expectedKeys = 0, expectedEntries = 0;
for (var i = 0; i < 100; ++i) {
expectedValues += i + 1;
expectedKeys += i;
expectedEntries += i * 1000 + (i + 1);
}
for (var i = 0; i < testLoopCount; ++i) {
shouldBe(values(array), expectedValues);
shouldBe(keys(array), expectedKeys);
shouldBe(entries(array), expectedEntries);
}