A_Method
A_Method is an interface that specifies behavior specific to Avail methods that an AvailObject must implement.
Author
Mark van Gulik
Todd L Smith
Inheritors
Properties
Answer a tuple that comprises all definitions of this A_Method.
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.
Is this A_Method empty? A method is empty if it comprises no definitions, no semantic restrictions, and no seals.
Dispatch to the descriptor.
Is the receiver an Avail two-byte string?
Is the receiver an Avail unsigned byte?
Answer the tuple of macro for this method. Their order is irrelevant, but fixed for use by the macro testing tree.
Extract the ObjectLayoutVariant from an object.
Answer a tuple that comprises all tuple types below which new definitions may no longer be added.
Answer the set of semantic restrictions which restrict the applicability and return type of this A_Method at relevant call sites.
Answer this method's LookupTree, suitable for dispatching method invocations (i.e., finding out which A_Definition to actually invoke.
Functions
Add the specified chunk to the receiver's set of dependent chunks.
Add a seal to this A_Method. Behaves idempotently.
Add a semantic restriction to this A_Method. Behaves idempotently.
Turn the receiver into an indirection to the specified object.
Of this method's bundles, choose one that is visible in the current module. The current module is determined by the current fiber's AvailLoader. If none are visible, choose one at random.
Answer all definitions of this A_Method that could match arguments conforming to the given types, i.e., the definitions that could be invoked at runtime for a call site with the given static types.
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.
Answer all definitions of this A_Method that could match the given List of argument types.
Dispatch to the descriptor.
Is the given definition present in this A_Method?
Answer the number of integer slots. All variable integer slots occur following the last fixed integer slot.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer the definition of this A_Method that should be invoked for the given tuple of argument types. Use the testing tree to select a definition.
Answer the definition of this A_Method that should be invoked for the given values. Use the testing tree to select a definition. If lookup fails, then write an appropriate error code into errorCode and answer nil.
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.
The membership of this method has changed. Invalidate anything that depended on the previous membership, including any LookupTrees or dependent L2Chunks.
Specify that the given message bundle names this A_Method.
Add the definition to this A_Method. Causes dependent chunks to be invalidated. Answer the A_DefinitionParsingPlans that were created for the new definition.
As part of unloading a module, remove the bundle from this A_Method.
Answer a name suitable for labeling a field containing this object.
Answer the number of object slots in this AvailObject. All variable object slots occur following the last fixed object slot.
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.
Remove the specified definition from this A_Method. Behaves idempotently.
Remove the specified chunk from the receiver's set of dependent chunks.
Remove a seal from this A_Method. Behaves idempotently.
Remove an extant semantic from this method. Behaves idempotently.
Dispatch to the descriptor.
Answer whether the objects occupy the same memory addresses.
Dispatch to the descriptor.
Replace the object's {@linkplain AbstractDescriptor descriptor}.
Dispatch to the descriptor.
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.
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.
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.
Atomically update this definition's set of stylers.
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.