RUN_PREFIX_FUNCTION
16*N+8 - A macro has been parsed up to a section checkpoint (§), and a copy of the cleaned up parse stack has been pushed, so invoke the Nth prefix function associated with the macro. Consume the previously pushed copy of the parse stack. The current ParserState's ParserState.clientDataMap is stashed in the new fiber's globals map and retrieved afterward, so the prefix function and macros can alter the scope or communicate with each other by manipulating this map. This technique prevents chatter between separate fibers (i.e., parsing can still be done in parallel) and between separate linguistic abstractions (the keys are atoms and are therefore modular).
Properties
Whether this operation can run successfully if there is a pre-parsed first argument that has not yet been consumed.
Whether this instance commutes with PARSE_PART instructions.
A Statistic that records the number of nanoseconds spent while expanding occurrences of this ParsingOperation.
A Statistic that records the number of nanoseconds spent while executing occurrences of this ParsingOperation.
Functions
Assume that the instruction encodes an operand that represents the index of an argument to be checked (for grammatical restrictions): answer the operand.
Answer the instruction coding of the receiver for the given operand. The receiver must be arity one (1), which is equivalent to its ordinal being greater than or equal to distinctInstructions.
Assume that the instruction encodes an operand that represents a message part index: answer the operand. Answer 0 if the operand does not represent a message part.
Given an instruction and program counter, answer the list of successor program counters that should be explored. For example, a BRANCH_FORWARD instruction will need to visit both the next program counter and the branch target.
Extract the index of the type check argument for a TYPE_CHECK_ARGUMENT parsing instruction. This indexes the static MessageSplitter.constantForIndex.