| Index: runtime/vm/compiler.cc
 | 
| diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
 | 
| index 6de6b0cb3d2d1b688f1e047f73c487b32e2fcf6e..5d683ce5aa8c39bb29773d98e8b7566a00e9adb5 100644
 | 
| --- a/runtime/vm/compiler.cc
 | 
| +++ b/runtime/vm/compiler.cc
 | 
| @@ -64,6 +64,7 @@ DEFINE_FLAG(bool, use_inlining, true, "Enable call-site inlining");
 | 
|  DEFINE_FLAG(bool, verify_compiler, false,
 | 
|      "Enable compiler verification assertions");
 | 
|  
 | 
| +DECLARE_FLAG(bool, background_compilation);
 | 
|  DECLARE_FLAG(bool, load_deferred_eagerly);
 | 
|  DECLARE_FLAG(bool, trace_failed_optimization_attempts);
 | 
|  DECLARE_FLAG(bool, trace_inlining_intervals);
 | 
| @@ -1161,6 +1162,10 @@ RawError* Compiler::CompileOptimizedFunction(Thread* thread,
 | 
|    TIMELINE_FUNCTION_COMPILATION_DURATION(thread,
 | 
|                                           "OptimizedFunction", function);
 | 
|  
 | 
| +  // Optimization must happen in non-mutator/Dart thread if background
 | 
| +  // compilation is on.
 | 
| +  ASSERT(!FLAG_background_compilation ||
 | 
| +         !thread->isolate()->MutatorThreadIsCurrentThread());
 | 
|    CompilationPipeline* pipeline =
 | 
|        CompilationPipeline::New(thread->zone(), function);
 | 
|    return CompileFunctionHelper(pipeline, function, true, osr_id);
 | 
| @@ -1471,19 +1476,13 @@ void BackgroundCompiler::Run() {
 | 
|        Function& function = Function::Handle();
 | 
|        function = RemoveOrNull();
 | 
|        while (!function.IsNull()) {
 | 
| -        if (true) {
 | 
| -          // Debugging printing
 | 
| -          THR_Print("Background compilation: %s\n",
 | 
| -              function.ToQualifiedCString());
 | 
| -        } else {
 | 
| -          const Error& error = Error::Handle(
 | 
| -              Compiler::CompileOptimizedFunction(thread, function));
 | 
| -          // TODO(srdjan): We do not expect errors while compiling optimized
 | 
| -          // code, any errors should have been caught when compiling
 | 
| -          // unotpimized code.
 | 
| -          // If it still happens mark function as not optimizable.
 | 
| -          ASSERT(error.IsNull());
 | 
| -        }
 | 
| +        const Error& error = Error::Handle(
 | 
| +            Compiler::CompileOptimizedFunction(thread, function));
 | 
| +        // TODO(srdjan): We do not expect errors while compiling optimized
 | 
| +        // code, any errors should have been caught when compiling
 | 
| +        // unoptimized code.
 | 
| +        // If it still happens mark function as not optimizable.
 | 
| +        ASSERT(error.IsNull());
 | 
|          function = RemoveOrNull();
 | 
|        }
 | 
|      }
 | 
| 
 |