[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / create-this-structure-change.js
1 var globalO;
2
3 function Foo()
4 {
5     this.g = 42;
6 }
7
8 class RealBar extends Foo {
9     constructor()
10     {
11         var o = globalO;
12         var result = o.f;
13         super();
14         result += o.f;
15         this.result = result;
16     }
17 }
18
19 var doIntercept = false;
20 var didExecuteFGetter = false;
21 var Bar = new Proxy(RealBar, {
22     get: function(target, property, receiver) {
23         if (property == "prototype" && doIntercept) {
24             globalO.__defineGetter__("f", function() {
25                 didExecuteFGetter = true;
26                 return 666;
27             });
28         }
29         return Reflect.get(target, property, receiver);
30     }
31 });
32
33 noInline(RealBar);
34
35 for (var i = 0; i < 10000; ++i) {
36     (function() {
37         globalO = {f:43};
38         var result = new Bar().result;
39         if (result != 86)
40             throw "bad result in loop: " + result;
41     })();
42 }
43
44 doIntercept = true;
45 globalO = {f:43};
46 var result = new Bar().result;
47 if (result != 709)
48     throw "bad result at end: " + result;
49 if (!didExecuteFGetter)
50     throw "did not execute f getter";
51