function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } noInline(shouldBe); function test1(array) { for (var i = 0; i < 5; ++i) { array[0] = array[0] + 1; } return array; } noInline(test1); function test2(array) { for (var i = 0; i < 5; ++i) { array[0] = array[0] + 1; } return array; } noInline(test2); function test3(array) { for (var i = 0; i < 5; ++i) { array[0] = array[0] + 1; } return array; } noInline(test3); for (var i = 0; i < 1e5; ++i) { shouldBe(String(test1([0, 1, 2, 3, 4])), `5,1,2,3,4`); shouldBe(String(test2([0.1, 1.1, 2.1, 3.1, 4.1])), `5.1,1.1,2.1,3.1,4.1`); shouldBe(String(test3(['C', 'o', 'c', 'o', 'a'])), `C11111,o,c,o,a`); }