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 = []; var object = {}; for (var i = 0; i < 100; ++i) array.push({}); array.push(object); for (var i = 0; i < 1e5; ++i) shouldBe(indexOf(array, object), 100); }()); (function () { function indexOf(array, value) { return array.indexOf(value); } noInline(indexOf); var array = []; var object = {}; for (var i = 0; i < 100; ++i) { array.push(42); array.push({}); array.push(String(i)); } array.push(object); for (var i = 0; i < 1e5; ++i) shouldBe(indexOf(array, object), 100 * 3); }());