[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / dfg-try-catch-wrong-value-recovery-on-ic-miss.js
1 function assert(b) {
2     if (!b)
3         throw new Error("bad value")
4 }
5 noInline(assert);
6
7 let oThrow = {
8     x: 20,
9     y: 40,
10     z: 50,
11     get f() { throw new Error("Hello World!"); }
12 };
13
14 let o1 = {
15     x: 20,
16     f: 40
17 };
18
19 let o2 = {
20     x: 20,
21     y: 50,
22     f: 500,
23     get f() { return 20; }
24 };
25
26 function foo(f) {
27     let o = f();
28     try {
29         o = o.f;
30     } catch(e) {
31         assert(o === oThrow); // Make sure this is not undefined.
32     }
33 }
34 noInline(foo);
35
36 let i;
37 let flag = false;
38 function f() {
39     if (flag)
40         return oThrow;
41     if (i % 2)
42         return o1;
43     return o2;
44 }
45 noInline(f);
46 for (i = 0; i < 10000; i++) {
47     foo(f);
48 }
49 flag = true;
50 foo(f);