Package harpoon.IR.Quads

A flat, typed, high-level quadruple-based IR.

See:
          Description

Interface Summary
HANDLER.ProtectedSet An interface to specify which Quads a particular HANDLER protects.
 

Class Summary
AGET AGET represents an element fetch from an array object.
ALENGTH ALENGTH represents an array length query.
ANEW ANEW represents an array creation operation.
ARRAYINIT ARRAYINIT represents an array initialization operation.
ASET ASET represents an array element assignment.
CALL CALL objects represent method invocations.
CJMP CJMP represents conditional branches.
Code Quads.Code is an abstract superclass of codeviews using the components in IR.Quads.
COMPONENTOF COMPONENTOF objects implement the test needed to determine if an ASET needs to throw an exception.
CONST CONST objects represent an assignment of a constant value to a compiler temporary.
DEBUG DEBUG prints a debugging string to standard error.
Edge Edge objects connect Quad nodes in the control-flow graph.
FOOTER FOOTER nodes are used to anchor the bottom end of the quad graph.
GET GET represent field access (get) operations.
HANDLER A HANDLER quad marks an entry to an exception handler.
HandlerSet A HandlerSet is a linked list of handlers, for purposes of comparison.
HEADER HEADER nodes are used to anchor the top end of the quad graph.
INSTANCEOF INSTANCEOF objects represent an 'instanceof' evaluation.
LABEL LABEL marks a basic-block entrance.
METHOD Quads.METHOD nodes encode method-specific information: the mapping of method formals to temporary variables, and links to the exception handlers for the method.
MONITORENTER MONITORENTER acquires the monitor lock of a particular object.
MONITOREXIT MONITOREXIT releases the monitor lock of a particular object.
MOVE MOVE objects represent an assignment to a compiler temporary.
NEW NEW represents an object creation operation.
NOP NOP nodes do nothing.
OPER OPER objects represent arithmetic/logical operations, including mathematical operators such as add and subtract, conversion operators such as double-to-int, and comparison operators such as greater than and equals.
OperVisitor An OperVisitor is a visitor pattern for opcodes of the OPER quad.
Pattern Pattern please document me if I'm public!
PHI PHI objects represent blocks of phi functions.
Qop Qop is an enumerated type for the various kinds of OPER opcodes.
Quad Quad is the base class for the quadruple representation.
QuadFactory A QuadFactory is responsible for assigning unique numbers to the Quads in a method, and for maintaining some method-wide information (such as a pointer to the parent HCode).
QuadKind QuadKind is an enumerated type for the various kinds of Quads.
QuadNoSSA QuadNoSSA is a code view with explicit exception handling.
QuadRSSx Quads.QuadRSSx is a code view in relaxed SSI form.
QuadSSA Quads.QuadSSA is a code view in SSA form.
QuadSSI Quads.QuadSSI is a code view in SSI form.
QuadValueVisitor<T> QuadValueVisitor is a visitor class that returns a (parameterized) value.
QuadVisitor QuadVisitor is a Design Pattern, courtesy of Martin.
QuadWithTry QuadWithTry is a code view with explicit try-block handlers.
ResilientNoSSA ResilientNoSSA is a code view with resilient exception handling.
RETURN RETURN objects indicate a method return, with an optional return value.
RSSxToNoSSA RSSxToNoSSA converts "relaxed-ssx" form into quads without phi or sigma functions.
SET SET represents field assignment-to operations.
SIGMA SIGMA functions are added where control flow splits.
SSIRename SSIRename is a new, improved, fast SSI-renaming algorithm.
SSIToSSA SSIToSSA renames variables to eliminate sigma functions in an SSI-form codeview, yielding an SSA codeview.
SWITCH SWITCH represents a switch construct.
TempChain TempChain needs to be documented.
ThreadInliner ThreadInliner
THROW THROW represents a throw statement.
ToNoSSA The ToNoSSA class implements the translation between SSA and No-SSA form.
TYPECAST TYPECAST performs a typecast on a given variable.
TYPESWITCH TYPESWITCH represents a multiple-way branch dependent on the class type of the argument.
 

Package harpoon.IR.Quads Description

A flat, typed, high-level quadruple-based IR.

Quad form is used for most analysis and transformation in the compiler. It maintains strong typing, and tries to be minimal. There are three main variants, and an additional variant which is occasionally useful as an intermediate:

For lower-level transformations involving explicit pointer arithmetic, LowQuad form must be used.

Related Documentation

For further information, see:

Author:
C. Scott Ananian <cananian@alumni.princeton.edu>