Index: runtime/vm/compiler.cc |
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc |
index 885208bec66d0a42b5755ee8bd0e7166d887d890..b540eb7b3ae020e15dfa7cfd6ecf810b251d17d0 100644 |
--- a/runtime/vm/compiler.cc |
+++ b/runtime/vm/compiler.cc |
@@ -71,6 +71,7 @@ DECLARE_FLAG(bool, trace_patching); |
bool Compiler::always_optimize_ = false; |
+bool Compiler::allow_recompilation_ = true; |
// TODO(zerny): Factor out unoptimizing/optimizing pipelines and remove |
@@ -972,6 +973,11 @@ static RawError* CompileFunctionHelper(CompilationPipeline* pipeline, |
const Function& function, |
bool optimized, |
intptr_t osr_id) { |
+ // Check that we optimize if 'Compiler::always_optimize()' is set to true, |
+ // except if the function is marked as not optimizable. |
+ ASSERT(!function.IsOptimizable() || |
+ !Compiler::always_optimize() || optimized); |
+ ASSERT(Compiler::allow_recompilation() || !function.HasCode()); |
LongJumpScope jump; |
if (setjmp(*jump.Set()) == 0) { |
Thread* const thread = Thread::Current(); |