<p>This page tests for regressions against http://bugs.webkit.org/show_bug.cgi?id=15785
REGRESSION(r27344): Crash on load at finance.yahoo.com</p>
<p>If the test passes, you'll see a PASS message below.</p>
<pre id="console"></pre>

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

function log(s)
{
    document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
}

// Make a closure with a function that takes the slow path to variable lookup.
var f = eval("(function (x) { return function() { return x; } })()");

// Force GC.
if (this.GCController)
    GCController.collect();
else {
    for (var i = 0; i < 10000; ++i) {
        ({ });
    }
}

// Call the function.
f();

log("PASS: You didn't crash.\n");

</script>
