[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / ftl-call-varargs-exception-no-catch.js
1 function foo(f, p, args) {
2     var x = 100;
3     var result = 101;
4     x = 102;
5     p = 103;
6     result = f.apply(this, args);
7     f = 104;
8     p = 105;
9     x = 106;
10     return {outcome: "return", values: [f, p, x, result]};
11 }
12
13 noInline(foo);
14
15 function bar(a, b, c) {
16     return a + b + c;
17 }
18
19 noInline(bar);
20
21 // Warm up foo().
22 for (var i = 0; i < 100000; ++i) {
23     var result = foo(bar, null, [105, 1, 1]);
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     bar = function() {
42         throw "Error42";
43     }
44     var result = foo(bar, 108, [105, 1, 1]);
45 } catch (e) {
46     if (e != "Error42")
47         throw "Error at end: bad exception: " + e;
48     result = {outcome: "exception"};
49 }
50 if (result.outcome !== "exception")
51     throw "Error at end: bad outcome: " + result.outcome;