<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.layoutTestController)
    layoutTestController.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>
