<p>This page tests for a crash when exceeding the limit on declared global variables.</p>
<p>If the test passes, you'll see a PASS message below.</p>

<pre id="console"></pre>

<script>
if (window.testRunner)
    testRunner.dumpAsText();

var pass = "PASS: Existing global var survived.\n";

document.write("<" + "script>");
for (var i = 0; i < 7 * 1024; ++i)
    document.write("var v" + i + ";\n");
document.write("<" + "/script>");

document.write("<" + "script>");
for (; i < 9 * 1024; ++i)
    document.write("var v" + i + ";\n");
    document.write("document.getElementById('console').appendChild(document.createTextNode(pass));");
document.write("<" + "/script>");
</script>
