Chromium Code Reviews| Index: src/compiler.cc |
| diff --git a/src/compiler.cc b/src/compiler.cc |
| index fa8201bf54158f58eb3d9f154e0988a213826ca3..5b5cda7cd9feff69b87f64aa932cef19b9bb81cf 100644 |
| --- a/src/compiler.cc |
| +++ b/src/compiler.cc |
| @@ -578,6 +578,14 @@ void SetExpectedNofPropertiesFromEstimate(Handle<SharedFunctionInfo> shared, |
| } |
| +static void MaybeDisableOptimization(Handle<SharedFunctionInfo> shared_info, |
|
Sven Panne
2014/10/29 09:12:55
I think this should be folded into DisableOptimiza
wingo
2014/11/12 08:50:51
So, I did the renames to {set_,}disable_optimizati
|
| + BailoutReason bailout_reason) { |
| + if (bailout_reason != kNoReason) { |
| + shared_info->DisableOptimization(bailout_reason); |
| + } |
| +} |
| + |
| + |
| // Sets the function info on a function. |
| // The start_position points to the first '(' character after the function name |
| // in the full script source. When counting characters in the script source the |
| @@ -604,7 +612,7 @@ static void SetFunctionInfo(Handle<SharedFunctionInfo> function_info, |
| function_info->set_has_duplicate_parameters(lit->has_duplicate_parameters()); |
| function_info->set_ast_node_count(lit->ast_node_count()); |
| function_info->set_is_function(lit->is_function()); |
| - function_info->set_bailout_reason(lit->dont_optimize_reason()); |
| + MaybeDisableOptimization(function_info, lit->dont_optimize_reason()); |
| function_info->set_dont_cache(lit->flags()->Contains(kDontCache)); |
| function_info->set_kind(lit->kind()); |
| function_info->set_asm_function(lit->scope()->asm_function()); |
| @@ -668,7 +676,7 @@ MUST_USE_RESULT static MaybeHandle<Code> GetUnoptimizedCodeCommon( |
| FunctionLiteral* lit = info->function(); |
| shared->set_strict_mode(lit->strict_mode()); |
| SetExpectedNofPropertiesFromEstimate(shared, lit->expected_property_count()); |
| - shared->set_bailout_reason(lit->dont_optimize_reason()); |
| + MaybeDisableOptimization(shared, lit->dont_optimize_reason()); |
| // Compile unoptimized code. |
| if (!CompileUnoptimizedCode(info)) return MaybeHandle<Code>(); |
| @@ -741,7 +749,10 @@ static void InsertCodeIntoOptimizedCodeMap(CompilationInfo* info) { |
| static bool Renumber(CompilationInfo* info) { |
| if (!AstNumbering::Renumber(info->function(), info->zone())) return false; |
| if (!info->shared_info().is_null()) { |
| - info->shared_info()->set_ast_node_count(info->function()->ast_node_count()); |
| + FunctionLiteral* lit = info->function(); |
| + info->shared_info()->set_ast_node_count(lit->ast_node_count()); |
| + MaybeDisableOptimization(info->shared_info(), lit->dont_optimize_reason()); |
| + info->shared_info()->set_dont_cache(lit->flags()->Contains(kDontCache)); |
| } |
| return true; |
| } |