[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / arity-check-ftl-throw.js
1 // Require lots of arguments so that arity fixup will need a lot of stack, making
2 // it prone to stack overflow.
3 var script = "";
4 for (var i = 0; i < 128; ++i)
5     script += "dummy, "
6 script += "dummy";
7 var g = new Function(script, "return arguments;"); // Ensure that arguments are observed.
8
9 function f(recursionCount)
10 {
11     if (!recursionCount)
12         return;
13
14     // Use too few arguments to force arity fixup.
15     g();
16
17     f(--recursionCount);
18 }
19
20 noInline(g);
21 noInline(f);
22
23 // Ensure that f and g get optimized.
24 for (var i = 0; i < 1000000; ++i) {
25     // Recurse once to ensure profiling along all control flow paths.
26     f(1);
27 }
28
29 try {
30     // Recurse enough times to trigger a stack overflow exception.
31     f(1000000);
32 } catch(e) {
33     if (! (e instanceof RangeError))
34         throw "bad value for e";
35 }