1. A method, in a data processing system, for performing speculative execution, the method comprising: examining an instruction stream of a thread for occurrences of a programming idiom that causes the thread to wait for an event associated with a subsequent target address; in response to detecting a subsequence occurrence of the programming idiom in the instruction stream, performing a look-ahead polling operation; in response to the look-ahead polling operation resulting in a determination that an event associated with the future occurrence has already occurred, recording an instruction address for speculative execution of instructions following the subsequent occurrence of the programming idiom in the instruction stream of the thread; and responsive to detecting a current programming idiom during execution of the thread, storing thread state information for the thread, populating a wake-and-go storage array with the target address associated with the current programming idiom, and initiating speculative execution from the recorded instruction address.