1. A method for tracking enregistered memory locations, comprising: receiving object code for a program that has been compiled to execute using a register set associated with a first hardware implementation; translating the object code to execute on a second hardware implementation, wherein the second hardware implementation includes more registers than the register set of the first hardware implementation; identifying a memory access in the object code, wherein the memory access accesses a memory location, and wherein the memory location is associated with a memory address; rewriting one or more instructions associated with the memory access to access an available register instead of the memory location; executing the object code using a thread; tracking the memory address and a thread identifier associated with the thread in a table that identifies enregistered memory locations; and checking the table during memory accesses to ensure that other threads attempting to access the enregistered memory location receive a current value for the enregistered memory location.