2, . . . , 7. In the case of a block transfer operation 1404 that reads array elements seven through 21, the system first determines that read bits one through five must be set. Next, the system sets read bits one through five. Finally, the system performs the block transfer operation.

Note that a typical block transfer operation accesses consecutive array elements and hence sets a consecutive block of read bits. A shift operation can be used in combination with a special byte shuffle operation provided by the underlying machine architecture to efficiently set a consecutive block of read bits. For example, the byte shuffle operation can be used to wrap around bits that overflow from the shift operation.

The foregoing descriptions of embodiments of the invention have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the invention to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the invention. The scope of the invention is defined by the appended claims.

What is claimed is:

1. A method for marking objects defined within an object-oriented programming system to keep track of accesses to fields within objects, wherein the method operates in a system that supports space and time dimensional execution, the system having a head thread that executes program instructions and a speculative thread that executes program instructions in advance of the head thread, the head thread accessing a primary version of the object and the speculative thread accessing a space-time dimensioned version of the object, comprising:
receiving a reference to a field within an object;
identifying a marking bit within the object that is associated with the field, each marking bit within the object being associated with a different subset of fields within the object;
setting the marking bit, wherein setting the marking bit indicates that at least one field within the associated subset of fields has been referenced; and
performing the reference to the field within the object:
wherein the steps of identifying the marking bit and setting the marking bit take place for a read operation by the speculative thread.

2. The method of claim 1, wherein the object includes N marking bits numbered 0, 1, 2, . . . , N-1 and M fields numbered 0, 1, 2, . . . , M-1, and wherein identifying the marking bit associated with the field includes starting with a field number for the field, and applying a modulo N operation to the field number to produce a number for the associated marking bit.

3. The method of claim 2, wherein N is a power of two.

4. The method of claim 1, wherein there exists a separate set of marking bits for write operations, and wherein if the reference is a write operation by the speculative thread, the steps of identifying the marking bit and setting the marking bit involve the separate set of marking bits, so that upon a subsequent write operation to the field by the head thread, the head thread writes to both the primary version and the space-time dimensioned version if the marking bit is unset, and writes to only the primary version if the marking bit is set.

5. The method of claim 1, further comprising during a subsequent write operation to the field by the head thread, determining if the marking bit-associated with the field has been set by executing a special bit extract instruction to examine the marking bit.

6. The method of claim 1, wherein if the object is an array object with N marking bits numbered 0, 1, 2, . . . , N-1 and M array elements numbered 0, 1, 2, . . . , M-1, the step of identifying the marking bit that is associated with the field includes identifying an array index for an array element, and dividing the array index by the ceiling of M/N to produce a number for the associated marking bit.

7. The method of claim 6, wherein the ceiling of M/N is a power of two and the division operation is accomplished by shifting the array index so that the most significant bits of the array index become the number for the associated marking bin.

8. The method of claim 6, wherein if the reference involves a block transfer operation, the method further determines if the block transfer operation touches array elements associated with multiple marking bits, and if so, sets the multiple marking bits.

9. The method of claim 1, further comprising resetting marking bits within the object after a subsequent join operation or rollback operation.

10. The method of claim 9, wherein the resetting occurs as part of a write operation that sets the marking bit associated with the referenced field.

11. The method of claim 1, wherein all marking bits within the object are contained in a single word of memory that additionally contains a time stamp.

12. A method for marking objects defined within an object-oriented programming system to keep track of accesses to fields within objects, the method operating in a system that supports space and time dimensional execution, the system having a head thread that executes program instructions and a speculative thread that executes program instructions in advance of the head thread, the head thread accessing a primary version of the object and the speculative thread accessing space-time dimensioned version of the object, the method comprising:
receiving a reference to a field within an object, the reference being a read operation by the speculative thread;
identifying a marking bit within the object that is associated with the field, each marking bit within the object being associated with a different subset of fields within the object,
wherein the object includes N marking bits numbered 0, 1, 2, . . . , N-1 and M fields numbered 0, 1, 2, . . . , M-1,
wherein identifying the marking bit associated with the field includes starting with a field number for the field, and applying a modulo N operation to the field number to produce a number for the associated marking bit, and
wherein N is a power of two;
setting the marking bit, wherein setting the marking bit indicates that at least one field within the associated subset of fields has been referenced;
performing the reference to the field within the object; and
resetting marking bits within the object after a subsequent join operation or rollback operation, wherein the resetting occurs during a subsequent setting of a marking bit after the subsequent join operation or rollback operation.

13. A computer readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for marking objects defined within an object-oriented programming system to keep track of accesses to fields within objects, wherein the method oper-