[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / domjit-getter-try-catch-getter-as-get-by-id-register-restoration.js
1 var createDOMJITGetterComplexObject = $vm.createDOMJITGetterComplexObject;
2
3 function assert(b) {
4     if (!b) throw new Error("bad value");
5 }
6 noInline(assert);
7
8 let i;
9 var o1 = createDOMJITGetterComplexObject();
10 o1.x = "x";
11
12 var o2 = {
13     customGetter: 40
14 }
15
16 var o3 = {
17     x: 100,
18     customGetter: "f"
19 }
20
21 function bar(i) {
22     if (i === -1000)
23         return o1;
24
25     if (i % 2)
26         return o3;
27     else
28         return o2;
29 }
30 noInline(bar);
31
32 function foo(i) {
33     var o = bar(i);
34     let v;
35     let v2;
36     let v3;
37     try {
38         v2 = o.x;
39         v = o.customGetter + v2;
40     } catch(e) {
41         assert(v2 === "x");
42         assert(o === o1);
43     }
44 }
45 noInline(foo);
46
47 foo(i);
48 for (i = 0; i < 1000; i++)
49     foo(i);
50
51 o1.enableException();
52 i = -1000;
53 for (let j = 0; j < 1000; j++)
54     foo(i);