//@ skip if $memoryLimited | |
function assert(b) { | |
if (!b) | |
throw new Error("Bad assertion."); | |
} | |
noInline(assert); | |
let objs = []; | |
let keyPool = []; | |
const numKeys = 800; | |
for (let i = 0; i < numKeys; ++i) | |
keyPool.push(i + "foo"); | |
for (let i = 0; i < 10000; i++) { | |
let num = (Math.random() * numKeys) | 0; | |
let o = {}; | |
for (let i = 0; i < num; ++i) { | |
o[keyPool[i]] = 25; | |
} | |
objs.push(o); | |
} | |
function foo(o) { | |
let props = Object.getOwnPropertyNames(o); | |
for (let i = 0; i < props.length; ++i) { | |
let s = props[i]; | |
assert(o.hasOwnProperty(s)); | |
} | |
} | |
noInline(foo); | |
let start = Date.now(); | |
for (let o of objs) { | |
foo(o); | |
} | |
const verbose = false; | |
if (verbose) | |
print(Date.now() - start); |