diff options
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 |
commit | 2a7c1ef95c850abae915b3a59fbafa87e6833967 (patch) | |
tree | 7b83b227bbaa36465f313542bba9206ac631a8fd /compiler/optimizing/code_generator.h | |
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/code_generator.h')
-rw-r--r-- | compiler/optimizing/code_generator.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h index 754b5ecd0e..b3c4d727e0 100644 --- a/compiler/optimizing/code_generator.h +++ b/compiler/optimizing/code_generator.h @@ -229,7 +229,11 @@ class CodeGenerator { return (fpu_callee_save_mask_ & (1 << reg)) != 0; } + // Record native to dex mapping for a suspend point. Required by runtime. void RecordPcInfo(HInstruction* instruction, uint32_t dex_pc, SlowPathCode* slow_path = nullptr); + // Record additional native to dex mappings for native debugging/profiling tools. + void RecordNativeDebugInfo(uint32_t dex_pc, uintptr_t native_pc_begin, uintptr_t native_pc_end); + bool CanMoveNullCheckToUser(HNullCheck* null_check); void MaybeRecordImplicitNullCheck(HInstruction* instruction); @@ -237,7 +241,8 @@ class CodeGenerator { slow_paths_.Add(slow_path); } - void BuildSourceMap(DefaultSrcMap* src_map) const; + void SetSrcMap(DefaultSrcMap* src_map) { src_map_ = src_map; } + void BuildMappingTable(ArenaVector<uint8_t>* vector) const; void BuildVMapTable(ArenaVector<uint8_t>* vector) const; void BuildNativeGCMap( @@ -395,6 +400,7 @@ class CodeGenerator { disasm_info_(nullptr), graph_(graph), compiler_options_(compiler_options), + src_map_(nullptr), slow_paths_(graph->GetArena(), 8), current_block_index_(0), is_leaf_(true), @@ -489,6 +495,8 @@ class CodeGenerator { HGraph* const graph_; const CompilerOptions& compiler_options_; + // Native to dex_pc map used for native debugging/profiling tools. + DefaultSrcMap* src_map_; GrowableArray<SlowPathCode*> slow_paths_; // The current block index in `block_order_` of the block |