From 8c6679577e97bd8fa8af1f2c89583c8a0bf88c4c Mon Sep 17 00:00:00 2001 From: "sanjoy@chromium.org" Date: Thu, 5 Jul 2012 13:11:57 +0000 Subject: [PATCH] Remove some duplicated logic from compiler.cc. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10701060 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11991 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/compiler.cc | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/compiler.cc b/src/compiler.cc index d35532f045..1499277fb2 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -184,17 +184,9 @@ static void FinishOptimization(Handle function, int64_t start) { static bool MakeCrankshaftCode(CompilationInfo* info) { - // Test if we can optimize this function when asked to. We can only - // do this after the scopes are computed. - if (!V8::UseCrankshaft()) { - info->DisableOptimization(); - } - - // In case we are not optimizing simply return the code from - // the full code generator. - if (!info->IsOptimizing()) { - return FullCodeGenerator::MakeCode(info); - } + ASSERT(V8::UseCrankshaft()); + ASSERT(info->IsOptimizing()); + ASSERT(!info->IsCompilingForDebugging()); // We should never arrive here if there is not code object on the // shared function object. @@ -330,9 +322,19 @@ static bool MakeCrankshaftCode(CompilationInfo* info) { static bool GenerateCode(CompilationInfo* info) { - return info->IsCompilingForDebugging() || !V8::UseCrankshaft() ? - FullCodeGenerator::MakeCode(info) : - MakeCrankshaftCode(info); + bool is_optimizing = V8::UseCrankshaft() && + !info->IsCompilingForDebugging() && + info->IsOptimizing(); + if (is_optimizing) { + return MakeCrankshaftCode(info); + } else { + if (info->IsOptimizing()) { + // Have the CompilationInfo decide if the compilation should be + // BASE or NONOPT. + info->DisableOptimization(); + } + return FullCodeGenerator::MakeCode(info); + } } @@ -762,8 +764,7 @@ Handle Compiler::BuildFunctionInfo(FunctionLiteral* literal, if (FLAG_lazy && allow_lazy) { Handle code = info.isolate()->builtins()->LazyCompile(); info.SetCode(code); - } else if ((V8::UseCrankshaft() && MakeCrankshaftCode(&info)) || - (!V8::UseCrankshaft() && FullCodeGenerator::MakeCode(&info))) { + } else if (GenerateCode(&info)) { ASSERT(!info.code().is_null()); scope_info = ScopeInfo::Create(info.scope(), info.zone()); } else {