[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / catch-set-argument-speculation-failure.js
1 "use strict";
2
3 let flag = true;
4 function o() {
5     if (flag)
6         return {x:20};
7     return {y:20, x:20};
8 }
9 noInline(o);
10
11 let counter = 0;
12 function e() {
13     if ((++counter) % 50 === 0)
14         throw new Error;
15 }
16 noInline(e);
17
18 let counter2 = 0;
19 function e2() {
20     if ((++counter2) % 2 === 0)
21         throw new Error;
22 }
23 noInline(e2);
24
25 function escape(){ }
26 noInline(escape);
27
28 function baz(o) {
29     try {
30         e();
31         escape(o.x);
32     } catch(e) {
33         escape(o.x);
34         e2();
35     } finally {
36         o.x;
37     }
38 }
39 noInline(baz);
40
41 {
42     let o = {x:20};
43     function run() {
44         for (let i = 0; i < 1000; ++i) {
45             try {
46                 baz(o);
47             } catch { }
48         }
49     }
50     run();
51     o = {y:40, x:20};
52     run();
53 }