92ce3e1564ca39b3c855d406cce3236aa0cdcb6f
[WebKit-https.git] / LayoutTests / inspector / debugger / debugger-activation-crash2.html
1 <script src="../../http/tests/inspector/inspector-test.js"></script>
2 <script src="../../http/tests/inspector/debugger-test.js"></script>
3
4 <script>
5 var closures = [];
6 function makeClosure() {
7     var v1, v2, v3, v4, v5, v6, v7, v8, v9, v10; // Make a lot of potentially captured variables.
8     return function () { 
9         var x = v1; // But only capture one in optimizing compiles.
10         return x;
11     };
12 }
13
14 for (var i = 0; i < 100; ++i) {
15     closures.push(makeClosure());
16 }
17
18 closures[0](); // Force compilation.
19 function testFunction() {
20     closures[0](); // Force recompilation.
21     
22     // At this point, closures[0] captured 1 variable but thinks it captured 10.
23     // If so, stopping at a breakpoint should make it crash.
24 }
25
26 function test() {
27     InspectorTest.startDebuggerTest(step1);
28
29     function step1()
30     {
31         InspectorTest.showScriptSource("debugger-activation-crash2.html", step2);
32     }
33
34     function step2(sourceFrame)
35     {
36         InspectorTest.addResult("Script source was shown.");
37         InspectorTest.setBreakpoint(sourceFrame, 8, "", true);
38         InspectorTest.runTestFunctionAndWaitUntilPaused(step3);
39     }
40
41     function step3(callFrames)
42     {
43         InspectorTest.captureStackTrace(callFrames);
44         InspectorTest.completeDebuggerTest();
45     }
46 }
47
48 window.onload = runTest;
49 </script>
50
51 <p>
52 Tests for a crash when paused at a breakpoint caused by inaccurate Activation records.
53 <a href="https://bugs.webkit.org/show_bug.cgi?id=57120">Bug 57120</a>
54 </p>