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
This commit is contained in:
parent
fd9bab4ea2
commit
8c6679577e
@ -184,17 +184,9 @@ static void FinishOptimization(Handle<JSFunction> 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<SharedFunctionInfo> Compiler::BuildFunctionInfo(FunctionLiteral* literal,
|
||||
if (FLAG_lazy && allow_lazy) {
|
||||
Handle<Code> 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 {
|
||||
|
Loading…
Reference in New Issue
Block a user