function assert(b, m) {
    if (!b)
        throw new Error("Bad:" + m);
}

function makePolyProtoObject() {
    function foo() {
        class C {
            constructor() { this._field = 42; }
        };
        return new C;
    }
    for (let i = 0; i < 15; ++i)
        foo();
    return foo();
}

let global;

function performSet(o) {
    o.p = 20;
}

let items = [];
for (let i = 0; i < 25; ++i) {
    let item = makePolyProtoObject();
    item.__proto__ = null;
    items.push(item);
}

let start = Date.now();
for (let i = 0; i < 100000; ++i) {
    for (let i = 0; i < items.length; ++i) {
        let obj = items[i];
        performSet(obj);
        assert(Object.hasOwnProperty.call(obj, "p"));
        assert(obj.p === 20);
        assert(obj._field === 42);
    }

}
if (false)
    print(Date.now() - start);
