From 440a9b3b3e6aa60c14e73a97dd85c9ada0898569 Mon Sep 17 00:00:00 2001 From: David Srbecky Date: Thu, 15 Feb 2018 17:47:29 +0000 Subject: Add timestamps to JIT/DEX native debug info. This a forward-looking change intended to allow simpleperf to reliably correlate samples and native debug information. I have added the timestamps to both JIT and DEX, and refactored the code in the process to avoid code duplication. Test: testrunner.py -t 137 Change-Id: I45fa4310305aff540e036db9af15a86c5b8b7aff --- compiler/jit/jit_compiler.cc | 4 +++- compiler/optimizing/optimizing_compiler.cc | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'compiler') diff --git a/compiler/jit/jit_compiler.cc b/compiler/jit/jit_compiler.cc index 17b94d3bdf..ac5c6fb01f 100644 --- a/compiler/jit/jit_compiler.cc +++ b/compiler/jit/jit_compiler.cc @@ -77,7 +77,9 @@ extern "C" void jit_types_loaded(void* handle, mirror::Class** types, size_t cou std::vector elf_file = debug::WriteDebugElfFileForClasses( kRuntimeISA, jit_compiler->GetCompilerDriver()->GetInstructionSetFeatures(), types_array); MutexLock mu(Thread::Current(), *Locks::native_debug_interface_lock_); - CreateJITCodeEntry(std::move(elf_file)); + // We never free debug info for types, so we don't need to provide a handle + // (which would have been otherwise used as identifier to remove it later). + AddNativeDebugInfoForJit(nullptr /* handle */, elf_file); } } diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index b3f23a0dcd..e42dfc10ba 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -1411,13 +1411,12 @@ void OptimizingCompiler::GenerateJitDebugInfo(ArtMethod* method, debug::MethodDe mini_debug_info, ArrayRef(&info, 1)); MutexLock mu(Thread::Current(), *Locks::native_debug_interface_lock_); - JITCodeEntry* entry = CreateJITCodeEntry(elf_file); - IncrementJITCodeEntryRefcount(entry, info.code_address); + AddNativeDebugInfoForJit(reinterpret_cast(info.code_address), elf_file); VLOG(jit) << "JIT mini-debug-info added for " << ArtMethod::PrettyMethod(method) << " size=" << PrettySize(elf_file.size()) - << " total_size=" << PrettySize(GetJITCodeEntryMemUsage()); + << " total_size=" << PrettySize(GetJitNativeDebugInfoMemUsage()); } } // namespace art -- cgit v1.2.3-59-g8ed1b