function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } function test(object) { return Object.keys(object); } noInline(test); var object = {}; for (var i = 0; i < 1e6; ++i) { var result = test(object); shouldBe(result.length, 0); shouldBe(result[0], undefined); result[0] = i; shouldBe(result.length, 1); shouldBe(result[0], i); } object.Cocoa = 42; for (var i = 0; i < 1e6; ++i) { var result = test(object); shouldBe(result.length, 1); shouldBe(result[0], 'Cocoa'); }