| Index: runtime/vm/flow_graph_compiler_arm.cc | 
| diff --git a/runtime/vm/flow_graph_compiler_arm.cc b/runtime/vm/flow_graph_compiler_arm.cc | 
| index 4e613061b79c18a8b2bd186f0460abe07fe75737..9255378f544245b59e770d85dad731980a5616f3 100644 | 
| --- a/runtime/vm/flow_graph_compiler_arm.cc | 
| +++ b/runtime/vm/flow_graph_compiler_arm.cc | 
| @@ -20,6 +20,7 @@ | 
| #include "vm/stack_frame.h" | 
| #include "vm/stub_code.h" | 
| #include "vm/symbols.h" | 
| +#include "vm/code_statistics.h" | 
|  | 
| namespace dart { | 
|  | 
| @@ -990,7 +991,9 @@ void FlowGraphCompiler::CompileGraph() { | 
|  | 
| #ifdef DART_PRECOMPILER | 
| if (function.IsDynamicFunction()) { | 
| +    SpecialStatsBegin(CombinedCodeStatistics::kTagCheckedEntry); | 
| __ MonomorphicCheckedEntry(); | 
| +    SpecialStatsEnd(CombinedCodeStatistics::kTagCheckedEntry); | 
| } | 
| #endif  // DART_PRECOMPILER | 
|  | 
| @@ -999,7 +1002,9 @@ void FlowGraphCompiler::CompileGraph() { | 
| return; | 
| } | 
|  | 
| +  SpecialStatsBegin(CombinedCodeStatistics::kTagFrameEntry); | 
| EmitFrameEntry(); | 
| +  SpecialStatsEnd(CombinedCodeStatistics::kTagFrameEntry); | 
| ASSERT(assembler()->constant_pool_allowed()); | 
|  | 
| const int num_fixed_params = function.num_fixed_parameters(); | 
| @@ -1015,6 +1020,7 @@ void FlowGraphCompiler::CompileGraph() { | 
| function.IsClosureFunction() && !flow_graph().IsCompiledForOsr(); | 
| if (check_arguments) { | 
| __ Comment("Check argument count"); | 
| +      SpecialStatsBegin(CombinedCodeStatistics::kTagCheckArgumentCount); | 
| // Check that exactly num_fixed arguments are passed in. | 
| Label correct_num_arguments, wrong_num_arguments; | 
| __ ldr(R0, FieldAddress(R4, ArgumentsDescriptor::count_offset())); | 
| @@ -1030,17 +1036,22 @@ void FlowGraphCompiler::CompileGraph() { | 
| __ Branch(*StubCode::CallClosureNoSuchMethod_entry()); | 
| // The noSuchMethod call may return to the caller, but not here. | 
| __ Bind(&correct_num_arguments); | 
| +      SpecialStatsEnd(CombinedCodeStatistics::kTagCheckArgumentCount); | 
| } | 
| } else if (!flow_graph().IsCompiledForOsr()) { | 
| +    SpecialStatsBegin(CombinedCodeStatistics::kTagCopyParameters); | 
| CopyParameters(); | 
| +    SpecialStatsEnd(CombinedCodeStatistics::kTagCopyParameters); | 
| } | 
|  | 
| if (function.IsClosureFunction() && !flow_graph().IsCompiledForOsr()) { | 
| +    SpecialStatsBegin(CombinedCodeStatistics::kTagLoadClosureContext); | 
| // Load context from the closure object (first argument). | 
| LocalScope* scope = parsed_function().node_sequence()->scope(); | 
| LocalVariable* closure_parameter = scope->VariableAt(0); | 
| __ ldr(CTX, Address(FP, closure_parameter->index() * kWordSize)); | 
| __ ldr(CTX, FieldAddress(CTX, Closure::context_offset())); | 
| +    SpecialStatsEnd(CombinedCodeStatistics::kTagLoadClosureContext); | 
| } | 
|  | 
| // In unoptimized code, initialize (non-argument) stack allocated slots to | 
|  |