[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / ftl-get-by-id-getter-exception-no-catch.js
1 function foo(o, p) {
2     var x = 100;
3     var result = 101;
4     x = 102;
5     p = 103;
6     result = o.f;
7     o = 104;
8     p = 105;
9     x = 106;
10     return {outcome: "return", values: [o, p, x, result]};
11 }
12
13 noInline(foo);
14
15 // Warm up foo() with polymorphic objects and getters.
16 for (var i = 0; i < 100000; ++i) {
17     var o = {};
18     o.__defineGetter__("f", function() {
19         return 107;
20     });
21     if (i & 1)
22         o["i" + i] = i; // Make it polymorphic.
23     var result = foo(o);
24     if (result.outcome !== "return")
25         throw "Error in loop: bad outcome: " + result.outcome;
26     if (result.values.length !== 4)
27         throw "Error in loop: bad number of values: " + result.values.length;
28     if (result.values[0] !== 104)
29         throw "Error in loop: bad values[0]: " + result.values[0];
30     if (result.values[1] !== 105)
31         throw "Error in loop: bad values[1]: " + result.values[1];
32     if (result.values[2] !== 106)
33         throw "Error in loop: bad values[2]: " + result.values[2];
34     if (result.values[3] !== 107)
35         throw "Error in loop: bad values[3]: " + result.values[3];
36 }
37
38 // Now throw an exception.
39 var result;
40 try {
41     var o = {};
42     o.__defineGetter__("f", function() {
43         throw "Error42";
44     });
45     result = foo(o, 108);
46 } catch (e) {
47     if (e != "Error42")
48         throw "Error at end: bad exception: " + e;
49     result = {outcome: "exception"};
50 }
51 if (result.outcome !== "exception")
52     throw "Error at end: bad outcome: " + result.outcome;
53