var createDOMJITGetterBaseJSObject = $vm.createDOMJITGetterBaseJSObject; | |
function assert(b, m) { | |
if (!b) | |
throw new Error("Bad:" + m); | |
} | |
function makePolyProtoObject() { | |
function foo() { | |
class C { | |
constructor() { | |
this._field = 25; | |
} | |
}; | |
return new C; | |
} | |
for (let i = 0; i < 15; ++i) | |
foo(); | |
return foo(); | |
} | |
let proto = createDOMJITGetterBaseJSObject(); | |
let obj = makePolyProtoObject(); | |
obj.__proto__ = proto; | |
function validate(x, v) { | |
assert(x.customGetter === v, x.customGetter); | |
} | |
noInline(validate); | |
for (let i = 0; i < 1000; ++i) | |
validate(obj, proto); | |
proto.foo = 25; | |
for (let i = 0; i < 1000; ++i) | |
validate(obj, proto); | |
Reflect.setPrototypeOf(obj, {}); | |
for (let i = 0; i < 1000; ++i) { | |
validate(obj, undefined); | |
} |