|
|||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Interface Summary | |
---|---|
HANDLER.ProtectedSet | An interface to specify which Quad s 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 |
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 Quad s 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
Quad s. |
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. |
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:
QuadWithTry
, which contains HANDLER
quads to handle thrown exceptions, and does implicit safety-checking.
QuadNoSSA
which handles all exceptions explicitly.
QuadSSI
which is the same as the above, except it is
in SSI form.
QuadRSSx
is a relaxed version of
QuadSSA
/QuadSSI
; during program
transformations it is sometimes easier to break the phi/sigma
constraints of SSA/SSI form without doing a full translation to/from
QuadNoSSA
. Relaxed-SSx (RSSx) form is what we call this
"SSA/SSI form with broken constraints".
For lower-level transformations involving explicit pointer arithmetic,
LowQuad
form must be used.
|
|||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |