Chromium Code Reviews| Index: src/compiler.cc |
| diff --git a/src/compiler.cc b/src/compiler.cc |
| index 5ed274a7a20f4ae734db91772bcdfb7d7e64e536..b94041acaa79c0ca5f24a7b73e93501fd7f3ff50 100644 |
| --- a/src/compiler.cc |
| +++ b/src/compiler.cc |
| @@ -120,6 +120,7 @@ void CompilationInfo::Initialize(Isolate* isolate, |
| return; |
| } |
| mode_ = V8::UseCrankshaft() ? mode : NONOPT; |
| + abort_due_to_map_dependency_ = false; |
| if (script_->type()->value() == Script::TYPE_NATIVE) { |
| MarkAsNative(); |
| } |
| @@ -446,6 +447,12 @@ OptimizingCompiler::Status OptimizingCompiler::CreateGraph() { |
| } |
| } |
| + if (info()->HasAbortedDueToDependencyChange()) { |
| + info_->set_bailout_reason(kBailedOutDueToDependentMap); |
|
Jakob Kummerow
2013/08/12 13:48:24
same naming nit here
|
| + info_->AbortOptimization(); |
| + return SetLastStatus(BAILED_OUT); |
| + } |
| + |
| return SetLastStatus(SUCCEEDED); |
| } |
| @@ -454,6 +461,7 @@ OptimizingCompiler::Status OptimizingCompiler::OptimizeGraph() { |
| DisallowHeapAllocation no_allocation; |
| DisallowHandleAllocation no_handles; |
| DisallowHandleDereference no_deref; |
| + DisallowMapInvalidation no_map_invalidation; |
| ASSERT(last_status() == SUCCEEDED); |
| Timer t(this, &time_taken_to_optimize_); |
| @@ -474,6 +482,8 @@ OptimizingCompiler::Status OptimizingCompiler::OptimizeGraph() { |
| OptimizingCompiler::Status OptimizingCompiler::GenerateAndInstallCode() { |
| ASSERT(last_status() == SUCCEEDED); |
| + ASSERT(!info()->HasAbortedDueToDependencyChange()); |
| + DisallowMapInvalidation no_map_invalidation; |
| { // Scope for timer. |
| Timer timer(this, &time_taken_to_codegen_); |
| ASSERT(chunk_ != NULL); |