1. A non-transitory, computer-readable storage medium storing program instructions computer-executable to implement: a shared object in an object-oriented language, wherein the shared object is accessible by a plurality of concurrently executing atomic transactions; and a particular atomic transaction of the plurality of concurrently executing atomic transactions, wherein the particular atomic transaction comprises an access directed to the shared object and one or more accesses directed to one or more other objects; wherein the shared object comprises at least one header word storing information indicating whether one or more of the concurrently executing atomic transactions is attempting to access the shared object; and wherein the particular atomic transaction is configured to: determine, based on the at least one header word of the shared object, if the shared object is being accessed; and in response to determining that the shared object is not being accessed: modify a working copy of the shared object, access the one or more other objects, and commit the particular atomic transaction, wherein the working copy becomes the current shared object.