|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object scale.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 Expr
public 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 Note
Predicate
public java.lang.String getDisplayLabel()
Expr
getDisplayLabel
in interface DisplayNode
getDisplayLabel
in class Expr
public final Expr getArray()
public final Expr getIndex()
public final Expr getOffset()
public boolean isDefined(Expr lv)
isDefined
in class Expr
lv
- the expression representing the array name
public Expr getReference()
getReference
in class Expr
public boolean validLValue()
validLValue
in class Expr
public boolean optimizationCandidate()
optimizationCandidate
in class TernaryExpr
public void setReuseLevel(int r)
public int getReuseLevel()
getReuseLevel
in class Expr
public AliasAnnote getAliasAnnote()
getAliasAnnote
in class Expr
public Expr reduce()
reduce
in class Expr
SubscriptExpr.lower()
public int executionCostEstimate()
executionCostEstimate
in class Note
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |