Allow nested inlining.

Also run optimizations before iterating over
the instructions to get rid of, e.g., null checks.

Change-Id: I6e52e61ce4d0ccb63d687afea09bb4722453bb6a
diff --git a/compiler/optimizing/inliner.h b/compiler/optimizing/inliner.h
index 370e33c..07d893e 100644
--- a/compiler/optimizing/inliner.h
+++ b/compiler/optimizing/inliner.h
@@ -33,11 +33,13 @@
   HInliner(HGraph* outer_graph,
            const DexCompilationUnit& outer_compilation_unit,
            CompilerDriver* compiler_driver,
-           OptimizingCompilerStats* stats)
+           OptimizingCompilerStats* stats,
+           size_t depth = 0)
       : HOptimization(outer_graph, true, "inliner"),
         outer_compilation_unit_(outer_compilation_unit),
         compiler_driver_(compiler_driver),
-        outer_stats_(stats) {}
+        outer_stats_(stats),
+        depth_(depth) {}
 
   void Run() OVERRIDE;
 
@@ -47,6 +49,7 @@
   const DexCompilationUnit& outer_compilation_unit_;
   CompilerDriver* const compiler_driver_;
   OptimizingCompilerStats* const outer_stats_;
+  const size_t depth_;
 
   DISALLOW_COPY_AND_ASSIGN(HInliner);
 };