Abstract Avail Object
AbstractAvailObject specifies the essential layout and storage requirements of an Avail object, but does not specify a particular representation. As such, it defines requirements for object and integer storage capability, identity comparison by object address, indirection capability, and descriptor access.
Author
Todd L Smith
Mark van Gulik
Parameters
The object's descriptor at creation time. Most messages are redirected through the descriptor to allow the behavior and representation to change, often without changing the observable semantics. The descriptor essentially says how this object should behave, including how its fields are laid out.
Inheritors
Functions
Sanity check: ensure that the specified field is writable.
Retrieve this object's current descriptor.
Replace the descriptor with a filler. This blows up for most messages, catching further uses of this object. Note that all further uses are incorrect by definition.
Answer the number of integer slots. All variable integer slots occur following the last fixed integer slot.
Answer the number of object slots in this AvailObject. All variable object slots occur following the last fixed object slot.
Answer whether the objects occupy the same memory addresses.
Replace this object's current currentDescriptorAbstractDescriptor].
Slice the current object into two objects, the left one (at the same starting address as the input), and the right one (a filler object that nobody should ever create a pointer to). The new filler can have zero post-header slots (i.e., just the header), but the left object must not, since it may turn into an indirection some day and will require at least one slot for the target pointer.
Slice the current object into two objects, the left one (at the same starting address as the input), and the right one (a filler object that nobody should ever create a pointer to). The new filler can have zero post-header slots (i.e., just the header), but the left object must not, since it may turn into an indirection some day and will require at least one slot for the target pointer.
Answer the number of variable integer slots in this object. This does not include the fixed integer slots.
Answer the number of variable object slots in this AvailObject. This does not include the fixed object slots.