1. A method of computation comprising: a) performing a critical task using an operation that is speculative while a condition of a processor used for performing said critical task is unknown; b) in parallel with a), determining said condition; c) if said condition is as expected, committing a first result from said performing said critical task; and d) if said condition is not as expected, allowing said first result to benignly fail, changing said condition to be as expected, re-performing said critical task using said operation, and committing a second result from said re-performing said critical task.