diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc
index 503187b..e8304e5 100644
--- a/compiler/optimizing/code_generator.cc
+++ b/compiler/optimizing/code_generator.cc
@@ -531,24 +531,33 @@
   }
 }
 
+void CodeGenerator::MaybeRecordStat(MethodCompilationStat compilation_stat, size_t count) const {
+  if (stats_ != nullptr) {
+    stats_->RecordStat(compilation_stat, count);
+  }
+}
+
 CodeGenerator* CodeGenerator::Create(HGraph* graph,
                                      InstructionSet instruction_set,
                                      const InstructionSetFeatures& isa_features,
-                                     const CompilerOptions& compiler_options) {
+                                     const CompilerOptions& compiler_options,
+                                     OptimizingCompilerStats* stats) {
   switch (instruction_set) {
 #ifdef ART_ENABLE_CODEGEN_arm
     case kArm:
     case kThumb2: {
       return new arm::CodeGeneratorARM(graph,
-          *isa_features.AsArmInstructionSetFeatures(),
-          compiler_options);
+                                      *isa_features.AsArmInstructionSetFeatures(),
+                                      compiler_options,
+                                      stats);
     }
 #endif
 #ifdef ART_ENABLE_CODEGEN_arm64
     case kArm64: {
       return new arm64::CodeGeneratorARM64(graph,
-          *isa_features.AsArm64InstructionSetFeatures(),
-          compiler_options);
+                                          *isa_features.AsArm64InstructionSetFeatures(),
+                                          compiler_options,
+                                          stats);
     }
 #endif
 #ifdef ART_ENABLE_CODEGEN_mips
@@ -561,22 +570,25 @@
 #ifdef ART_ENABLE_CODEGEN_mips64
     case kMips64: {
       return new mips64::CodeGeneratorMIPS64(graph,
-          *isa_features.AsMips64InstructionSetFeatures(),
-          compiler_options);
+                                            *isa_features.AsMips64InstructionSetFeatures(),
+                                            compiler_options,
+                                            stats);
     }
 #endif
 #ifdef ART_ENABLE_CODEGEN_x86
     case kX86: {
       return new x86::CodeGeneratorX86(graph,
-           *isa_features.AsX86InstructionSetFeatures(),
-           compiler_options);
+                                      *isa_features.AsX86InstructionSetFeatures(),
+                                      compiler_options,
+                                      stats);
     }
 #endif
 #ifdef ART_ENABLE_CODEGEN_x86_64
     case kX86_64: {
       return new x86_64::CodeGeneratorX86_64(graph,
-          *isa_features.AsX86_64InstructionSetFeatures(),
-          compiler_options);
+                                            *isa_features.AsX86_64InstructionSetFeatures(),
+                                            compiler_options,
+                                            stats);
     }
 #endif
     default:
