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_;
};