function shouldBe(actual, expected)
{
    if (actual !== expected)
        throw new Error('bad value: ' + actual);
}

(function () {
    function indexOf(array, value)
    {
        return array.indexOf(value);
    }
    noInline(indexOf);

    var array = [];
    for (var i = 0; i < 100; ++i)
        array.push(String(i));

    for (var i = 0; i < 1e5; ++i)
        shouldBe(indexOf(array, "42"), 42);
}());

(function () {
    function indexOf(array, value)
    {
        return array.indexOf(value);
    }
    noInline(indexOf);

    var array = [];
    for (var i = 0; i < 100; ++i) {
        array.push(String(i + 0.5));
        array.push({});
    }

    for (var i = 0; i < 1e5; ++i)
        shouldBe(indexOf(array, "42.5"), 42 * 2);
}());
