ExtendibleHashTableRep:
TYPE =
MONITORED
RECORD [
Copy of permanent state in statePage. Access to this copy is protected by the internal monitor.
state: HashState,
Read-only fields which do not change during the lifetime of the ExtendibleHashTableRep:
storPrim: ExtendibleHash.PageStoragePrimitives,
Read-only fields which do not change while a hash is open, and which are protected by the monitor lock when they do change:
objectState: ExtendibleHash.State ← closed,
storage: ExtendibleHash.PageStorage ← NIL,
Read-write fields, protected by the monitor:
hashMask: ExtendibleHash.HashValue ← [0, 0], -- mask to extract the proper number of low order bits from the 64 bit hash
version: LONG CARDINAL ← 0, -- number of updates to this hash since it was opened
dictionary: Dictionary,
lockCount: INTEGER ← 0, -- + reader count, or -1 for (single) writer
unlocked: CONDITION -- notified when the lock is released
The following fields hold onto preallocated temporary storage. This storage is handed out to clients for the duration of an operation; if multiple client calls are in progress simultaneously, extra temporary storage is allocated for the second and subsequent clients and dropped on the floor when they finish.
];