summaryrefslogtreecommitdiff
path: root/compiler/optimizing/code_generator.h
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2016-03-14 17:14:24 +0000
committerDavid Srbecky <dsrbecky@google.com>2016-03-17 16:58:55 +0000
commitd28f4a00933a4a3b8d5e9db73b8532924d0f989d (patch)
tree1205844a68ee9e2c502f8ecbfd2d5cf96acd4190 /compiler/optimizing/code_generator.h
parentfbc61e19578d281d05728bcd120e1ace57c2fbd8 (diff)
Generate native debug stackmaps before calls as well.
The debugger looks up PC of the call instruction, so the runtime's stackmap is not sufficient since it is at PC after the instruction. Change-Id: I0dd06c0b52e8079ea5d064ea10beb12c93584092
Diffstat (limited to 'compiler/optimizing/code_generator.h')
-rw-r--r--compiler/optimizing/code_generator.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h
index 9297fc956f..3cb0d534f2 100644
--- a/compiler/optimizing/code_generator.h
+++ b/compiler/optimizing/code_generator.h
@@ -106,6 +106,10 @@ class SlowPathCode : public ArenaObject<kArenaAllocSlowPaths> {
Label* GetEntryLabel() { return &entry_label_; }
Label* GetExitLabel() { return &exit_label_; }
+ HInstruction* GetInstruction() const {
+ return instruction_;
+ }
+
uint32_t GetDexPc() const {
return instruction_ != nullptr ? instruction_->GetDexPc() : kNoDexPc;
}
@@ -274,7 +278,9 @@ class CodeGenerator {
// Check whether we have already recorded mapping at this PC.
bool HasStackMapAtCurrentPc();
// Record extra stack maps if we support native debugging.
- void MaybeRecordNativeDebugInfo(HInstruction* instruction, uint32_t dex_pc);
+ void MaybeRecordNativeDebugInfo(HInstruction* instruction,
+ uint32_t dex_pc,
+ SlowPathCode* slow_path = nullptr);
bool CanMoveNullCheckToUser(HNullCheck* null_check);
void MaybeRecordImplicitNullCheck(HInstruction* instruction);