diff options
| author | 2012-02-02 19:50:32 -0800 | |
|---|---|---|
| committer | 2012-02-02 19:50:32 -0800 | |
| commit | 763d5fb2f83d9c93b5b764533005865a3d1034e1 (patch) | |
| tree | 8c511eaf2d552e2676e0afb4b9c4efab22933786 /src/compiler.cc | |
| parent | f16600bd3676f098567f723602f02dd013af178c (diff) | |
| parent | 601a12302407d8199503d2cc6cc0829d5996696d (diff) | |
Merge "If dex2oat takes >1s, show a breakdown of where the time went." into dalvik-dev
Diffstat (limited to 'src/compiler.cc')
| -rw-r--r-- | src/compiler.cc | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/compiler.cc b/src/compiler.cc index a3bb98594a..02367d3fa9 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -29,6 +29,7 @@ #include "object_utils.h" #include "runtime.h" #include "stl_util.h" +#include "timing_logger.h" namespace art { @@ -138,9 +139,19 @@ void Compiler::CompileAll(const ClassLoader* class_loader, const std::vector<const DexFile*>& dex_files) { DCHECK(!Runtime::Current()->IsStarted()); - PreCompile(class_loader, dex_files); + TimingLogger timings("compiler"); + + PreCompile(class_loader, dex_files, timings); + Compile(class_loader, dex_files); + timings.AddSplit("Compile"); + PostCompile(class_loader, dex_files); + timings.AddSplit("PostCompile"); + + if (timings.GetTotalNs() > MsToNs(1000)) { + timings.Dump(); + } } void Compiler::CompileOne(const Method* method) { @@ -154,7 +165,8 @@ void Compiler::CompileOne(const Method* method) { std::vector<const DexFile*> dex_files; dex_files.push_back(&dex_file); - PreCompile(class_loader, dex_files); + TimingLogger timings("CompileOne"); + PreCompile(class_loader, dex_files, timings); uint32_t method_idx = method->GetDexMethodIndex(); const DexFile::CodeItem* code_item = dex_file.GetCodeItem(method->GetCodeItemOffset()); @@ -173,10 +185,15 @@ void Compiler::Resolve(const ClassLoader* class_loader, } void Compiler::PreCompile(const ClassLoader* class_loader, - const std::vector<const DexFile*>& dex_files) { + const std::vector<const DexFile*>& dex_files, TimingLogger& timings) { Resolve(class_loader, dex_files); + timings.AddSplit("PreCompile.Resolve"); + Verify(class_loader, dex_files); + timings.AddSplit("PreCompile.Verify"); + InitializeClassesWithoutClinit(class_loader, dex_files); + timings.AddSplit("PreCompile.InitializeClassesWithoutClinit"); } void Compiler::PostCompile(const ClassLoader* class_loader, |