Reduce how often we call FindDexCache

Before host boot.oat -j4 optimizing compile:
real  1m17.792s
user  3m26.140s
sys 0m8.340s

After:
real  1m12.324s
user  3m22.718s
sys 0m8.320s

Change-Id: If18e9e79e06cdf1676692e5efacb682bf93889c3
diff --git a/compiler/driver/dex_compilation_unit.h b/compiler/driver/dex_compilation_unit.h
index 3983006..16872f4 100644
--- a/compiler/driver/dex_compilation_unit.h
+++ b/compiler/driver/dex_compilation_unit.h
@@ -19,9 +19,10 @@
 
 #include <stdint.h>
 
-#include "dex_file.h"
-#include "jni.h"
 #include "base/arena_object.h"
+#include "dex_file.h"
+#include "handle.h"
+#include "jni.h"
 
 namespace art {
 namespace mirror {
@@ -36,10 +37,16 @@
  public:
   explicit DexCompilationUnit(CompilationUnit* cu);
 
-  DexCompilationUnit(CompilationUnit* cu, jobject class_loader, ClassLinker* class_linker,
-                     const DexFile& dex_file, const DexFile::CodeItem* code_item,
-                     uint16_t class_def_idx, uint32_t method_idx, uint32_t access_flags,
-                     const VerifiedMethod* verified_method);
+  DexCompilationUnit(CompilationUnit* cu,
+                     jobject class_loader,
+                     ClassLinker* class_linker,
+                     const DexFile& dex_file,
+                     const DexFile::CodeItem* code_item,
+                     uint16_t class_def_idx,
+                     uint32_t method_idx,
+                     uint32_t access_flags,
+                     const VerifiedMethod* verified_method,
+                     Handle<mirror::DexCache> dex_cache);
 
   CompilationUnit* GetCompilationUnit() const {
     return cu_;
@@ -109,6 +116,10 @@
 
   const std::string& GetSymbol();
 
+  Handle<mirror::DexCache> GetDexCache() const {
+    return dex_cache_;
+  }
+
  private:
   CompilationUnit* const cu_;
 
@@ -124,6 +135,8 @@
   const uint32_t access_flags_;
   const VerifiedMethod* verified_method_;
 
+  Handle<mirror::DexCache> dex_cache_;
+
   std::string symbol_;
 };