Avail Super Call
This is a multi-method super-call instruction. The opcode is followed by:
The index of the message bundle (which itself refers to a method), then
The index of the literal that holds the expected return type for this call site, then
A tuple type used to direct the method lookup.
Author
Mark van Gulik
Parameters
The index of the literal that holds the message (a method).
The index of the literal that holds the return type.
The index of the literal that holds a tuple type used to direct method lookup.
Properties
true iff this instruction is a use of an outer variable.
Answer which line number to say that this instruction occurs on. Use the relevantTokens as an approximation, but subclasses might be able to be more precise. Answer -1 if this instruction doesn't seem to have a location in the source associated with it.
The tuple of tokens that contributed to producing this instruction.
Functions
The instructions of a block are being iterated over. Coordinate optimizations between instructions using localData and outerData, two lists manipulated by overrides of this method. Treat each instruction as though it is the last one in the block, and save enough information in the lists to be able to undo consequences of this assumption when a later instruction shows it to be unwarranted.
Write an entry to the encoded line number deltas for each L1 instruction generated. Most AvailInstructions write a single L1 instruction, so that implementation is here.
Write nybbles representing this instruction to the NybbleOutputStream.