diff options
author | 2015-07-22 18:36:24 +0600 | |
---|---|---|
committer | 2015-09-03 10:38:41 +0100 | |
commit | 2a7c1ef95c850abae915b3a59fbafa87e6833967 (patch) | |
tree | 7b83b227bbaa36465f313542bba9206ac631a8fd /compiler/optimizing/optimizing_compiler.cc | |
parent | 6d889e0e5004ae4d548e6c623a1218f010d1e89b (diff) |
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 <yevgeny.y.rouban@intel.com>
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r-- | compiler/optimizing/optimizing_compiler.cc | 17 |
1 files changed, 8 insertions, 9 deletions
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<LinkerPatch> linker_patches = EmitAndSortLinkerPatches(codegen); - DefaultSrcMap src_mapping_table; - if (compiler_driver->GetCompilerOptions().GetGenerateDebugInfo()) { - codegen->BuildSourceMap(&src_mapping_table); - } - ArenaVector<uint8_t> 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<LinkerPatch> linker_patches = EmitAndSortLinkerPatches(codegen); ArenaVector<uint8_t> mapping_table(arena->Adapter(kArenaAllocBaselineMaps)); codegen->BuildMappingTable(&mapping_table); - DefaultSrcMap src_mapping_table; - if (compiler_driver->GetCompilerOptions().GetGenerateDebugInfo()) { - codegen->BuildSourceMap(&src_mapping_table); - } ArenaVector<uint8_t> vmap_table(arena->Adapter(kArenaAllocBaselineMaps)); codegen->BuildVMapTable(&vmap_table); ArenaVector<uint8_t> gc_map(arena->Adapter(kArenaAllocBaselineMaps)); |