| Index: runtime/vm/compiler.cc
|
| diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
|
| index 0a452b337b1a412b47d1b82ca76ea63fc7d60420..0c914a68d8e60b7cb07021b7fc9739a094ef6593 100644
|
| --- a/runtime/vm/compiler.cc
|
| +++ b/runtime/vm/compiler.cc
|
| @@ -835,7 +835,12 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
|
|
|
| JitOptimizer optimizer(flow_graph);
|
|
|
| - optimizer.ApplyICData();
|
| + {
|
| + NOT_IN_PRODUCT(TimelineDurationScope tds(thread(), compiler_timeline,
|
| + "ApplyICData"));
|
| + optimizer.ApplyICData();
|
| + thread()->CheckForSafepoint();
|
| + }
|
| DEBUG_ASSERT(flow_graph->VerifyUseLists());
|
|
|
| // Optimize (a << b) & c patterns, merge operations.
|
| @@ -866,6 +871,7 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
|
| inliner.Inline();
|
| // Use lists are maintained and validated by the inliner.
|
| DEBUG_ASSERT(flow_graph->VerifyUseLists());
|
| + thread()->CheckForSafepoint();
|
| }
|
|
|
| // Propagate types and eliminate more type tests.
|
| @@ -978,6 +984,7 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
|
| DEBUG_ASSERT(flow_graph->VerifyUseLists());
|
| }
|
| flow_graph->RemoveRedefinitions();
|
| + thread()->CheckForSafepoint();
|
| }
|
|
|
| // Optimize (a << b) & c patterns, merge operations.
|
| @@ -1057,6 +1064,7 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
|
| // TODO(fschneider): Support allocation sinking with try-catch.
|
| sinking = new AllocationSinking(flow_graph);
|
| sinking->Optimize();
|
| + thread()->CheckForSafepoint();
|
| }
|
| DEBUG_ASSERT(flow_graph->VerifyUseLists());
|
|
|
| @@ -1106,6 +1114,7 @@ bool CompileParsedFunctionHelper::Compile(CompilationPipeline* pipeline) {
|
| // Perform register allocation on the SSA graph.
|
| FlowGraphAllocator allocator(*flow_graph);
|
| allocator.AllocateRegisters();
|
| + thread()->CheckForSafepoint();
|
| }
|
|
|
| if (reorder_blocks) {
|
|
|