A_Module
A_Module is an interface that specifies the module-specific operations that an AvailObject must implement. It's a sub-interface of A_BasicObject, the interface that defines the behavior that all AvailObjects are required to support.
Author
Mark van Gulik
Inheritors
Properties
Return the set of all ancestor modules of this module. Exclude this module from the set.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Is the receiver an Avail byte string?
Is the receiver an Avail byte tuple?
Is the receiver an Avail extended integer?
Is the receiver an Avail function?
Dispatch to the descriptor.
Is the receiver an Avail IntTupleDescriptor? This is conservative, in that some object tuples may only contain ints but not be reported as being int tuples.
Is the receiver an Avail LongTupleDescriptor? This is conservative, in that some object tuples may only contain longs but not be reported as being long tuples.
Dispatch to the descriptor.
Is the receiver an Avail two-byte string?
Is the receiver an Avail unsigned byte?
The A_Definitions defined by this module.
Answer the name of this module.
Answer the name of this module as a native Kotlin String.
Read the current state of the module, which indicates whether the module is loading, unloading, or in a stable state.
Extract the ObjectLayoutVariant from an object.
Dispatch to the descriptor.
Produce an A_String describing the module. Leave off the module path.
Dispatch to the descriptor.
Dispatch to the descriptor.
Functions
TODO MvG Comment Me!
TODO MvG Comment Me!
TODO MvG Comment Me!
TODO MvG Comment Me!
TODO MvG Comment Me!
Add a module variable binding to this module.
Update this module with information that has been accumulated in the given ModuleHeader.
Turn the receiver into an indirection to the specified object.
Dispatch to the descriptor.
Create and answer a LexicalScanner containing all lexers that are in scope for this module.
Utility method for decomposing this object in the debugger.
Retrieve the object's {@linkplain AbstractDescriptor descriptor}.
Dispatcher helper function for routing messages to the descriptor.
Answer whether the receiver and the argument, both A_BasicObjects, are equal in value.
{@inheritDoc}
Answer whether the receiver, an object, and the argument, a byte string, are equal in value.
Answer whether the receiver, an object, and the argument, a byte tuple, are equal in value.
Answer whether the arguments, an object and a compiled code, are equal.
Answer whether the receiver equals the argument.
Answer whether the receiver equals the argument.
Determine whether the receiver is an enumeration with the given set of instances.
Answer whether the receiver, an object, and the argument, a fiber type, are equal in value.
Answer whether the receiver, an object, and the argument, a function type, are equal.
Answer whether the receiver equals the argument.
Answer whether this value equals the given list phrase type.
Answer whether the receiver equals the argument.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer whether the receiver equals the argument.
Extract a field from an object.
Extract a field from an object, using a one-based index into the field slots. This requires knowledge of the ObjectLayoutVariant, since the same field is at different indices in different variants.
Extract a field from an object, or answer null if it's not present.
Add or replace a field of an object.
Extract a field type from an object type.
Extract a field type from an object type, using the given field index, which is specific to an ObjectLayoutVariant.
Extract a field type from an object type, or null if it's not present.
Extract the module's tuple of block phrases that it accumulated during compilation. Also set the field to nil.
Determine if the given module is equal to or an ancestor of the receiver.
Dispatch to the descriptor.
Answer the number of integer slots. All variable integer slots occur following the last fixed integer slot.
Introduce a new atom into this module.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
The receiver is marked with an IMMUTABLE descriptor, but its subobjects have not yet been made immutable. Scan them now, and do any additional fix-ups necessary for the kind of object.
Dispatch to the descriptor.
The receiver is marked with a SHARED descriptor, but its subobjects have not yet been made shared. Scan them now, and do any additional fix-ups necessary for the kind of object.
Dispatch to the descriptor.
Dispatch to the descriptor.
Add a definition to this module.
Add a grammatical restriction to this module.
Add an A_Macro to this module.
Add a semantic restriction to this module.
Answer a name suitable for labeling a field containing this object.
Get this loaded module's NamesIndex record, reading it from the repository file if necessary.
Answer the number of object slots in this AvailObject. All variable object slots occur following the last fixed object slot.
Look up a one-based index in this module's tuple of block phrases. If the tuple is nil, first fetch it from the repository and overwrite the field.
Get the module's StylingRecord, which is used for syntax coloring the module source. This may involve reading the repository.
Recursively print the receiver to the builder unless it is already present in the recursionMap. Printing will begin at the specified indent level, measured in horizontal tab characters.
Record a block phrase in this module, answering the unique one-based Avail integer index at which it can later be retrieved.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer whether the objects occupy the same memory addresses.
Dispatch to the descriptor.
Deserialization has completed, and this is the A_Tuple of objects that were deserialized. This tuple can be used for pumping serializers and deserializers of subsequent modules, as well as the separate repository record for block phrases, stacks comments, and any styling, navigation, or indexing information stored separately from the body record of the module.
Replace the object's {@linkplain AbstractDescriptor descriptor}.
Dispatch to the descriptor.
Set the repository record number for this module's manifest entries.
Set the index of the NamesIndex record. That record is the way that declarations, definitions, and usages of names are tracked for this module.
Set the record number under which this module's PhrasePathRecord has been recorded.
Set the record number under which this module's StylingRecord has been recorded.
Replace my descriptor field with a FillerDescriptor. This blows up for most messages, catching incorrect (all, by definition) further accidental uses of this object.
Answer whether to show value-specific content in the file name for the debugger.
Get the module's StylingRecord, which is used for syntax coloring the module source. This may involve reading the repository.
If the provided condition is true, synchronize with the receiver's monitor around the execution of the body function. Otherwise, run the body function without synchronization.
Remove the A_Tuple of post-load A_Function from this module, returning them. Replace the tuple with nil.
Follow indirections until a non-indirection is reached. Replace each indirection's target with the ultimate target.
Follow indirections until a non-indirection is reached. Replace each indirection's target with the ultimate target, even if it would cause the otherwise-forbidden immutable->mutable references. Only used during makeImmutable.
Follow indirections until a non-indirection is reached. Replace each indirection's target with the ultimate target, even if it would cause the otherwise-forbidden shared->unshared references. Only used during makeShared.
Dispatch to the descriptor.
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.