1. A method for executing a branch instruction, comprising: using a computer to execute the branch instruction, wherein executing the branch instruction involves obtaining a stored prediction of a resolution of the branch instruction and fetching subsequent instructions for execution based on the predicted resolution of the branch instruction; if an actual resolution of the branch instruction is different from the predicted resolution, updating the stored prediction of the resolution of the branch instruction to the actual resolution of the branch instruction; and re-executing the branch instruction, wherein re-executing the branch instruction involves obtaining the updated stored prediction of the resolution of the branch instruction and fetching subsequent instructions for execution based on the updated stored prediction of the branch instruction.