scale.score.expr
Class CallMethodExpr
java.lang.Object
scale.common.Root
scale.score.Note
scale.score.expr.Expr
scale.score.expr.NaryExpr
scale.score.expr.CallExpr
scale.score.expr.CallMethodExpr
- All Implemented Interfaces:
- AnnotationInterface, DisplayNode
public class CallMethodExpr
- extends CallExpr
This class represents a call to a class method.
$Id: CallMethodExpr.java,v 1.28 2007-10-04 19:58:28 burrill Exp $
Copyright 2008 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
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 |
CallMethodExpr
public CallMethodExpr(Type type,
Expr method,
Vector<Expr> arguments)
- Parameters:
type
- result type of the routine CallMethod. Void for procedures.method
- is the methodarguments
- is a vector of expressions which are the
arguments - the first of which is the this argument
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
getObjectClass
public Expr getObjectClass()
getMethod
public Expr getMethod()
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