//@ 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);