function assert(b) { | |
if (!b) | |
throw new Error("Bad assertion.") | |
} | |
noInline(assert); | |
let objs = [ | |
{f: 50}, | |
{f: 50, g: 70}, | |
{g: 50, f: 70}, | |
{h: 50, f: 70}, | |
{z: 50, f: 70}, | |
{k: 50, f: 70}, | |
]; | |
let s1 = Symbol(); | |
let s2 = Symbol(); | |
for (let o of objs) | |
o[s1] = "foo"; | |
function foo(o) { | |
assert(o.hasOwnProperty("f")); | |
assert(!o.hasOwnProperty("ff")); | |
assert(o.hasOwnProperty(s1)); | |
assert(!o.hasOwnProperty(s2)); | |
} | |
noInline(foo); | |
for (let i = 0; i < 40000; ++i) { | |
foo(objs[i % objs.length]); | |
} |