scale.score.expr
Class CallFunctionExpr
java.lang.Object
scale.common.Root
scale.score.Note
scale.score.expr.Expr
scale.score.expr.NaryExpr
scale.score.expr.CallExpr
scale.score.expr.CallFunctionExpr
- All Implemented Interfaces:
- AnnotationInterface, DisplayNode
public class CallFunctionExpr
- extends CallExpr
This class represents a call to a function.
$Id: CallFunctionExpr.java,v 1.31 2006-02-28 16:37:10 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
Method Summary |
Expr |
copy()
Perform a deep copy of the expression tree. |
java.lang.String |
getDisplayLabel()
Return a String suitable for labeling this node in a graphical
display. |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
Methods inherited from class scale.score.expr.CallExpr |
addMayDef, addMayUse, executionCostEstimate, findCriticalChord, getArgument, getArgumentArray, getCall, getDisplayColorHint, getFunction, getMayDef, getMayUse, getProfCallCnt, inMayDef, isPure, mayGenerateCall, numArguments, optimizationCandidate, setProfCallCnt, sideEffects |
Methods inherited from class scale.score.expr.NaryExpr |
addOperand, containsDeclaration, dependsOnDeclaration, equivalent, getDeclList, getExprList, getLoadExprList, getOperand, getOperandArray, loopClean, numOperands, pushOperands, recordRefs, removeOperand, removeRefs, removeUseDef, replaceDecl, setOperand, unlinkExpression, validate |
Methods inherited from class scale.score.expr.Expr |
addCast, addCast, canonical, changeInDataEdge, conditionalCopy, conditionalUnlinkExpression, deleteOutDataEdge, executionOrder, executionOrdinal, findLinearCoefficient, findSubscriptExpr, getAffineExpr, getAffineRepresentation, getAliasAnnote, getConstantValue, getConstantValue, getCoreType, getCriticalChord, getDefExpr, getDisplayShapeHint, getDualExpr, getInDataEdge, getInDataEdgeArray, getLoopHeader, getLow, getLValue, getOutDataEdge, getPointedToCore, getReference, getReuseLevel, getRValue, getType, getUseDef, hasTrueFalseResult, isCast, isDefined, isDefined, isLiteralExpr, isLoopInvariant, isMatchExpr, isMemoryDef, isMemRefExpr, isScalar, isSimpleExpr, numInDataEdges, reduce, removeDualExprs, setCrossloopReuse, setOutDataEdge, setSpatialReuse, setStep, setTemporalReuse, setType, setUseDef, toStringSpecial, validLValue |
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 |
CallFunctionExpr
public CallFunctionExpr(Type type,
Expr routine,
Vector<Expr> arguments)
- An instance of this class represents a call to a function.
- Parameters:
type
- result type of the routine call. Void for procedures.routine
- expression node holding address of routine to callarguments
- vector of expressions representing arguments
copy
public Expr copy()
- Description copied from class:
Expr
- Perform a deep copy of the expression tree. By deep copy, we
mean that copies are made of the expression tree.
- Specified by:
copy
in class Expr
- Returns:
- a copy of this expression
visit
public void visit(Predicate p)
- Description copied from class:
Note
- Process a node by calling its associated routine.
See the "visitor" design pattern in Design Patterns:
Elements of Reusable Object-Oriented Software by E. Gamma,
et al, Addison Wesley, ISBN 0-201-63361-2.
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.
- Specified by:
visit
in class Note
- See Also:
Predicate
getDisplayLabel
public java.lang.String getDisplayLabel()
- Description copied from class:
Expr
- Return a String suitable for labeling this node in a graphical
display. This method should be over-ridden as it simplay returns
the class name.
- Specified by:
getDisplayLabel
in interface DisplayNode
- Overrides:
getDisplayLabel
in class Expr