Invalid flags in a RegExp literal should be an early SyntaxError
[WebKit-https.git] / JSTests / stress / ftl-call-varargs-bad-callee-exception-interesting-live-state.js
1 function foo(f, p, args) {
2     var x = 100;
3     var result = 101;
4     var pf = p.g;
5     try {
6         x = 102;
7         pf++;
8         result = f.apply(this, args);
9         f = 104;
10         pf++;
11         x = 106;
12     } catch (e) {
13         return {outcome: "exception", values: [f, pf, x, result]};
14     }
15     return {outcome: "return", values: [f, pf, x, result]};
16 }
17
18 noInline(foo);
19
20 function bar(a, b, c) {
21     return a + b + c;
22 }
23
24 noInline(bar);
25
26 // Warm up foo().
27 for (var i = 0; i < 100000; ++i) {
28     var result = foo(bar, {g:200}, [105, 1, 1]);
29     if (result.outcome !== "return")
30         throw "Error in loop: bad outcome: " + result.outcome;
31     if (result.values.length !== 4)
32         throw "Error in loop: bad number of values: " + result.values.length;
33     if (result.values[0] !== 104)
34         throw "Error in loop: bad values[0]: " + result.values[0];
35     if (result.values[1] !== 202)
36         throw "Error in loop: bad values[1]: " + result.values[1];
37     if (result.values[2] !== 106)
38         throw "Error in loop: bad values[2]: " + result.values[2];
39     if (result.values[3] !== 107)
40         throw "Error in loop: bad values[3]: " + result.values[3];
41 }
42
43 // Now throw an exception.
44 var result = foo("hello", {g:300}, [105, 1, 1]);
45 if (result.outcome !== "exception")
46     throw "Error at end: bad outcome: " + result.outcome;
47 if (result.values.length !== 4)
48     throw "Error at end: bad number of values: " + result.values.length;
49 if (result.values[0] !== "hello")
50     throw "Error at end: bad values[0]: " + result.values[0];
51 if (result.values[1] !== 301)
52     throw "Error at end: bad values[1]: " + result.values[1];
53 if (result.values[2] !== 102)
54     throw "Error at end: bad values[2]: " + result.values[2];
55 if (result.values[3] !== 101)
56     throw "Error at end: bad values[3]: " + result.values[3];
57