Package com.ibm.wala.demandpa.flowgraph
Class DemandPointerFlowGraph.StatementVisitor
- java.lang.Object
-
- com.ibm.wala.ssa.SSAInstruction.Visitor
-
- com.ibm.wala.demandpa.flowgraph.DemandPointerFlowGraph.StatementVisitor
-
- All Implemented Interfaces:
AbstractDemandFlowGraph.FlowStatementVisitor,SSAInstruction.IVisitor
- Enclosing class:
- DemandPointerFlowGraph
public static class DemandPointerFlowGraph.StatementVisitor extends SSAInstruction.Visitor implements AbstractDemandFlowGraph.FlowStatementVisitor
A visitor that generates graph nodes and edges for an IR. strategy: when visiting a statement, for each use of that statement, add a graph edge from def to use. TODO: special treatment for parameter passing, etc.
-
-
Field Summary
Fields Modifier and Type Field Description protected DefUseduDef-use informationprotected IRirThe governing IRprotected CGNodenodeThe node whose statements we are currently traversingprotected SymbolTablesymbolTableGoverning symbol table
-
Constructor Summary
Constructors Constructor Description StatementVisitor(HeapModel heapModel, IFlowGraph g, IClassHierarchy cha, CallGraph cg, CGNode node)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddExceptionDefConstraints(IR ir, CGNode node, List<ProgramCounter> peis, PointerKey exceptionVar, Set<IClass> catchClasses)Generate constraints which assign exception values into an exception pointerISSABasicBlockgetBasicBlock()voidsetBasicBlock(ISSABasicBlock block)The calling loop must call this in each iteration!voidvisitArrayLoad(SSAArrayLoadInstruction instruction)voidvisitArrayStore(SSAArrayStoreInstruction instruction)voidvisitCheckCast(SSACheckCastInstruction instruction)voidvisitGet(SSAGetInstruction instruction)voidvisitGetCaughtException(SSAGetCaughtExceptionInstruction instruction)protected voidvisitGetInternal(int lval, int ref, boolean isStatic, FieldReference field)voidvisitInvoke(SSAInvokeInstruction instruction)voidvisitLoadMetadata(SSALoadMetadataInstruction instruction)voidvisitNew(SSANewInstruction instruction)voidvisitPi(SSAPiInstruction instruction)voidvisitPut(SSAPutInstruction instruction)voidvisitPutInternal(int rval, int ref, boolean isStatic, FieldReference field)voidvisitReturn(SSAReturnInstruction instruction)voidvisitThrow(SSAThrowInstruction instruction)-
Methods inherited from class com.ibm.wala.ssa.SSAInstruction.Visitor
visitArrayLength, visitBinaryOp, visitComparison, visitConditionalBranch, visitConversion, visitGoto, visitInstanceof, visitMonitor, visitPhi, visitSwitch, visitUnaryOp
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.ibm.wala.ssa.SSAInstruction.IVisitor
visitArrayLength, visitBinaryOp, visitComparison, visitConditionalBranch, visitConversion, visitGoto, visitInstanceof, visitMonitor, visitPhi, visitSwitch, visitUnaryOp
-
-
-
-
Field Detail
-
node
protected final CGNode node
The node whose statements we are currently traversing
-
ir
protected final IR ir
The governing IR
-
symbolTable
protected final SymbolTable symbolTable
Governing symbol table
-
du
protected final DefUse du
Def-use information
-
-
Constructor Detail
-
StatementVisitor
public StatementVisitor(HeapModel heapModel, IFlowGraph g, IClassHierarchy cha, CallGraph cg, CGNode node)
-
-
Method Detail
-
visitArrayLoad
public void visitArrayLoad(SSAArrayLoadInstruction instruction)
- Specified by:
visitArrayLoadin interfaceSSAInstruction.IVisitor- Overrides:
visitArrayLoadin classSSAInstruction.Visitor
-
visitArrayStore
public void visitArrayStore(SSAArrayStoreInstruction instruction)
- Specified by:
visitArrayStorein interfaceSSAInstruction.IVisitor- Overrides:
visitArrayStorein classSSAInstruction.Visitor
-
visitCheckCast
public void visitCheckCast(SSACheckCastInstruction instruction)
- Specified by:
visitCheckCastin interfaceSSAInstruction.IVisitor- Overrides:
visitCheckCastin classSSAInstruction.Visitor
-
visitReturn
public void visitReturn(SSAReturnInstruction instruction)
- Specified by:
visitReturnin interfaceSSAInstruction.IVisitor- Overrides:
visitReturnin classSSAInstruction.Visitor
-
visitGet
public void visitGet(SSAGetInstruction instruction)
- Specified by:
visitGetin interfaceSSAInstruction.IVisitor- Overrides:
visitGetin classSSAInstruction.Visitor
-
visitGetInternal
protected void visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field)
-
visitPut
public void visitPut(SSAPutInstruction instruction)
- Specified by:
visitPutin interfaceSSAInstruction.IVisitor- Overrides:
visitPutin classSSAInstruction.Visitor
-
visitPutInternal
public void visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field)
-
visitInvoke
public void visitInvoke(SSAInvokeInstruction instruction)
- Specified by:
visitInvokein interfaceSSAInstruction.IVisitor- Overrides:
visitInvokein classSSAInstruction.Visitor
-
visitNew
public void visitNew(SSANewInstruction instruction)
- Specified by:
visitNewin interfaceSSAInstruction.IVisitor- Overrides:
visitNewin classSSAInstruction.Visitor
-
visitThrow
public void visitThrow(SSAThrowInstruction instruction)
- Specified by:
visitThrowin interfaceSSAInstruction.IVisitor- Overrides:
visitThrowin classSSAInstruction.Visitor
-
visitGetCaughtException
public void visitGetCaughtException(SSAGetCaughtExceptionInstruction instruction)
- Specified by:
visitGetCaughtExceptionin interfaceSSAInstruction.IVisitor- Overrides:
visitGetCaughtExceptionin classSSAInstruction.Visitor
-
addExceptionDefConstraints
protected void addExceptionDefConstraints(IR ir, CGNode node, List<ProgramCounter> peis, PointerKey exceptionVar, Set<IClass> catchClasses)
Generate constraints which assign exception values into an exception pointer- Parameters:
node- governing nodepeis- list of PEI instructionsexceptionVar- PointerKey representing a pointer to an exception valuecatchClasses- the types "caught" by the exceptionVar
-
visitPi
public void visitPi(SSAPiInstruction instruction)
- Specified by:
visitPiin interfaceSSAInstruction.IVisitor- Overrides:
visitPiin classSSAInstruction.Visitor
-
getBasicBlock
public ISSABasicBlock getBasicBlock()
-
setBasicBlock
public void setBasicBlock(ISSABasicBlock block)
The calling loop must call this in each iteration!- Specified by:
setBasicBlockin interfaceAbstractDemandFlowGraph.FlowStatementVisitor
-
visitLoadMetadata
public void visitLoadMetadata(SSALoadMetadataInstruction instruction)
- Specified by:
visitLoadMetadatain interfaceSSAInstruction.IVisitor- Overrides:
visitLoadMetadatain classSSAInstruction.Visitor
-
-