From: kmillikin@chromium.org Date: Wed, 4 Nov 2009 18:39:44 +0000 (+0000) Subject: Fix a bug where if a non-lazily-compiled function is a candidate for X-Git-Tag: upstream/4.7.83~23007 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0bf546f243af81f98c58e0574c177d7497be929a;p=platform%2Fupstream%2Fv8.git Fix a bug where if a non-lazily-compiled function is a candidate for toplevel compilation and the toplevel compiler cannot handle the function, we would erroneously signal a stack overflow instead of falling back on the optimizing compiler. Review URL: http://codereview.chromium.org/366005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/compiler.cc b/src/compiler.cc index fed6d7a..32ce6f5 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -503,6 +503,7 @@ Handle Compiler::BuildBoilerplate(FunctionLiteral* literal, } // Generate code and return it. + bool is_compiled = false; if (FLAG_fast_compiler && literal->try_fast_codegen()) { CodeGenSelector selector; CodeGenSelector::CodeGenTag code_gen = selector.Select(literal); @@ -510,9 +511,12 @@ Handle Compiler::BuildBoilerplate(FunctionLiteral* literal, code = FastCodeGenerator::MakeCode(literal, script, false); // Not eval. + is_compiled = true; } - ASSERT(code_gen == CodeGenSelector::NORMAL); - } else { + } + + if (!is_compiled) { + // We didn't try the fast compiler, or we failed to select it. code = CodeGenerator::MakeCode(literal, script, false); // Not eval.