blob: b8ee62f0c657277a894e6bdf3e7ab8894900f504 [file] [log] [blame]
mark.lam@apple.com76824132017-11-24 10:58:16 +00001var createDOMJITGetterBaseJSObject = $vm.createDOMJITGetterBaseJSObject;
2
sbarati@apple.com8ebc61d2017-10-04 01:53:18 +00003function assert(b, m) {
4 if (!b)
5 throw new Error("Bad:" + m);
6}
7
8function makePolyProtoObject() {
9 function foo() {
10 class C {
11 constructor() {
12 this._field = 25;
13 }
14 };
15 return new C;
16 }
17 for (let i = 0; i < 15; ++i)
18 foo();
19 return foo();
20}
21
22let proto = createDOMJITGetterBaseJSObject();
23let obj = makePolyProtoObject();
24obj.__proto__ = proto;
25
26function validate(x, v) {
27 assert(x.customGetter === v, x.customGetter);
28}
29noInline(validate);
30
31for (let i = 0; i < 1000; ++i)
32 validate(obj, proto);
33
34proto.foo = 25;
35for (let i = 0; i < 1000; ++i)
36 validate(obj, proto);
37
38Reflect.setPrototypeOf(obj, {});
39for (let i = 0; i < 1000; ++i) {
40 validate(obj, undefined);
41}