Type Tag Decision Step
This is a DecisionStep which dispatches to subtrees by looking up the TypeTag for a particular argument position. Narrowing the effective TypeRestriction on the argument in this way can quickly reduce the number of applicable elements in the subtrees, which may also promote other techniques, such as dispatching on an object or object type's ObjectLayoutVariant, or extracting a covariant or contravariant parameter into a separate argument.
Constructors
Construct the new instance.
Functions
Add the children LookupTrees, coupled with the available L2SemanticValues at that point, to the given list.
Output a description of this step on the given builder. Do not expand any subtrees that are still lazy.
Generate suitable branch instructions via the CallSiteHelper, and answer a list of Triples that coordinate each target L2BasicBlock with the LookupTree responsible for generating code in that block, plus the list of extra L2SemanticValues that will be present at that block.
Perform one step of looking up the most-specific Result that matches the provided tuple of argument types. Answer another LookupTree with which to continue the search.
Perform one step of looking up the most-specific Result that matches the provided list of argument types. Answer another LookupTree with which to continue the search.
Perform one step of looking up the most-specific Result that matches the provided value. Answer another LookupTree with which to continue the search.
Perform one step of looking up the most-specific Result that matches the provided list of arguments. Answer another LookupTree with which to continue the search.
Add the children LookupTrees to the given list. This can be used for scanning the tree for some condition, without recursion.
Extract the L2SemanticValue that is providing the value operated on by this step.
Given an optional list of values used to supplement the lookup, answer the updated list of values that takes this step into account. The given and resulting lists must not be modified by subsequent steps.
Given an optional list of values used to supplement the lookup, answer the updated list of values that takes this step into account. The given and resulting lists must not be modified by subsequent steps.
Given an optional list of values used to supplement the lookup, answer the updated list of values that takes this step into account. The given and resulting lists must not be modified by subsequent steps.
Given a function that produces a list of types from an Element due to an ancestor tree node, produce a new function for producing a lists of types that takes this DecisionStep into account. The function also optionally produces the type signature of the element, for reuse by subsequent wrapped functions.