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