PPCAnalyst: Update comments

This commit is contained in:
degasus 2017-01-28 02:59:48 +01:00
parent 4855764345
commit ca10cf5afe
2 changed files with 7 additions and 1 deletions

View File

@ -723,6 +723,11 @@ u32 PPCAnalyzer::Analyze(u32 address, CodeBlock* block, CodeBuffer* buffer, u32
(inst.BO & BO_DONT_DECREMENT_FLAG) && (inst.BO & BO_DONT_CHECK_CONDITION)) (inst.BO & BO_DONT_DECREMENT_FLAG) && (inst.BO & BO_DONT_CHECK_CONDITION))
{ {
// bclrx with unconditional branch = return // bclrx with unconditional branch = return
// Follow it if we can propagate the LR value of the last CALL instruction.
// Through it would be easy to track the upper level of call/return,
// we can't guarantee the LR value. The PPC ABI forces all functions to push
// the LR value on the stack as there are no spare registers. So we'd need
// to check all store instruction to not alias with the stack.
follow = true; follow = true;
destination = code[caller].address + 4; destination = code[caller].address + 4;
found_call = false; found_call = false;

View File

@ -190,7 +190,8 @@ public:
// Requires JIT support to be enabled. // Requires JIT support to be enabled.
OPTION_CONDITIONAL_CONTINUE = (1 << 0), OPTION_CONDITIONAL_CONTINUE = (1 << 0),
// Try to inline unconditional branches. // Try to inline unconditional branches/calls/returns.
// Also track the LR value to follow unconditional return instructions.
// Might require JIT intervention to support it correctly. // Might require JIT intervention to support it correctly.
// Especially if the BLR optimization is used. // Especially if the BLR optimization is used.
OPTION_BRANCH_FOLLOW = (1 << 1), OPTION_BRANCH_FOLLOW = (1 << 1),