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, wherein the mode of speculative execution comprises one or more of transactional memory (TM), thread level speculation (TLS), and rollback, said operations comprise implementing two distinct modes of speculation to be used concurrently wherein at least two domains are allocated to said respective distinct modes of speculative execution.