Class DefaultParamInitialization
- java.lang.Object
-
- it.unive.lisa.program.cfg.statement.Statement
-
- it.unive.lisa.program.cfg.statement.Expression
-
- it.unive.lisa.program.cfg.statement.DefaultParamInitialization
-
- All Implemented Interfaces:
ProgramPoint,CodeElement,CodeNode<CFG,Statement,Edge>,Node<CFG,Statement,Edge>,java.lang.Comparable<Statement>
public class DefaultParamInitialization extends Expression
AnExpressionthat can be used on the right-hand side of an assignment to initialize a variable or parameter of a given type to a statically unknown value. To do this, this class' semantics simply leaves aPushAnyon the stack. Instances of this class can be returned byType.unknownValue(CFG, CodeLocation), but should not be directly placed insideCFGs at parse time.
-
-
Constructor Summary
Constructors Constructor Description DefaultParamInitialization(CFG cfg, CodeLocation location, Type type)Builds the initializing expression.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <V> booleanaccept(GraphVisitor<CFG,Statement,Edge,V> visitor, V tool)Accepts the givenGraphVisitor.<A extends AbstractState<A>>
AnalysisState<A>forwardSemantics(AnalysisState<A> entryState, InterproceduralAnalysis<A> interprocedural, StatementStore<A> expressions)Computes the forward semantics of the statement, expressing how semantic information is transformed by the execution of this statement.intsetOffset(int offset)Sets the offset of this node to the given value, and then proceeds by setting the one of its nested nodes (if any) to subsequent values.java.lang.StringtoString()-
Methods inherited from class it.unive.lisa.program.cfg.statement.Expression
equals, getMetaVariables, getParentStatement, getRootStatement, getStatementEvaluatedAfter, getStatementEvaluatedBefore, getStaticType, hashCode, setParentStatement
-
Methods inherited from class it.unive.lisa.program.cfg.statement.Statement
backwardSemantics, compareTo, getCFG, getEvaluationPredecessor, getEvaluationSuccessor, getLocation, getOffset, stopsExecution, throwsError
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface it.unive.lisa.program.cfg.ProgramPoint
getProgram
-
-
-
-
Constructor Detail
-
DefaultParamInitialization
public DefaultParamInitialization(CFG cfg, CodeLocation location, Type type)
Builds the initializing expression.- Parameters:
cfg- theCFGwhere the initialization will happenlocation- theCodeLocationwhere the initialization will happentype- the static type of the variable or parameter to initialize
-
-
Method Detail
-
setOffset
public int setOffset(int offset)
Description copied from interface:CodeNodeSets the offset of this node to the given value, and then proceeds by setting the one of its nested nodes (if any) to subsequent values. The last offset used is returned.- Parameters:
offset- the offset to set- Returns:
- the last offset used while setting the offsets of nested nodes
-
accept
public <V> boolean accept(GraphVisitor<CFG,Statement,Edge,V> visitor, V tool)
Description copied from interface:NodeAccepts the givenGraphVisitor. Implementors of this method are responsible for invokingGraphVisitor.visit(Object, Graph, Node)on this node afterNode.accept(GraphVisitor, Object)has been invoked on all nested nodes, if any. The visiting should stop at the first of such calls that returnfalse.- Type Parameters:
V- the type of auxiliary tool thatvisitorcan use- Parameters:
visitor- the visitor that is visiting theGraphcontaining this nodetool- the auxiliary tool thatvisitorcan use- Returns:
- whether or not the visiting should stop when this call returns, as decided by the visitor itself
-
forwardSemantics
public <A extends AbstractState<A>> AnalysisState<A> forwardSemantics(AnalysisState<A> entryState, InterproceduralAnalysis<A> interprocedural, StatementStore<A> expressions) throws SemanticException
Description copied from class:StatementComputes the forward semantics of the statement, expressing how semantic information is transformed by the execution of this statement. This method is also responsible for recursively invoking theStatement.forwardSemantics(AnalysisState, InterproceduralAnalysis, StatementStore)of each nestedExpression, saving the result of each call inexpressions.- Specified by:
forwardSemanticsin classStatement- Type Parameters:
A- the type ofAbstractState- Parameters:
entryState- the entry state that represents the abstract values of each program variable and memory location when the execution reaches this statementinterprocedural- the interprocedural analysis of the program to analyzeexpressions- the cache where analysis states of intermediate expressions must be stored- Returns:
- the
AnalysisStaterepresenting the abstract result of the execution of this statement - Throws:
SemanticException- if something goes wrong during the computation
-
-