| 5537 | } |
| 5538 | |
| 5539 | DbgSubprogram* WinDebugger::TryFollowHotJump(DbgSubprogram* subprogram, addr_target addr) |
| 5540 | { |
| 5541 | if (subprogram->mHotReplaceKind != DbgSubprogram::HotReplaceKind_Replaced) |
| 5542 | return subprogram; |
| 5543 | |
| 5544 | if (addr != subprogram->mBlock.mLowPC) |
| 5545 | return subprogram; |
| 5546 | |
| 5547 | auto dbgModule = subprogram->mCompileUnit->mDbgModule; |
| 5548 | |
| 5549 | HotJumpOp jumpOp = ReadMemory<HotJumpOp>(addr); |
| 5550 | if (jumpOp.mOpCode != 0xE9) |
| 5551 | return subprogram; |
| 5552 | addr_target jumpAddr = addr + jumpOp.mRelTarget + sizeof(HotJumpOp); |
| 5553 | |
| 5554 | auto jumpSubprogram = mDebugTarget->FindSubProgram(jumpAddr); |
| 5555 | if (jumpSubprogram == NULL) |
| 5556 | return subprogram; |
| 5557 | |
| 5558 | return jumpSubprogram; |
| 5559 | } |
| 5560 | |
| 5561 | bool WinDebugger::ShouldShowStaticMember(DbgType* dbgType, DbgVariable* member) |
| 5562 | { |
no test coverage detected