From 2a7c1ef95c850abae915b3a59fbafa87e6833967 Mon Sep 17 00:00:00 2001 From: Yevgeny Rouban Date: Wed, 22 Jul 2015 18:36:24 +0600 Subject: Add more dwarf debug line info for Optimized methods. Optimizing compiler generates minimum debug line info that is built using the dex_pc information about suspend points. This is not enough for performance and debugging needs. This CL generates additional debug line information for instructions which have known dex_pc and it ensures that whole call sites are mapped (as opposed to suspend points which map only one instruction past the function call). Bug: 23157336 Change-Id: I9f2b1c2038e3560847c175b8121cf9496b8b58fa Signed-off-by: Yevgeny Rouban --- compiler/optimizing/optimizing_compiler.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'compiler/optimizing/optimizing_compiler.cc') diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index 898b656b80..8e48f6dd1e 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -558,15 +558,14 @@ CompiledMethod* OptimizingCompiler::CompileOptimized(HGraph* graph, ArenaAllocator* arena = graph->GetArena(); CodeVectorAllocator allocator(arena); + DefaultSrcMap src_mapping_table; + codegen->SetSrcMap(compiler_driver->GetCompilerOptions().GetGenerateDebugInfo() + ? &src_mapping_table + : nullptr); codegen->CompileOptimized(&allocator); ArenaVector linker_patches = EmitAndSortLinkerPatches(codegen); - DefaultSrcMap src_mapping_table; - if (compiler_driver->GetCompilerOptions().GetGenerateDebugInfo()) { - codegen->BuildSourceMap(&src_mapping_table); - } - ArenaVector stack_map(arena->Adapter(kArenaAllocStackMaps)); codegen->BuildStackMaps(&stack_map); @@ -601,16 +600,16 @@ CompiledMethod* OptimizingCompiler::CompileBaseline( PassObserver* pass_observer) const { ArenaAllocator* arena = codegen->GetGraph()->GetArena(); CodeVectorAllocator allocator(arena); + DefaultSrcMap src_mapping_table; + codegen->SetSrcMap(compiler_driver->GetCompilerOptions().GetGenerateDebugInfo() + ? &src_mapping_table + : nullptr); codegen->CompileBaseline(&allocator); ArenaVector linker_patches = EmitAndSortLinkerPatches(codegen); ArenaVector mapping_table(arena->Adapter(kArenaAllocBaselineMaps)); codegen->BuildMappingTable(&mapping_table); - DefaultSrcMap src_mapping_table; - if (compiler_driver->GetCompilerOptions().GetGenerateDebugInfo()) { - codegen->BuildSourceMap(&src_mapping_table); - } ArenaVector vmap_table(arena->Adapter(kArenaAllocBaselineMaps)); codegen->BuildVMapTable(&vmap_table); ArenaVector gc_map(arena->Adapter(kArenaAllocBaselineMaps)); -- cgit v1.2.3-59-g8ed1b