function makeString(char) { var result = ""; for (var i = 0; i < 10; ++i) result += char; return result; } var array = [ "a", "b", "c", "d" ]; for (var i = 0; i < array.length; ++i) array[i] = makeString(array[i]); function foo(array, s) { for (var i = 0; i < array.length; ++i) { if (array[i] === s) return i; } return null; } noInline(foo); var array2 = [ "a", "b", "c", "d", "e" ]; for (var i = 0; i < array2.length; ++i) array2[i] = makeString(array2[i]); for (var i = 0; i < 100000; ++i) { var index = i % array2.length; var result = foo(array, array2[index]); var expected = index >= array.length ? null : index if (result !== expected) throw "Error: bad result: " + result; }