1. A computer method comprising carrying out operations in a multiprocessor system, the operations comprising: running at least one program thread within at least one processor of the system; recognizing a need for speculative execution in the thread; allocating a speculation ID to the thread; managing a pool of speculation IDs in accordance with a plurality of domains, such that IDs are allocated independently for each domain; and allocating a mode of speculative execution to each domain