summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimizing_compiler.cc
diff options
context:
space:
mode:
author Yevgeny Rouban <yevgeny.y.rouban@intel.com> 2015-07-22 18:36:24 +0600
committer David Srbecky <dsrbecky@google.com> 2015-09-03 10:38:41 +0100
commit2a7c1ef95c850abae915b3a59fbafa87e6833967 (patch)
tree7b83b227bbaa36465f313542bba9206ac631a8fd /compiler/optimizing/optimizing_compiler.cc
parent6d889e0e5004ae4d548e6c623a1218f010d1e89b (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.cc17
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));