We should be able to inline getter/setter calls inside an inline cache even when...
[WebKit-https.git] / Source / JavaScriptCore / tests / stress / try-catch-getter-as-get-by-id.js
1 function assert(b) {
2     if (!b) throw new Error("b");
3 }
4 noInline(assert);
5
6
7 let i;
8 var o1 = { 
9     get f() {
10         if (i === -1000)
11             throw new Error("hello");
12         return 20;
13     }
14 };
15
16 var o2 = {
17     f: 40
18 }
19
20 var o3 = { 
21     x: 100,
22     f: 50 
23 }
24
25 function bar(i) {
26     if (i === -1000)
27         return o1;
28
29     if (i % 2)
30         return o3;
31     else
32         return o2;
33 }
34 noInline(bar);
35
36 function foo(i) {
37     var o = bar(i);
38     var v;
39     try {
40         v = o.f
41     } catch(e) {
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 i = -1000;
52 for (let j = 0; j < 1000; j++)
53     foo(i);