function shouldBe(actual, expected) | |
{ | |
if (actual !== expected) | |
throw new Error('bad value: ' + actual); | |
} | |
var k = -1; | |
var o1 = {}; | |
o1[k] = true; | |
var o2 = {}; | |
function test1(o) | |
{ | |
return k in o; | |
} | |
noInline(test1); | |
function test2(o) | |
{ | |
return k in o; | |
} | |
noInline(test2); | |
for (var i = 0; i < 1e6; ++i) | |
shouldBe(test1(o1), true); | |
for (var i = 0; i < 1e6; ++i) | |
shouldBe(test1(o2), false); | |
for (var i = 0; i < 1e6; ++i) | |
shouldBe(test2(o2), false); | |
for (var i = 0; i < 1e6; ++i) | |
shouldBe(test2(o1), true); |