scale.score.expr
Class VaArgExpr
java.lang.Object
scale.common.Root
scale.score.Note
scale.score.expr.Expr
scale.score.expr.VarArgExpr
scale.score.expr.VaArgExpr
- All Implemented Interfaces:
- AnnotationInterface, DisplayNode
public class VaArgExpr
- extends VarArgExpr
A class which represents the va_arg(va_list, type) C construct.
$Id: VaArgExpr.java,v 1.19 2005-02-07 21:28:49 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. |
int |
executionCostEstimate()
Return a relative cost estimate for executing the expression. |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
Methods inherited from class scale.score.expr.VarArgExpr |
containsDeclaration, dependsOnDeclaration, equivalent, findCriticalChord, getDeclList, getExprList, getLoadExprList, getOperand, getOperandArray, getVaList, loopClean, numOperands, optimizationCandidate, pushOperands, recordRefs, removeRefs, removeUseDef, replaceDecl, setOperand, sideEffects, unlinkExpression, validate |
Methods inherited from class scale.score.expr.Expr |
addCast, addCast, canonical, changeInDataEdge, conditionalCopy, conditionalUnlinkExpression, deleteOutDataEdge, executionOrder, executionOrdinal, findLinearCoefficient, findSubscriptExpr, getAffineExpr, getAffineRepresentation, getAliasAnnote, getCall, getConstantValue, getConstantValue, getCoreType, getCriticalChord, getDefExpr, getDisplayColorHint, getDisplayLabel, 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, mayGenerateCall, 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 |
VaArgExpr
public VaArgExpr(Type t,
Expr va_list)
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
executionCostEstimate
public int executionCostEstimate()
- Return a relative cost estimate for executing the expression.
- Specified by:
executionCostEstimate
in class Note