From 0bf546f243af81f98c58e0574c177d7497be929a Mon Sep 17 00:00:00 2001 From: "kmillikin@chromium.org" Date: Wed, 4 Nov 2009 18:39:44 +0000 Subject: [PATCH] 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 --- src/compiler.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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. -- 2.7.4