[ARM,MIPS] Skip slow tests
[WebKit-https.git] / JSTests / stress / ftl-put-by-id-setter-exception.js
1 function foo(o, p) {
2     var x = 100;
3     var result = 101;
4     try {
5         x = 102;
6         p = 103;
7         o.f = x + p;
8         o = 104;
9         p = 105;
10         x = 106;
11     } catch (e) {
12         return {outcome: "exception", values: [o, p, x]};
13     }
14     return {outcome: "return", values: [o, p, x]};
15 }
16
17 noInline(foo);
18
19 // Warm up foo() with polymorphic objects and getters.
20 for (var i = 0; i < 100000; ++i) {
21     var o = {};
22     o.__defineSetter__("f", function(value) {
23         this._f = value;
24     });
25     if (i & 1)
26         o["i" + i] = i; // Make it polymorphic.
27     var result = foo(o);
28     if (result.outcome !== "return")
29         throw "Error in loop: bad outcome: " + result.outcome;
30     if (result.values.length !== 3)
31         throw "Error in loop: bad number of values: " + result.values.length;
32     if (result.values[0] !== 104)
33         throw "Error in loop: bad values[0]: " + result.values[0];
34     if (result.values[1] !== 105)
35         throw "Error in loop: bad values[1]: " + result.values[1];
36     if (result.values[2] !== 106)
37         throw "Error in loop: bad values[2]: " + result.values[2];
38     if (o._f != 102 + 103)
39         throw "Error in loop: bad value of o._f: " + o._f;
40 }
41
42 // Now throw an exception.
43 var o = {};
44 o.__defineSetter__("f", function() {
45     throw "Error42";
46 });
47 var result = foo(o, 108);
48 if (result.outcome !== "exception")
49     throw "Error at end: bad outcome: " + result.outcome;
50 if (result.values.length !== 3)
51     throw "Error at end: bad number of values: " + result.values.length;
52 if (result.values[0] !== o)
53     throw "Error at end: bad values[0]: " + result.values[0];
54 if (result.values[1] !== 103)
55     throw "Error at end: bad values[1]: " + result.values[1];
56 if (result.values[2] !== 102)
57     throw "Error at end: bad values[2]: " + result.values[2];
58 if ("_f" in o)
59     throw "Error at end: o has _f.";
60