This test checks whether funky scope chains created by catch blocks
are properly protected from GC. It should not crash.
<script>
if (window.testRunner)
    testRunner.dumpAsText();

function Test_Error() {
    for( var i = 0; i <= 5000; i++ ) {
        try {
            throw new Error("Ungraceful Error");
        }
        catch (e) {
            try { 
                throw new Error("Graceful Error"); 
            } 
            catch (e)  { 
                Test_Error_isPrime(147457); //Do something CPU-intensive
            }
            finally{
                Test_Error_isPrime(147457); //Do something CPU-intensive
            }
        }
    }
}
function Test_Error_isPrime(PrimeTest) {
    for(i=2;i<=Math.sqrt(147457)+1;i++) {
        if (PrimeTest % i == 0) {
            return false;
        }
    }
    return true;
}
Test_Error();
</script>
