|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectscale.common.Root
scale.score.Note
scale.score.expr.Expr
scale.score.expr.TernaryExpr
scale.score.expr.ArrayIndexExpr
public class ArrayIndexExpr
This class represents the generation of an array element address.
$Id: ArrayIndexExpr.java,v 1.22 2007-01-05 19:06:43 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
| Field Summary |
|---|
| Fields inherited from class scale.score.expr.Expr |
|---|
fpReorder, SE_DOMAIN, SE_NONE, SE_OVERFLOW, SE_STATE |
| Constructor Summary | |
|---|---|
ArrayIndexExpr(Type t,
Expr array,
Expr index,
Expr offset)
|
|
| Method Summary | |
|---|---|
Expr |
copy()
Perform a deep copy of the expression tree. |
int |
executionCostEstimate()
Return a relative cost estimate for executing the expression. |
AliasAnnote |
getAliasAnnote()
Get the alias annotation associated with a Scribble operator. |
Expr |
getArray()
Return the expression specifying the array. |
java.lang.String |
getDisplayLabel()
Return a String suitable for labeling this node in a graphical display. |
Expr |
getIndex()
Return the expression specifying the index. |
Expr |
getOffset()
Return the expression specifying the offset. |
Expr |
getReference()
Return the array associated with the subscript expression. |
int |
getReuseLevel()
|
boolean |
isDefined(Expr lv)
The given expression is defined if the ArrayIndexExpr expression is defined and the given expression is the array. |
boolean |
optimizationCandidate()
Return true if the expression can be moved without problems. |
Expr |
reduce()
Return a simplied equivalent expression. |
void |
setReuseLevel(int r)
|
boolean |
validLValue()
Return true if this expression is valid on the left side of an assignment. |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
| Methods inherited from class scale.score.expr.TernaryExpr |
|---|
containsDeclaration, dependsOnDeclaration, equivalent, getDeclList, getExprList, getLA, getLoadExprList, getMA, getOperand, getOperandArray, getRA, loopClean, numOperands, pushOperands, recordRefs, removeRefs, removeUseDef, replaceDecl, setLA, setMA, setOperand, setRA, sideEffects, unlinkExpression, validate |
| Methods inherited from class scale.score.Note |
|---|
getChord, getEssentialUse, setAnnotationLevel, setReportLevel, toString |
| Methods inherited from class scale.common.Root |
|---|
addAnnotation, allAnnotations, allMatchingAnnotations, getAnnotation, getDisplayName, getDisplayString, getNodeCount, getNodeID, hasAnnotation, hasEqualAnnotation, hashCode, removeAnnotation, removeAnnotations, toStringAnnotations, toStringClass, trace, trace, trace |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public ArrayIndexExpr(Type t,
Expr array,
Expr index,
Expr offset)
| Method Detail |
|---|
public Expr copy()
Expr
copy in class Exprpublic void visit(Predicate p)
Note
Each class has a visit(Predicate p) method. For
example, in class ABC:
public void visit(Predicate p)
{
p.visitABC(this);
}
and the class that implements Predicate has a method
public void visitABC(Note n)
{
ABC a = (ABC) n;
...
}
Thus, the class that implements Predicate can call
n.visit(this);where
n is a Note sub-class without
determining which specific sub-class n is.
The visit pattern basically avoids implementing a large
switch statement or defining different methods
in each class for some purpose.
visit in class NotePredicatepublic java.lang.String getDisplayLabel()
Expr
getDisplayLabel in interface DisplayNodegetDisplayLabel in class Exprpublic final Expr getArray()
public final Expr getIndex()
public final Expr getOffset()
public boolean isDefined(Expr lv)
isDefined in class Exprlv - the expression representing the array name
public Expr getReference()
getReference in class Exprpublic boolean validLValue()
validLValue in class Exprpublic boolean optimizationCandidate()
optimizationCandidate in class TernaryExprpublic void setReuseLevel(int r)
public int getReuseLevel()
getReuseLevel in class Exprpublic AliasAnnote getAliasAnnote()
getAliasAnnote in class Exprpublic Expr reduce()
reduce in class ExprSubscriptExpr.lower()public int executionCostEstimate()
executionCostEstimate in class Note
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||