Fix a bug where if a non-lazily-compiled function is a candidate for
authorkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 4 Nov 2009 18:39:44 +0000 (18:39 +0000)
committerkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 4 Nov 2009 18:39:44 +0000 (18:39 +0000)
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

index fed6d7a..32ce6f5 100644 (file)
@@ -503,6 +503,7 @@ Handle<JSFunction> 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<JSFunction> 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.