|
|||||||||
| 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.UnaryExpr
scale.score.expr.ConversionExpr
public class ConversionExpr
This class represents the type conversion or cast operation.
$Id: ConversionExpr.java,v 1.71 2007-10-04 19:58:29 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
The type of the expression represents the value being cast to and the type of the operand represents the type cast from.
Casts are not lowered until we translate into a specific machine representation.
CastMode| Field Summary |
|---|
| Fields inherited from class scale.score.expr.Expr |
|---|
fpReorder, SE_DOMAIN, SE_NONE, SE_OVERFLOW, SE_STATE |
| Method Summary | |
|---|---|
long |
canonical()
Return a unique value representing this particular expression. |
Expr |
copy()
Perform a deep copy of the expression tree. |
static Expr |
create(Type type,
Expr value,
CastMode conversion)
Return a cast of the expression. |
boolean |
equivalent(Expr exp)
Return true if the expressions are equivalent. |
int |
executionCostEstimate()
Return a relative cost estimate for executing the expression. |
SubscriptExpr |
findSubscriptExpr()
Return the SubscriptExpr that this load uses. |
protected AffineExpr |
getAffineRepresentation(HashMap<Expr,AffineExpr> affines,
LoopHeaderChord thisLoop)
Return the affine
representation for this expression. |
Literal |
getConstantValue()
Return the constant value of the expression. |
Literal |
getConstantValue(HashMap<Expr,Literal> cvMap)
Return the constant value of the expression. |
CastMode |
getConversion()
Return the type of conversion. |
java.lang.String |
getDisplayLabel()
Return a String suitable for labeling this node in a graphical display. |
Note |
getEssentialUse()
Return this Note unless it is a non-essential expression. |
Expr |
getReference()
Return the variable reference for the expression. |
boolean |
isCast()
Return true if this expression is a cast of an address. |
boolean |
isDefined(Expr lv)
The given expression is defined if the dual expression is defined and the given expression is either the low or high level expression. |
boolean |
isSimpleExpr()
Return true if this is a simple expression. |
boolean |
isValuePreserving()
Return true if the conversion results in the same value. |
int |
sideEffects()
Return an indication of the side effects execution of this expression may cause. |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
| Methods inherited from class scale.score.expr.UnaryExpr |
|---|
containsDeclaration, dependsOnDeclaration, getAliasAnnote, getArg, getDeclList, getExprList, getLoadExprList, getOperand, getOperandArray, loopClean, numOperands, optimizationCandidate, pushOperands, recordRefs, removeRefs, removeUseDef, replaceDecl, setArg, setOperand, unlinkExpression, validate |
| Methods inherited from class scale.score.Note |
|---|
getChord, 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 |
| Method Detail |
|---|
public static Expr create(Type type,
Expr value,
CastMode conversion)
type - type to be converted tovalue - expression value to be convertedconversion - the type of the conversionCastModepublic int sideEffects()
sideEffects in class UnaryExprExpr.SE_NONEpublic Expr copy()
Expr
copy in class Exprpublic CastMode getConversion()
public boolean isCast()
isCast 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 Expr getReference()
getReference in class Exprpublic boolean equivalent(Expr exp)
equivalent in class UnaryExprpublic long canonical()
Expr
canonical in class Expr
protected AffineExpr getAffineRepresentation(HashMap<Expr,AffineExpr> affines,
LoopHeaderChord thisLoop)
Expraffine
representation for this expression. This method should be
called only from the getAffineExpr()
method. This method never returns null.
getAffineRepresentation in class Expraffines - is a mapping from an expression to its representation
and is used to avoid combinatorial explosion through use-def
linksthisLoop - the loop for which this expression may be affineAffineExpr,
AffineExpr.notAffinepublic boolean isValuePreserving()
public Literal getConstantValue(HashMap<Expr,Literal> cvMap)
getConstantValue in class ExprLatticepublic Literal getConstantValue()
getConstantValue in class ExprLatticepublic SubscriptExpr findSubscriptExpr()
findSubscriptExpr in class Exprpublic Note getEssentialUse()
Chord this method returns
this. For a DualExpr or an address cast (e.g., ConversionExpr) this method
returns the out data edge.
getEssentialUse in class Notepublic int executionCostEstimate()
executionCostEstimate in class UnaryExprpublic boolean isDefined(Expr lv)
isDefined in class Exprlv - the low or high level expression.
public boolean isSimpleExpr()
isSimpleExpr in class Expr
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||