Index: src/compiler.cc |
diff --git a/src/compiler.cc b/src/compiler.cc |
index 6292d65a8604c5abd32e46425e13e5eb623b6dd2..e2cd16ae29c27c43caf494fc9d34551d6f016f6e 100644 |
--- a/src/compiler.cc |
+++ b/src/compiler.cc |
@@ -348,10 +348,8 @@ bool UseTurboFan(Handle<SharedFunctionInfo> shared) { |
passes_turbo_filter; |
} |
-bool ShouldUseIgnition(CompilationInfo* info) { |
- DCHECK(info->has_shared_info()); |
- Handle<SharedFunctionInfo> shared = info->shared_info(); |
- |
+bool ShouldUseIgnition(Handle<SharedFunctionInfo> shared, |
+ bool marked_as_debug) { |
// Code which can't be supported by the old pipeline should use Ignition. |
if (shared->must_use_ignition_turbo()) return true; |
@@ -370,7 +368,7 @@ bool ShouldUseIgnition(CompilationInfo* info) { |
// When requesting debug code as a replacement for existing code, we provide |
// the same kind as the existing code (to prevent implicit tier-change). |
- if (info->is_debug() && shared->is_compiled()) { |
+ if (marked_as_debug && shared->is_compiled()) { |
return !shared->HasBaselineCode(); |
} |
@@ -381,6 +379,11 @@ bool ShouldUseIgnition(CompilationInfo* info) { |
return FLAG_ignition; |
} |
+bool ShouldUseIgnition(CompilationInfo* info) { |
+ DCHECK(info->has_shared_info()); |
+ return ShouldUseIgnition(info->shared_info(), info->is_debug()); |
+} |
+ |
bool UseAsmWasm(DeclarationScope* scope, Handle<SharedFunctionInfo> shared_info, |
bool is_debug) { |
return FLAG_validate_asm && scope->asm_module() && |
@@ -845,8 +848,12 @@ MaybeHandle<Code> GetOptimizedCode(Handle<JSFunction> function, |
DCHECK(!isolate->has_pending_exception()); |
PostponeInterruptsScope postpone(isolate); |
bool use_turbofan = UseTurboFan(shared) || ignition_osr; |
+ bool has_script = shared->script()->IsScript(); |
+ // BUG(5946): This DCHECK is necessary to make certain that we won't tolerate |
+ // the lack of a script without bytecode. |
+ DCHECK_IMPLIES(!has_script, ShouldUseIgnition(shared, false)); |
std::unique_ptr<CompilationJob> job( |
- use_turbofan ? compiler::Pipeline::NewCompilationJob(function) |
+ use_turbofan ? compiler::Pipeline::NewCompilationJob(function, has_script) |
: new HCompilationJob(function)); |
CompilationInfo* info = job->info(); |
ParseInfo* parse_info = info->parse_info(); |
@@ -1069,17 +1076,10 @@ MaybeHandle<Code> GetLazyCode(Handle<JSFunction> function) { |
switch (Compiler::NextCompilationTier(*function)) { |
case Compiler::BASELINE: { |
- if (FLAG_trace_opt) { |
- PrintF("[recompiling function "); |
- function->ShortPrint(); |
- PrintF( |
- " to baseline eagerly (shared function marked for tier up)]\n"); |
- } |
- |
- Handle<Code> code; |
- if (GetBaselineCode(function).ToHandle(&code)) { |
- return code; |
- } |
+ // We don't try to handle baseline here because GetBaselineCode() |
+ // doesn't handle top-level code. We aren't supporting |
+ // the hybrid pipeline going forward (where Ignition is a first |
+ // tier followed by full-code). |
break; |
} |
case Compiler::OPTIMIZED: { |