Skip to content

Better terminology for optimizer/JIT components. #614

@markshannon

Description

@markshannon

Currently we use the term "optimizer" to mean three or four different things. This is somewhat confusing.

So let's come up with with better names.

Currently we have "tier1" to refer to the specializing adaptive interpreter, and "tier2" for the next tier, which lacks a name.
Maybe we should come up with a good promotional name for it, but that's another issue.

Each tier has three parts, region selection, an optimizer and an execution engine (runtime).
For tier 1, the region selection is implicit, the optimizer is the specializer and the execution engine is the (now adaptive) bytecode interpreter.
For tier 2, we lack names for the parts.

We need a better name for the optimizer part, for the reason given above. Maybe "transformer"?

For tier 1, region selection is implicit as all regions are 1 instruction.
Each optimizer/transformer can be broken down into several passes. For tier 1, there is just one pass, the specializer. For tier 2, there will be several:

So here are the tiers and passes with their informal names:

Tier 1: "Specializing adaptive interpreter"

  • Implicit region selection (1 instruction only). It is implicit, so it has no name.
  • Optimizer/Transformer
    • "Specializer"
  • Execution engine "adaptive interpreter"

Tier 2: Lacks a name

  • Region selection. Lacks a name.
  • Optimizer/Transformer
    • Guard elimination, constant propagation, ...
    • ...
    • Copy and patch compiler: "Justin".
  • Execution engine: Trace stitching?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions