diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-02-11 10:35:35 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-02-11 10:35:36 +0000 |
commit | abaf927f29f6feceb3df3e6ced7d01970ba0dbe9 (patch) | |
tree | 245cb514e070eea6fd48dba6d1e5d85fcd9146c5 /compiler | |
parent | 9e36e4c3abdc5f101a2ce2beb3681a941f9d4be5 (diff) | |
parent | ea3fa0b4ba13d7bd7f7c1cd85202ccbe141a35ae (diff) | |
download | art-abaf927f29f6feceb3df3e6ced7d01970ba0dbe9.zip art-abaf927f29f6feceb3df3e6ced7d01970ba0dbe9.tar.gz art-abaf927f29f6feceb3df3e6ced7d01970ba0dbe9.tar.bz2 |
Merge "Re-apply: Implement cumulative timings for CompilerDriver."
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/dex/frontend.cc | 16 | ||||
-rw-r--r-- | compiler/driver/compiler_driver.cc | 4 | ||||
-rw-r--r-- | compiler/driver/compiler_driver.h | 16 | ||||
-rw-r--r-- | compiler/oat_test.cc | 4 |
4 files changed, 31 insertions, 9 deletions
diff --git a/compiler/dex/frontend.cc b/compiler/dex/frontend.cc index c2016d0..8f83cd0 100644 --- a/compiler/dex/frontend.cc +++ b/compiler/dex/frontend.cc @@ -140,24 +140,25 @@ CompilationUnit::CompilationUnit(ArenaPool* pool) CompilationUnit::~CompilationUnit() { } -// TODO: Add a cumulative version of logging, and combine with dex2oat --dump-timing void CompilationUnit::StartTimingSplit(const char* label) { - if (enable_debug & (1 << kDebugTimings)) { + if (compiler_driver->GetDumpPasses()) { timings.StartSplit(label); } } void CompilationUnit::NewTimingSplit(const char* label) { - if (enable_debug & (1 << kDebugTimings)) { + if (compiler_driver->GetDumpPasses()) { timings.NewSplit(label); } } void CompilationUnit::EndTiming() { - if (enable_debug & (1 << kDebugTimings)) { + if (compiler_driver->GetDumpPasses()) { timings.EndSplit(); - LOG(INFO) << "TIMINGS " << PrettyMethod(method_idx, *dex_file); - LOG(INFO) << Dumpable<TimingLogger>(timings); + if (enable_debug & (1 << kDebugTimings)) { + LOG(INFO) << "TIMINGS " << PrettyMethod(method_idx, *dex_file); + LOG(INFO) << Dumpable<TimingLogger>(timings); + } } } @@ -330,6 +331,9 @@ static CompiledMethod* CompileMethod(CompilerDriver& compiler, } cu.EndTiming(); + compiler.GetTimingsLogger().Start(); + compiler.GetTimingsLogger().AddLogger(cu.timings); + compiler.GetTimingsLogger().End(); return result; } diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index 74c4c2f..402d4f4 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -344,7 +344,7 @@ CompilerDriver::CompilerDriver(VerificationResults* verification_results, CompilerBackend compiler_backend, InstructionSet instruction_set, InstructionSetFeatures instruction_set_features, bool image, DescriptorSet* image_classes, size_t thread_count, - bool dump_stats) + bool dump_stats, bool dump_passes, CumulativeLogger* timer) : verification_results_(verification_results), method_inliner_map_(method_inliner_map), compiler_backend_(compiler_backend), @@ -359,6 +359,8 @@ CompilerDriver::CompilerDriver(VerificationResults* verification_results, start_ns_(0), stats_(new AOTCompilationStats), dump_stats_(dump_stats), + dump_passes_(dump_passes), + timings_logger_(timer), compiler_library_(NULL), compiler_(NULL), compiler_context_(NULL), diff --git a/compiler/driver/compiler_driver.h b/compiler/driver/compiler_driver.h index e9b695b..c4ac9db 100644 --- a/compiler/driver/compiler_driver.h +++ b/compiler/driver/compiler_driver.h @@ -22,6 +22,7 @@ #include <vector> #include "base/mutex.h" +#include "base/timing_logger.h" #include "class_reference.h" #include "compiled_class.h" #include "compiled_method.h" @@ -103,7 +104,8 @@ class CompilerDriver { CompilerBackend compiler_backend, InstructionSet instruction_set, InstructionSetFeatures instruction_set_features, bool image, DescriptorSet* image_classes, - size_t thread_count, bool dump_stats); + size_t thread_count, bool dump_stats, bool dump_passes, + CumulativeLogger* timer); ~CompilerDriver(); @@ -302,6 +304,15 @@ class CompilerDriver { class CallPatchInformation; class TypePatchInformation; + + bool GetDumpPasses() const { + return dump_passes_; + } + + CumulativeLogger& GetTimingsLogger() const { + return *timings_logger_; + } + class PatchInformation { public: const DexFile& GetDexFile() const { @@ -581,6 +592,9 @@ class CompilerDriver { UniquePtr<AOTCompilationStats> stats_; bool dump_stats_; + const bool dump_passes_; + + CumulativeLogger* const timings_logger_; typedef void (*CompilerCallbackFn)(CompilerDriver& driver); typedef MutexLock* (*CompilerMutexLockFn)(CompilerDriver& driver); diff --git a/compiler/oat_test.cc b/compiler/oat_test.cc index b3070b6..f6b511c 100644 --- a/compiler/oat_test.cc +++ b/compiler/oat_test.cc @@ -91,10 +91,12 @@ TEST_F(OatTest, WriteRead) { verification_results_.reset(new VerificationResults); method_inliner_map_.reset(compiler_backend == kQuick ? new DexFileToMethodInlinerMap : nullptr); callbacks_.Reset(verification_results_.get(), method_inliner_map_.get()); + timer_.reset(new CumulativeLogger("Compilation times")); compiler_driver_.reset(new CompilerDriver(verification_results_.get(), method_inliner_map_.get(), compiler_backend, insn_set, - insn_features, false, NULL, 2, true)); + insn_features, false, NULL, 2, true, true, + timer_.get())); jobject class_loader = NULL; if (kCompile) { TimingLogger timings("OatTest::WriteRead", false, false); |