dolphin-emu/dolphin — pull request #1025 by comex (2014-09-07 20:47:15+00:00)
Title: Opportunistically predict BLR destinations using RET. 

Note: This sits on top of abi-cleanup.

When executing a BL-type instruction, push the new LR onto the stack,
then CALL the dispatcher or linked block rather than JMPing to it. When
executing BLR, compare [rsp+8] to LR, and RET if it's right, which it
usually will be unless the thread was switched out. If it's not right,
reset RSP to avoid overflow.

This both saves a trip through the dispatcher and improves branch
prediction.

There is a small possibility of stack overflow anyway, which should
be handled... *yawn*