[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / ftl-try-catch-setter-throw.js
1 function foo(o, a) {
2     let x = o.g;
3     let y = o.y;
4     try {
5         o.f = 20;
6     } catch(e) {
7         return x + y + 1;
8     }
9     return x + y;
10 }
11
12 function assert(b) {
13     if (!b)
14         throw new Error("bad value")
15 }
16 noInline(assert);
17
18 noInline(foo);
19 var flag = false;
20 function f(arg1, arg2, arg3) {
21     if (flag)
22         throw new Error("blah")
23     return arg1;
24 }
25 noInline(f);
26 let o1 = {
27     g: 20,
28     y: 40,
29     f: null
30 };
31
32 let o2 = {
33     g: "g",
34     y: "y",
35     set f(v) { if (flag) throw new Error("blah"); }
36 }
37
38 for (let i = 0; i < 100000; i++) {
39     if (i % 2) {
40         assert(foo(o1) === 60);
41     } else {
42         assert(foo(o2) === "gy");
43     }
44 }
45 flag = true;
46 assert(foo(o2) === "gy1");