Avail Object
AvailObject is the fully realized, and mostly machine generated, implementation of an Avail object. An AvailObject must keep track of its descriptor, its integer data, and its references to other AvailObjects. It specifies the complete complement of messages that can be sent to an AvailObject, and delegates most of those to its descriptor, passing the AvailObject as an additional first argument. The redirected messages in AbstractDescriptor have the prefix "o_", both to make them stand out better and to indicate the additional first argument.
Author
Mark van Gulik
Todd L Smith
Parameters
This object's {@link AbstractDescriptor}.
The number of object slots to allocate.
The number of integer slots to allocate.
Properties
Return the set of all ancestor modules of this module. Exclude this module from the set.
Answer the bundle tree's map of all plans.
Answer the tuple type describing this function type's argument types.
Answer the list phrase that provides arguments to this send phrase. If this is a macro invocation, these are the arguments supplied to the macro's output, which must be a send phrase.
Answer the descriptive string that was supplied when this atom was created. The string didn't have to be unique within the issuingModule, but certain operations might only work if it happens to be.
Answer the approximate memory cost in bits per element of this tuple. This is used to decide the direction of indirections after determining two objects are equal.
Answer the message bundle that this definition parsing plan names.
Answer the method that this bundle names. Multiple bundles may refer to the same method to support renaming of imported names.
Answer the message bundle associated with this atom. If the atom does not yet have a message bundle associated with it, answer nil.
The receiver must be a byte buffer tuple; answer its backing ByteBuffer.
Check if this fiber is allowed to be performing styling operations. For it to be allowed, the fiber must have been launched in the VM by newStylerFiber. Answer true if the fiber is permitted to style, otherwise false.
Answer the number of children this tree tuple contains.
Answer this character's Unicode code point.
Answer the starting line number for the block phrase that defines this raw function.
Dispatch to the descriptor.
Answer the type of elements that this set type's sets may hold.
The fiber's current A_Continuation if suspended, otherwise nil.
Dispatch to the descriptor.
Answer the declaration phrase referenced by this variable use phrase. If this phrase is a macro invocation, answer the declaration referenced by the variable use produced by the macro.
For this raw function, compute the tuple of its declaration names (arguments, locals, constants, 0..1 labels, outers). This is useful for decompilation, for giving meaningful names to registers in L2 translations, and for presenting reified continuations. Note that the outers are not part of the stack frame, and apply to the continuation's function instead.
For this raw function, compute the tuple of its declaration names (arguments, locals, constants, 0..1 labels). This is useful for decompilation, for giving meaningful names to registers in L2 translations, and for presenting reified continuations.
Also declared in A_Phrase for block phrases and send phrases.
Answer the type of the variable, constant, or argument declared by this declaration phrase.
Dispatch to the descriptor.
Answer the definition that this plan has been specialized for.
Answer the method that this definition is for.
Answer the module in which this lexer was defined. This is used for filtering – a module can only use this lexer if the module's ancestry includes the lexer's definitionModule.
Answer this bundle's A_Map from A_Definition to A_DefinitionParsingPlan.
Answer a tuple that comprises all definitions of this A_Method.
Dispatch to the descriptor.
Dispatch to the descriptor.
If this phrase is an assignment, answer the expression that produces the value to assign. If this phrase is an expression-as-statement, answer the expression to treat as a statement. If this phrase is a super-cast, answer the expression that produces the actual value to send. If this phrase is a macro, use the above rules on the output of the macro.
Answer the number of expressions in this list phrase.
Answer the tuple of expressions in this list phrase.
Extract a Java boolean from this atom. The atom must be either the trueObject or the falseObject.
Extract a Java float from the receiver.
Extract a signed byte from the receiver.
Extract a signed short from the receiver.
Answer the continuation that accepts the Throwable responsible for abnormal termination of this fiber.
Dispatch to the descriptor.
Answer the FiberDescriptor.FiberHelper associated with this A_Fiber.
Given an object type, answer its map from fields to types.
Answer the A_Function that implements this styler's logic.
Extract from this literal token the phrase that was responsible for generating it.
Answer the set of grammatical restrictions that have been attached to this bundle.
Answer whether there are any parsing-plans-in-progress which are at a backward jump].
Answer whether this bundle has any grammatical restrictions.
This is an expression acting as an argument, a recursive list phrase of arguments (perhaps permuted), or a super-cast. Answer whether it either is or contains within the recursive list structure a super-cast phrase.
Answer the phrase producing the value to be assigned during initialization of a variable declaration. If there is no initialization expression, answer nil.
Given an A_Type, determine which TypeTag its instances will comply with.
Dispatch to the descriptor.
Answer whether this atom is specially known to the Avail virtual machine.
Answer whether this plan-in-progress is at a backward jump instruction.
Is the receiver an Avail byte string?
Is the receiver an Avail byte tuple?
Is the receiver an Avail character?
Is the receiver an Avail extended integer?
Is the receiver an Avail function?
Answer whether this map bin is hashed (versus linear).
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.
Answer whether this variable use is the chronologically last time its variable will be used within this block.
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.
Answer whether this phrase is a macro substitution phrase.
Is this A_Method empty? A method is empty if it comprises no definitions, no semantic restrictions, and no seals.
Answer whether this number is numerically equal to some finite integer.
Answer whether this integral infinity is positive.
Answer whether this value is an integer in the range [-128..127].
Answer whether this value is an integer in the range [-32768..32767].
Answer whether this bundle tree has been marked as the source of a cycle. If so, the latestBackwardJump is the bundle tree at which to continue processing.
Answer the module within which this atom was created.
Dispatch to the descriptor.
Is the receiver an Avail TwoByteStringDescriptor?
Is the receiver an Avail unsigned byte?
Answer whether this value is an integer in the range [0..65535].
Answer whether this type is known to have no instances. For example, the BottomTypeDescriptor (denoted ⊥) has no instances.
Extract the last expression of this [listListPhraseDescriptor phrase. The client must ensure there is at least one, and that this is a list phrase.
Answer the nearest ancestor bundle tree that contained a ParsingOperation.JUMP_BACKWARD. There may be closer ancestor A_BundleTrees with a backward jump, but that jump wasn't present in the bundle tree yet.
Answer the bundle trees that will be reached when specific parse instructions run. During normal processing, all such instructions are attempted in parallel. Certain instructions like ParsingOperation.PARSE_PART do not get added to this map, and are instead added to other structures such as lazyIncomplete.
Answer the A_Map from bundles to A_Set of A_Sendable macros and method definitions, an invocation of which has been completely parsed when this bundle tree has been reached.
Answer the bundle trees that are waiting for a specific token to be parsed. These are organized as a two-layer map. The outer map is keyed by the A_String form of an expected token, and each corresponding inner map is from the keyword index to the successor A_BundleTree representing the situation where a token matching the key was consumed, and it had the keyword index that led to this new bundle tree.
Answer the bundle trees that are waiting for a specific case-insensitive token to be parsed. These are organized as a two-layer map. The outer map is keyed by the lower-case A_String form of an expected token, and each corresponding inner map is from the keyword index to the successor A_BundleTree representing the situation where a token matching the key was consumed, and it had the keyword index that led to this new bundle tree.
Answer a map used by the ParsingOperation.CHECK_ARGUMENT instruction to quickly eliminate arguments that are forbidden by grammatical restrictions. The map is from each restricted argument bundle to the successor bundle tree that includes every bundle that is allowed when an argument is an invocation of a restricted argument bundle. Each argument bundle that is restricted by at least one parent bundle at this point (just after having parsed an argument) has an entry in this map. Argument bundles that are not restricted do not occur in this map, and are instead dealt with by an entry in the lazyActions map.
If this message bundle tree has a type filter tree, return it, otherwise null.
Answer the function to run (as the base call of a fiber) to generate some tokens from the source string and position. The function should produce a tuple of potential next tokens, which may or may not have additional tokens explicitly chained onto them via A_Token.setNextLexingStateFromPrior.
Answer the function to run (as the base call of a fiber), with the character at the current lexer position, to determine if the body function should be attempted.
Answer the A_Method in which this lexer is defined. Even though the internals of the method aren't needed by the lexer, it's convenient to associated the lexer with a method for controlling imports and renames.
Answer the tuple of line number deltas for this ram function. Each entry encodes a signed offset in an unsigned entry. There's an entry for each nybblecode (not for each nybble). The encoding uses the absolute value of the delta from the previous instruction's line number, shifted left once, adding one for negatives. This allows nybble tuples and byte tuples to be the usual representations for small functions.
This module constant's actual value, or this module variable's actual variable.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer the tuple of macro for this method. Their order is irrelevant, but fixed for use by the macro testing tree.
Create an MapIterator that produces each Entry of the A_MapBin.
Answer a combined hash of all the keys in this map bin.
Answer the union of the kinds of each key in this bin. A value's exact type is always an instance type (an enumeration type of size 1), and the value's kind is the nearest supertype of that instance type that isn't itself an enumeration type.
Answer how many key/value pairs are in this map bin.
Answer a combined hash of all the values in this map bin.
Answer the union of the kinds of each value in this bin. A value's exact type is always an instance type (an enumeration type of size 1), and the value's kind is the nearest supertype of that instance type that isn't itself an enumeration type.
Answer a marker phrase's marker value, which can be any AvailObject.
Answer the maximum depth of the stack needed by an A_Continuation representing the invocation of some A_Function that closes this A_RawFunction.
Answer the name of this bundle. It must be parsable as a method name according to the rules of the MessageSplitter.
Answer the message parts produced by the MessageSplitter when applied to this bundle's name. It's basically an A_Tuple of A_Strings in the order the tokens appear in the bundle's name.
Answer the MessageSplitter holding parse planning information for invocations of this message bundle.
The A_Definitions defined by this module.
Answer the A_Module that contains the block phrase that defines this raw function.
Answer the module in which this styler was defined.
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.
Answer a Java String representing this message name being parsed at its position within the plan's parsing instructions.
The tuple of declaration phrases accessed by this block phrase. This value is set during code generation, even if the block phrase is immutable. It should not be made visible to the Avail language.
Answer the number of local constants specified by this A_RawFunction.
Answer the number of literal values embedded into this A_RawFunction.
Answer the number of local variables specified by this A_RawFunction.
Answer how many nybbles are taken up by the nybblecodes of this raw function.
Answer the number of outer variables specified by this A_RawFunction.
Answer the number of lexically captured variables or constants held by this function.
Answer the number of slots to reserve in a A_Continuation based on this raw function. This is the arity, plus number of local variables and constants, plus number of stack slots.
Answer the tuple of nybblecodes that implements this raw function.
Extract the ObjectLayoutVariant from an object type.
Extract the ObjectLayoutVariant from an object.
Answer the block phrase from which this raw function was constructed. Answer nil if this information is not available.
The index into the module's lazily-loaded tuple of phrases, or -1 if the phrase was not written to a module, in which case originatingPhrase must already contain the A_Phrase. If this code was generated (say from a pragma), this may be -1, and the originatingPhrase will be nil.
The phrase that this macro phrase generated to use as its replacement.
Answer an A_String containing the concatenated names of the originating block's declarations.
Dispatch to the descriptor.
Answer a tuple of integers encoding the ParsingOperations and operands required to parse a call to this parsing plan.
Answer the program counter that this plan-in-progress represents.
Answer the permutation from a permutation list phrase. The permutation is a tuple of integers between 1 and the number of elements, where each value occurs exactly once, and the tuple is not in ascending order.
If this is a list phrase, answer a List of its expressions. If this is a permuted list phrase, answer its expressions after permutation, in the order that the call site expects to receive them (not the order that they appear in the code).
Return the phrase's expression type, which is the type of object that will be produced by this phrase.
Answer this phrase's PhraseKind.
Return the phrase type's expression type, which is the type of object that will be produced by phrases of that type.
Dispatch to the descriptor.
Answer the continuation that accepts the result produced by the receiver's successful completion.
Answer a Statistic for recording returns into this raw function.
Answer a Statistic for recording returns from this raw function.
Also declared in A_Phrase for block phrases and send phrases.
Answer the type that this raw function will produce if there is no primitive, or if the primitive fails and the nybblecodes run.
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.
Produce an A_String describing the module. Leave off the module path.
Answer the L2Chunk that the interpreter will run to simulate execution of this A_RawFunction.
Answer this block phrase's starting line number in the source.
Answer the method that this styler is intended to style invocations of.
Answer the type of the subexpressions tuple that instances (list phrases) of me (a list phrase type) must have.
If this is a super cast phrase, then answer the type by which this argument should be looked up. If it is not and does not contain a super cast phrase in its recursive list phrase structure, then answer bottom. Otherwise create a (recursive) tuple type where elements that are supercasts provide their lookup types and the rest provide bottom.
The primitive A_Function that's suspending the fiber.
The appropriate SystemStyle for the receiver, based on whether it's a metatype or just an ordinary type. Answer null if the type does not indicate any particular system style.
Answer this method's LookupTree, suitable for dispatching method invocations (i.e., finding out which A_Definition to actually invoke.
The TextInterface for routing I/O to and from this fiber.
Answer the token which was used in the construction of a variable use phrase, a declaration phrase, a literal, or a macro that resolves to one of those.
Answer the tuple of the one-based indices of the tokens that contributed to this phrase. The indices refer to the sent A_Bundle's tuple of parts produced by the MessageSplitter.
Answer the total number of invocations of this raw function.
Return the height of this tree tuple. Flat tuples and subranges have height 0, and tree tuples have heights from 1 to 10. All of a tree tuple's children have a height of one less than the parent tree tuple.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer a tuple of values from this map in arbitrary order. A tuple is used instead of a set, since the values are not necessarily unique. The order of elements in the tuple is arbitrary and meaningless.
Answer the variable use phrase that is used by this reference or assignment.
Dispatch to the descriptor.
Dispatch to the descriptor.
Given an Avail integer, answer which power of two it is. 1->0, 2->1, 4->2, 8->3, etc. If the number is not a power of two, answer -1.
Functions
Answer whether the argument types supported by the specified function type are acceptable argument types for invoking a function whose type is the receiver.
Answer whether these are acceptable argument types for invoking a function whose type is the receiver.
Answer whether these are acceptable arguments for invoking a function whose type is the receiver.
Answer whether these are acceptable argument types for invoking a function that is an instance of the receiver. There may be more entries in the tuple than are required by the function type.
Answer whether these are acceptable arguments for invoking a function that is an instance of the receiver. There may be more entries in the tuple than are required by the function type.
TODO MvG Comment Me!
Add a definition parsing plan to this bundle, to bring it into agreement with the method's definitions and macro definitions.
Add a grammatical to the receiver.
TODO MvG Comment Me!
TODO MvG Comment Me!
Add a definition parsing plan to this bundle tree. The corresponding bundle must already be present.
TODO MvG Comment Me!
TODO MvG Comment Me!
Add a seal to this A_Method. Behaves idempotently.
Add a semantic restriction to this A_Method. Behaves idempotently.
Add the receiver to the given finite integer, destroying one or the other if it's mutable and canDestroy is true. Because of the requirement that the argument be an integer rather than an arbitrary A_Number, this is usually only used for double-dispatching.
Add a module variable binding to this module.
Add a write reactor to the VariableDescriptor and associate it with the specified key (for subsequent removal).
Set both the pc and the stack pointer of this continuation, which must be mutable.
Create a tuple with the same elements as the receiver, but with the specified newElement appended.
Update this module with information that has been accumulated in the given ModuleHeader.
Convert the receiver, which must be an integer, into a Java BigInteger.
Set up the object to report nice obvious errors if anyone ever accesses it again.
Extract the map from this variable, add the key → value binding to it, and write it back into the variable.
Extract the map from this variable, remove the key if present, and write it back into the variable.
Extract the current value of the indexable Long slot, pass it to the supplied inline Kotlin function, and write the result back to the slot with a compare-and-set, retrying from the beginning if it fails.
Extract the current value of the indexable object slot, pass it to the supplied Kotlin function, and write the result back to the slot with a compare-and-set, retrying from the beginning if it fails.
Turn the receiver into an indirection to the specified object.
Asked of the top bin of a set. If the set is large enough to be hashed then compute/cache the union's nearest kind, otherwise just answer nil.
Produce an integer like the receiver, but with the bit corresponding to 2^bitPosition either set or cleared, depending on value. The receiver may be recycled or destroyed if canDestroy is true.
Shift this integer left by the specified number of bits. If the shift amount is negative, perform a right shift instead (of the negation of the specified amount). In the case that the receiver is negative, shift in zeroes on the right or ones on the left.
Shift the non-negative integer to the left by the specified number of bits, then truncate the representation to force bits above the specified position to be zeroed. The shift factor may be negative, indicating a right shift by the corresponding positive amount, in which case truncation will still happen.
Compute the boolean and operation for the corresponding bits of the receiver and anInteger. Both values are signed 2's complement integers.
Compute the boolean exclusive-or operation for the corresponding bits of the receiver and anInteger. Both values are signed 2's complement integers.
If this is a method definition then answer the actual function. If this is a macro definition, answer the macro body function. Fail otherwise.
Answer a function type that identifies where this definition occurs in the method's directed acyclic graph of definitions.
Dispatch to the descriptor.
Add the A_Macro definition to this bundle, respecting seals if requested. Throw a SignatureException (without making changes), if the macro body's signature is incompatible with the bundle's name. See MessageSplitter and its related classes for information about how the message name is related to argument structure.
Answer the message bundle associated with this atom. If the atom does not yet have a message bundle associated with it, create one for that purpose and install it. The creation of the bundle is atomic, ensuring multiple fibers attempting to create the atom's bundle will agree about which bundle was created and installed in the atom.
Extract the byte at the given one-based byte subscript within the specified field. Always use little-endian encoding.
The continuation to which control will pass when this continuation returns. May be nil, indicating this is the outermost stack frame of its fiber and will produce a value from the fiber itself.
Attach the given debugger to this fiber. Do nothing if the fiber is already attached to another debugger.
Sanity check: ensure that the specified field is writable.
Perform the given action for each child phrase of this phrase.
Perform the given transformation for each child phrase of this phrase, writing the result of the transformation back into this phrase. This phrase must be mutable.
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.
Disconnect this token from its internal cache of what comes next.
Clear the variable. This causes the variable to have no value, and subsequent attempts to get the value of this variable will fail.
Answer the raw function (also known as compiled code) on which this function is based. The raw function holds the information that is common to all functions, and each function additionally holds zero or more captured variables and values from its lexical context.
Answer this raw function's Primitive or null.
Perform an atomic compare-and-set on a slot of the given array. If the value in the slot is the same Kotlin object (under ===) as the reference, replace it with the newValue and answer true. Otherwise answer false.
Compare a subrange of the receiver with a subrange of the given byte array tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Test whether the subtuple of the receiver from startIndex1 to endIndex1 equals the subtuple of the byte buffer tuple of the same length starting at startIndex2.
Compare a subrange of the receiver with a subrange of the given byte string. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given byte tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given integer interval tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given nybble tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given object tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given repeated element tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given small integer interval tuple. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given twenty-one-bit string. The size of the subrange of both objects is determined by the index range supplied for the receiver.
Compare a subrange of the receiver with a subrange of the given two-byte string. The size of the subrange of both objects is determined by the index range supplied for the receiver.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
As a convenience in Kotlin, allow deconstruction of short tuples.
Compute the hash of the specified subrange of this tuple.
Compute a type that is an ancestor of the receiver, but is not an enumeration. Choose the most specific such type. Fail if the receiver is not itself an enumeration. Also fail if the receiver is bottom.
Given a tuple of tuples, concatenate all the inner tuples to construct one new tuple. May destroy the original tuple of tuples if so indicated.
Concatenate the receiver and the argument otherTuple to form a new tuple. Assume that the two input tuples may be destroyed or recycled if they're mutable.
Answer the type of the index-th local constant.
Make a mutable copy of the tuple but in a form that accepts Ints.
Make a mutable copy of the tuple but in a form that accepts Longs.
Make a mutable copy of the tuple but in a form that accepts any objects.
Create a new list phrase with the elements of the given list phrase appended to the ones in the receiver.
If the receiver is mutable, make its subobjects immutable and return it. Otherwise, make a mutable copy of the receiver and return it.
Even though A_Tuple.copyTupleFromToCanDestroy would perform the same activity, this method returns the stronger A_String type as a convenience, when the code knows it's working on strings.
Dispatch to the descriptor.
Set the countdown until reoptimization by the Level Two translator.
Create and answer a LexicalScanner containing all lexers that are in scope for this module.
Answer the line number associated with this continuation's current pc.
This raw function was found to be running in an interpreter during a periodic poll. Decrease its countdown to reoptimization by the indicated amount, being careful not to drop below one (1).
Atomically decrement the countdown to reoptimization by the L2Generator. If the count reaches zero (0), then lock this raw function, thereby blocking concurrent applications of A_Functions derived from this raw function, and then evaluate the argument in order to effect reoptimization.
Answer the method that this definition is for.
Answer the ModuleDescriptor in which this grammatical restriction was defined.
Answer the module in which this definition occurred.
Answer the A_String that names the module in which this definition occurred. If the definition is built-in (i.e., not created in any module), reply with a suitable string to indicate this.
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.
Alter this continuation to be suitable for use by a debugger. This must be performed inside a safe point.
Utility method for decomposing this object in the debugger. See AvailObjectFieldHelper for instructions to enable this functionality in IntelliJ.
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.
Dispatcher helper function for routing messages to the descriptor.
Emit code to push each value produced by the expressions of a list phrase or permuted list phrase.
Emit code to perform the effect of this phrase, leaving the operand stack the same as before these instructions.
Emit code to perform this phrase, leaving its result on the stack.
If this continuation is already mutable just answer it; otherwise answer a mutable copy of it.
Answer whether the receiver and the argument, both AvailObjects, are equal in value.
{@inheritDoc}
Answer whether the receiver, an AvailObject, and the argument, a tuple, are equal in value.
Answer whether the receiver, an AvailObject, and the argument, a byte string, are equal in value.
Answer whether the receiver, an AvailObject, and the argument, a byte tuple, are equal in value.
Answer whether the receiver, an object, is a character with a code point equal to the integer argument.
Answer whether the receiver, an AvailObject, 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 FiberTypeDescriptor, are equal in value.
Answer whether the receiver, an object, and the argument, a FunctionDescriptor, are equal in value.
Answer whether the receiver, an AvailObject, and the argument, a function type, are equal.
Answer whether the receiver, an AvailObject, and the argument, an integer interval, are equal in value.
Answer whether the receiver equals the argument.
Answer whether the receiver, an AvailObject, and the argument, an int tuple, are equal in value.
Answer whether this value equals the given ListPhraseTypeDescriptor.
Answer whether the receiver, an AvailObject, and the argument, a long tuple, are equal in value.
Answer whether the receiver equals the argument.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Test whether the receiver and aPhrase are effectively equivalent, for the purpose of describing ambiguous parses. Note that this is not used to determine whether the two phrases are equal.
Dispatch to the descriptor.
Answer whether the receiver, an AvailObject, and the argument, a repeated element tuple, are equal in value.
Answer whether the receiver and the argument tuple, both AvailObjects, are equal in value.
Dispatch to the descriptor.
Answer whether the receiver, an AvailObject, and the argument, a small integer interval tuple, are equal in value.
Dispatch to the descriptor.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer whether the receiver equals the argument.
Expand the bundle tree if there's anything currently unclassified in it. By postponing this until necessary, construction of the parsing rules for the grammar is postponed until actually necessary.
Given a continuation register dump, extract the Long at the given slot index.
Given a continuation register dump, extract the object at the given slot index.
Extract the specified element from the tuple. The element must be an integer in the range 0..15, and is returned as a Java byte.
Read the variable's value, add the addend to it, and store it back into the variable. This sequence of operations is protected by a lock if the variable is potentially shared among multiple Avail FiberDescriptor. Fail if the variable had no value, if the variable's content type is not a subtype of the IntegerRangeTypeDescriptor.extendedIntegers, if the addend is not an extended integer, if the sum of the old value and the addend is undefined (e.g., ∞ plus -∞), or if the sum does not satisfy the variable's VariableTypeDescriptor.o_WriteType. Return the previous value.
Extract a field from an ObjectDescriptor.
Extract a field from an ObjectDescriptor, 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 ObjectDescriptor, or answer null if it's not present.
Add or replace a field of an ObjectDescriptor.
Extract a field type from an ObjectTypeDescriptor.
Extract a field type from an ObjectTypeDescriptor, using the given field index, which is specific to an ObjectLayoutVariant.
Extract a field type from an ObjectTypeDescriptor, or null if it's not present.
Store the object in the specified slots of the receiver. The caller is responsible for ensuring the value has been marked Mutability.IMMUTABLE if necessary.
Answer all definitions of this A_Method that could match the given List of argument types.
Search for a particular value in the tuple, starting at the given index and working forward.
If this phrase is a sequence, take any statements within it that are also sequences, and flatten them all into one sequence, returning the List of statements. Handle first-of-sequence phrases correctly, allowing the resulting structure to be up to two layers deep.
Execute the given action with each key and value.
Execute the given action with each key and associated value in this map bin.
Answer the continuation frame slot at the given index. The frame slots are numbered starting at 1, and consist of the arguments, primitive failure variable (if defined), locals, and then an operand stack that grows from the top down.
Update the continuation frame slot at the given index. The continuation must be mutable. Frame slots are numbered starting at 1, and consist of the arguments, primitive failure variable (if defined), locals, and then an operand stack that grows from the top down.
Answer the function to execute to determine the effect of this semantic restriction on a list of argument static types at a call site.
Answer the function for which this continuation represents an evaluation.
Answer the function type associated with this raw function's closures.
Compile this block phrase into a raw function, recording within it that it was compiled within the given module.
Allow subscript notation to access a BitField.
Allow subscript notation to access an IntegerSlotsEnum field.
Allow subscript notation to access an ObjectSlotsEnum field.
Allow subscript notation to access an indexed IntegerSlotsEnum field. The first subscript is the field, which must be the last declared integer field (and end with "_"), and the second is the one-based index.
Allow subscript notation to access an indexed ObjectSlotsEnum field. The first subscript is the field, which must be the last declared object field (and end with "_"), and the second is the one-based index.
Extract the module's tuple of block phrases that it accumulated during compilation. Also set the field to nil.
Read the variable's value and set it to the new value. Answer the old value. Fail if the new value is not suitable for the variable, or if the variable had no value. Ensure that the entire operation runs atomically with respect to other reads and writes of the variable. Use information about whether the variable is potentially shared between Avail FiberDescriptor to determine whether locking operations are needed.
Store the AvailObject in the specified slot of the receiver, and answer the value that was previously in that slot. Use atomic write semantics that are compatible with volatile access. Note that this may answer nil if it's used on an unassigned variable's value slot.
Look up a property of this atom. Normal atoms have properties that can be set and read in this way, but specifically not enumerated by Avail code. You can see anything that you know how to look for, but everything else is thereby encapsulated.
Extract the current value of the VariableDescriptor. Fail if the variable has no value.
Extract the current value of the VariableDescriptor. Fail if the variable has no value. Clear the variable afterward.
Read the current value of a variable without tripping any observerless mechanisms or checks. If the variable is unassigned, answer nil.
Only applicable to VariableSharedGlobalDescriptor. Answer the module in which it's defined.
Only applicable to VariableSharedGlobalDescriptor. Answer the name of this global variable or constant.
Answer whether the receiver is numerically greater than or equivalent to the argument.
Answer whether the receiver is numerically greater than the argument.
Determine if the given module is equal to or an ancestor of the receiver.
Answer whether this set contains the specified element.
Redirect Kotlin's hashCode to AbstractDescriptor.o_Hash.
Calculate the hash of the subtuple spanning the two indices.
Dispatch to the descriptor.
Answer whether the argument is one of the keys of this map.
Dispatch to the descriptor.
Determine which nybblecode index is "current" for this continuation. If this is not the top frame, use the instruction previous to the current pc.
Is the given definition present in this A_Method?
Initialize the phrase's hash value during construction.
Search for the key in the 32-bit Ints encoded within the longSlots that occur within those slots identified with the specified IntegerSlotsEnum. The int slots must be in ascending sorted order, and must be distinct. If the exact int is found, answer its zero-based index within this repeated slot (i.e., ≥0). If the exact int is not found, answer (-n-1), where n is the zero-based position of the leftmost element of the repeated slot which is greater than the key (if it was equal, the "if found" case would have applied).
Answer the number of Long slots.
Search for the key in the 32-bit Ints encoded within the longSlots that occur within those slots identified with the specified IntegerSlotsEnum. Only search the given range of indices. If the given Int value is found within the given range, answer the index of the intSlot. Otherwise answer zero (0).
Introduce a new atom into this module.
Compare corresponding consecutive long slots from the receiver and the otherObject, starting at the beginning at the variable-length section indicated by the integerField. Answer false if any differ, otherwise true.
Answer whether this is an abstract definition.
Given two objects that are known to be equal, is the first one in a better form (more compact, more efficient, older generation) than the second one?
Is the receiver a forward declaration site?
Given a module in the process of being compiled, answer whether this token was constructed by the compiler from the module's source.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer whether this token is a LiteralTokenDescriptor, such as a string or number.
Is the receiver a method definition?
Answer true if and only if every element of the receiver is also present in the provided set.
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, a type, is a supertype of the given list phrase type.
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.
Dispatch to the descriptor.
Answer an iterator suitable for traversing the elements of the receiver with a Java foreach construct.
Search for a particular value in the tuple, starting at the given one-based index and working backward.
Answer whether the receiver is numerically less than or equivalent to the argument.
Answer the current L2Chunk to run when resuming this continuation. Always check that the chunk is still valid, otherwise the unoptimizedChunk should be resumed instead.
The offset within the L2Chunk at which to resume level two execution when this continuation is to be resumed. Note that the chunk might have become invalidated, so check L2Chunk.isValid) before attempting to resume it.
If the filter function cas already run for this single-byte codePoint in the past, answer the boolean value that it produced. Otherwise answer null.
The line number of this token in the source file.
Extract the literal value from this token. It must be a literal token.
Answer the index-th literal value of this A_RawFunction.
Answer the type of the index-th local variable.
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.
Answer this token's string representation converted to lower case.
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.
Find the key/value pair in this map which has the specified key and answer the value. Fail if the specified key is not present in the map. The result is not forced to be immutable, as it's up to the caller whether the new reference would leak beyond a usage that conserves its reference count.
Find the key/value pair in this map which has the specified key and answer the value. Answer null if the specified key is not present in the map. The result is not forced to be immutable, as it's up to the caller whether the new reference would leak beyond a usage that conserves its reference count.
Create a new map like this map, but with a new key/value pair as specified. If there was an existing key/oldValue pair, then it is replaced by the new key/value pair. The original map can be modified in place (and then returned) if canDestroy is true and the map is mutable.
Look up the key in the map. If present, use the key and the looked up value as arguments to a call to the transformer. Otherwise, use the key and the notFoundValue (nil is default for this) as arguments to the transformer. Store the transformer's result in the map under the key, destroying the original if canDestroy is true. Answer the resulting map.
Look up the key in this map bin. If not found, answer null. Use the provided hash of the key.
Create a map bin like the receiver, but with the given key associated with the given value. If canDestroy is true and the receiver is mutable, the receiver may be modified, and possibly act as the return value of this method.
Transform an element of this map bin. If there is an entry for the key, use the corresponding value as the second argument to the transformer, otherwise pass the notFoundValue. Write the result back to the bin, potentially recycling it if canDestroy is true.
Answer a map bin like the receiver, but with the given key excluded. If the key does not occur in the receiver, answer the same map bin, or an equivalent. If canDestroy is true and the receiver is mutable, the receiver can be modified and/or returned as the result.
Create a new map like this map, but without the key/value pair having the specified key. If the key was not present, then answer the original map. The original map can be modified in place (and then returned) if canDestroy is true and the map is mutable.
The membership of this method has changed. Invalidate anything that depended on the previous membership, including any LookupTrees or dependent L2Chunks.
Answer a message part produced by the MessageSplitter when applied to this bundle's name. The part is a substring of the bundle name. The index is one-based.
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.
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.
Extract an integer (at most 32 bits) from the given BitField. If the receiver is shared, then acquire its monitor.
Extract the (signed 64-bit) integer for the given field enum value, using volatile-read semantics if the receiver is shared.
Extract the object at the specified slot of the receiver. If the receiver is shared, then acquire its monitor.
Extract the (signed 64-bit) integer at the given field enum value. If the receiver is shared, then use VolatileSlotHelper.volatileRead to acquire the value.
Extract the AvailObject at the specified slot of the receiver, using volatile-read semantics if the receiver is shared.
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 LexingState that follows this token, or null if it hasn't been set yet.
Answer the pojo AvailObject containing the ]LexingState that follows this token, or nil if it hasn't been set yet.
Difference the receiver and the argument aNumber and answer the result. The operation is not allowed to fail, so the caller must ensure that the arguments are valid, i.e. not infinities of like sign.
Add the receiver and the argument aNumber and answer the result. The operation is not allowed to fail, so the caller must ensure that the arguments are valid, i.e. not infinities of unlike sign.
Answer the number of arguments expected by this raw function.
Answer an ordering between the receiver and the argument. This compares the underlying real numeric values of the two A_Numbers, which does not necessarily agree with the equals semantics. In particular, under numerical ordering, 5 = 5.0 = 5.0f, and 0.0/0.0 is incomparable to every number, even itself. Under ordinary equality (the equals method), an integer never equals a float, and neither ever equals a double. However, 0.0/0.0 is equal to 0.0/0.0, since they have the same kind (double) and the same bit pattern. Note that hash agrees with general equality, not the numeric ordering.
This produces the same value as numericCompare, but the argument is an unboxed double value.
This produces the same value as numericCompare, but the argument is known to be an integral infinity whose Sign is provided.
This produces the same value as numericCompare, but the argument is known to be an integer.
Also defined in A_RawFunction. The total number of "frame" slots in the receiver. These slots are used to hold the arguments, local variables and constants, and the local operand stack on which the level one instruction set depends.
Answer the number of AvailObject slots.
An outer variable or constant of this function has been used for the last time. Replace it with nil if the function is mutable, and answer true. If the function is immutable then something besides the Interpreter or a fiber's chain of A_Continuations might be referring to it, so answer false.
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.
Answer the type of the index-th outer variable.
Answer this function's lexically captured variable or constant value that has the specified index.
Set the specified captured variable/constant slot to the given variable or constant value.
Returns a possibly parallel Stream with this tuple as its source. It is allowable for this method to return a sequential stream.
Answer the list phrase type for this definition. The parser uses this type to produce a customized parsing plan, specialized to a particular A_Sendable.
Answer the level one program counter. This is a one-based subscript that indicates the next instruction that will execute in this continuation's function's level one code.
Test whether this phrase has a PhraseKind that is equal to or a subkind of the given PhraseKind.
Also declared in A_Phrase, so the same operation applies both to phrases and to phrase types.
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 StringBuilder, unless it is already present in the recursion Map. Printing will begin at the specified indent level, measured in horizontal tab characters.
The receiver is a byte string; extract the code point of the character at the given index as an unsigned byte.
Extract a (signed) base 2^32 digit from the integer. The index must be in range for the integer's representation.
Replace a (signed) base 2^32 digit of the integer. The index must be in range for the integer's representation, and the receiver must be mutable.
Extract an unsigned base 2^32 digit from the integer. The index must be in range for the integer's representation.
Replace an unsigned base 2^32 digit of the integer. The index must be in range for the integer's representation, and the receiver must be mutable.
Record a block phrase in this module, answering the unique one-based Avail integer index at which it can later be retrieved.
Answer the ContinuationRegisterDumpDescriptor object that was secretly stashed inside this continuation for an L2Chunk's use.
This fiber was captured by a debugger. Release it from that debugger, allowing it to continue running freely when/if its state indicates it should.
Remove the specified definition from this A_Method. Behaves idempotently.
Remove the specified chunk from the receiver's set of dependent chunks.
Dispatch to the descriptor.
Remove a grammatical from the receiver.
Remove a macro from the receiver. The macro will be removed from the bundle's tuple of macros, from its current parsing plans, and from its macro type-lookup tree.
Remove information about this definition or macro from this bundle.
Remove information about this definition from this bundle tree.
Remove a seal from this A_Method. Behaves idempotently.
Remove an extant semantic from this method. Behaves idempotently.
Remove the write reactor associated with the specified AtomDescriptor from the VariableDescriptor.
Replace the first child of this tree tuple. Make a copy to modify if the receiver is immutable. Answer the modified original or copy.
Create a copy of the receiver if it's not already mutable, then clobber the caller slot with the passed value.
Dispatch to the descriptor.
Dispatch to the descriptor.
Answer the MessageBundleDescriptor that is restricted by this grammatical restriction.
Answer whether the objects occupy the same memory addresses.
Visit all of the object's object slots, passing the parent and child objects to the provided visitor.
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.
Allow subscript notation to write to a BitField.
Allow subscript notation to write to an IntegerSlotsEnum field.
Allow subscript notation to write to an ObjectSlotsEnum field.
Allow subscript notation to write to an indexed IntegerSlotsEnum field. The first subscript is the field, which must be the last declared integer field (and end with "_"), and the second is the one-based index.
Allow subscript notation to write to an indexed ObjectSlotsEnum field. The first subscript is the field, which must be the last declared object field (and end with "_"), and the second is the one-based index.
Set the specified property of this atom to the specified value. Normal atoms have properties that can be set and read in this way, but specifically not enumerated by Avail code. You can see anything that you know how to look for, but everything else is thereby encapsulated.
Construct a bin containing the union of the receiver and otherBin, recycling or destroying either or both if they're mutable.
Replace the byte at the given one-based byte subscript within the specified field. Always use little endian encoding.
Store the specified continuation in the receiver, which must be a fiber. This is the only circumstance in all of Avail in which a field of a (potentially) shared object may hold a non-shared object.
Given a module in the process of being compiled, alter this token to indicate that it was created directly from that module's source.
Replace this object's current currentDescriptorAbstractDescriptor].
Check if all elements of the set are instances of the specified kind (any type that isn't an instance type).
Dispatch to the descriptor.
Answer a set containing all values that are present simultaneously in both the receiver and the otherSet.
Answer whether the receiver and otherSet have any elements in common.
Store the (32-bit signed) Int at the given int-index of the receiver.
Record the fact that the filter ran for this single-byte codePoint, and produced the provided applicability boolean.
Set the repository record number for this module's manifest entries.
Store the signed 32-bit Int into the specified BitField, trimming upper bits beyond the BitField's size. If the receiver is shared, then use VolatileSlotHelper.compareAndSet to ensure only the intended bits are affected.
Store the (signed 64-bit) integer in the eight bytes starting at the given field enum value. If the receiver is Mutability.SHARED, then acquire its monitor.
Store the AvailObject in the specified slot of the receiver, using volatile-write semantics if the receiver is shared.
Store the (signed 64-bit) integer in the eight bytes starting at the given field enum value. If the receiver is shared, then use VolatileSlotHelper.volatileWrite to write the value.
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 this token's next LexingState.
Set the record number under which this module's PhrasePathRecord has been recorded.
Store the (16-bit unsigned) short at the given short-index of the receiver.
Replace the value of the BitField within this object.
Store the (signed 64-bit) integer in the eight bytes starting at the given field enum value.
Store the A_BasicObject in the specified object slot of the receiver.
Store the AvailObject in the specified slot of the receiver.
Read elements from consecutive slots of a LongArray, writing them to consecutive long slots of the receiver.
Read elements from consecutive slots of an array, writing them to consecutive slots of the receiver. It's the client's responsibility to ensure the values are suitably immutable or shared.
Write elements from the given List into consecutively numbered object slots. If the receiver is Mutability.SHARED, then the new value must also become shared (by the client) before it can be stored.
Read elements from consecutive integer slots of the sourceObject, writing them to consecutive slots of the receiver. It's the client's responsibility to ensure the values are suitably immutable or shared.
Read elements from consecutive slots of the sourceObject, writing them to consecutive slots of the receiver. It's the client's responsibility to ensure the values are suitably immutable or shared.
Read elements from consecutive slots of a tuple, writing them to consecutive slots of the receiver. It's the client's responsibility to ensure the values are suitably immutable or shared.
Set the chunk that implements this A_RawFunction, and the countdown to reoptimization by the L2Generator.
Set the record number under which this module's StylingRecord has been recorded.
Set the success and failure actions of this fiber. The former runs if the fiber succeeds, passing the resulting AvailObject, and also stashing it in the fiber. The latter runs if the fiber fails, passing the Throwable that caused the failure.
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 a set containing all the elements of this set and all the elements of the otherSet.
Helper method for transferring this object's longSlots into an L1InstructionDecoder. The receiver's descriptor must be a CompiledCodeDescriptor.
Assign the given value to the VariableDescriptor. Fail if the value does not have a type suitable for the variable.
Assign the given value to the VariableDescriptor. The client should ensure that the value is acceptable for the variable.
Set whether this write-once variable was initialized from an expression which is stable – always produces the same value (modulo loading of modules) and has no side-effects.
Store the AvailObject in the specified slot of the receiver. Use volatile write semantics.
Answer a set like this one but with newElementObject present. If it was already present in the original set then answer that. The set might be modified in place (and then returned) if canDestroy is true and the set is mutable.
Answer a set like this one but with elementObjectToExclude absent. If it was already absent in the original set then answer that. The set might be modified in place (and then returned) if canDestroy is true and the set is mutable.
Extract a (16-bit unsigned) short at the given short-index of the receiver.
Answer whether to show value-specific content in the field name in the debugger.
Extract the value of the BitField of the receiver. Note that it's an Int even though the underlying longSlots array contains longs.
Extract the (signed 64-bit) integer for the given field enum value.
Extract the AvailObject from the specified object slot of the receiver.
Extract the (signed 64-bit) integer at the given field enum value.
Extract the AvailObject at the specified slot of the receiver.
Read consecutive long slots from the receiver, writing them into slots of a long array.
Retrieve the stack element with the given offset. Do not adjust the mutability of the returned value.
Answer the current depth of the argument stack within this continuation. This is a one-based index into the continuation's frame. The stack pointer indexes the most recently pushed value. The stack grows downwards, and the empty stack is indicated by a pointer just beyond the frame data.
Returns a sequential Stream with this tuple as its source.
Get the module's StylingRecord, which is used for syntax coloring the module source. This may involve reading the repository.
Subtract the receiver from the given integer, destroying one or the other if it's mutable and canDestroy is true.
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.
Create and answer a LexingState corresponding to the start of this token. It should not be used for subsequent parsing/lexing.
Remove the A_Tuple of post-load A_Function from this module, returning them. Replace the tuple with nil.
Atomically increment the total number of invocations of A_Functions based on this A_RawFunction.
Answer the TokenDescriptor.TokenType of this token.
Transfer the specified subrange of this tuple of bytes into the provided ByteBuffer. There should be sufficient room to write the bytes.
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.
Normalize the integer to have the minimum number of base 2^32 digits.
Dispatch to the descriptor.
Reduce the number of long slots occupied by this object. In a raw memory model we would split the object representation into two objects, one at the original address, and a separate filler object occupying the long slots that were chopped off.
Slice the current AvailObject 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 specified element of the tuple.
Answer a new tuple like the receiver but with a single element replaced at the specified index. If the receiver is mutable and canDestroy is true, then the receiver may be modified or destroyed.
Answer the code point of the character at the given one-based index in this tuple. The tuple doesn't have to be a string, but the requested element must be a character.
Answer the specified element of the tuple. It must be an integer in the range [-2^31..2^31), and is returned as a Java int.
Dispatch to the descriptor.
Answer a tuple that has the receiver's elements but in reverse order.
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.
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.
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.
A grammatical restriction has been added. Update this bundle tree to conform to the new restriction along any already-expanded paths for the given plan. Updated the treesToVisit collection to include any new trees to visit as a consequence of visiting this tree.
Extract the current Int value of the BitField, pass it to the supplied inline Kotlin function, and write the result back to the BitField. Note that this is not atomic, so other fields encoded in the same Long field may get clobbered if simultaneously updated by multiple threads.
Extract the current value of the Long slot, pass it to the supplied inline Kotlin function, and write the resulting Long back to the slot.
Extract the current value of the slot, pass it to the supplied inline Kotlin function, and write the result back to the slot.
Extract the current value of the slot, pass it to the supplied inline Kotlin function, make it shared, and write the result back to the slot.
Atomically update this definition's set of stylers.
Validate this phrase without also visiting its subphrases.
Answer the set of write reactor FunctionDescriptor that have not previously activated.
Extract the current value of the VariableDescriptor. Answer nil if the variable has no value.
Answer whether this variable is both a write-once variable and initialized from an expression which is stable – always produces the same value (modulo loading of modules) and has no side-effects.
Answer the number of variable integer slots in this object. This does not include the fixed integer slots.
Test whether the map in this variable has the specified key.
Answer the number of variable object slots in this AvailObject. This does not include the fixed object slots.
Extract the AvailObject at the specified slot of the receiver. Use volatile semantics for the read.
Ensure the specified action is invoked with this fiber's reified continuation as soon as it's available. Note that this triggers an interrupt on the fiber to ensure a timely capture of the stack.
Write an equivalent replacement object into an object field of this object. Since the replacement is semantically equivalent to the previous content, don't acquire a lock. Any necessary write barriers and other memory synchronizations are the responsibility of the caller.