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 DefUse
du
Def-use informationprotected IR
ir
The governing IRprotected CGNode
node
The node whose statements we are currently traversingprotected SymbolTable
symbolTable
Governing 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 void
addExceptionDefConstraints(IR ir, CGNode node, List<ProgramCounter> peis, PointerKey exceptionVar, Set<IClass> catchClasses)
Generate constraints which assign exception values into an exception pointerISSABasicBlock
getBasicBlock()
void
setBasicBlock(ISSABasicBlock block)
The calling loop must call this in each iteration!void
visitArrayLoad(SSAArrayLoadInstruction instruction)
void
visitArrayStore(SSAArrayStoreInstruction instruction)
void
visitCheckCast(SSACheckCastInstruction instruction)
void
visitGet(SSAGetInstruction instruction)
void
visitGetCaughtException(SSAGetCaughtExceptionInstruction instruction)
protected void
visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field)
void
visitInvoke(SSAInvokeInstruction instruction)
void
visitLoadMetadata(SSALoadMetadataInstruction instruction)
void
visitNew(SSANewInstruction instruction)
void
visitPi(SSAPiInstruction instruction)
void
visitPut(SSAPutInstruction instruction)
void
visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field)
void
visitReturn(SSAReturnInstruction instruction)
void
visitThrow(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:
visitArrayLoad
in interfaceSSAInstruction.IVisitor
- Overrides:
visitArrayLoad
in classSSAInstruction.Visitor
-
visitArrayStore
public void visitArrayStore(SSAArrayStoreInstruction instruction)
- Specified by:
visitArrayStore
in interfaceSSAInstruction.IVisitor
- Overrides:
visitArrayStore
in classSSAInstruction.Visitor
-
visitCheckCast
public void visitCheckCast(SSACheckCastInstruction instruction)
- Specified by:
visitCheckCast
in interfaceSSAInstruction.IVisitor
- Overrides:
visitCheckCast
in classSSAInstruction.Visitor
-
visitReturn
public void visitReturn(SSAReturnInstruction instruction)
- Specified by:
visitReturn
in interfaceSSAInstruction.IVisitor
- Overrides:
visitReturn
in classSSAInstruction.Visitor
-
visitGet
public void visitGet(SSAGetInstruction instruction)
- Specified by:
visitGet
in interfaceSSAInstruction.IVisitor
- Overrides:
visitGet
in classSSAInstruction.Visitor
-
visitGetInternal
protected void visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field)
-
visitPut
public void visitPut(SSAPutInstruction instruction)
- Specified by:
visitPut
in interfaceSSAInstruction.IVisitor
- Overrides:
visitPut
in classSSAInstruction.Visitor
-
visitPutInternal
public void visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field)
-
visitInvoke
public void visitInvoke(SSAInvokeInstruction instruction)
- Specified by:
visitInvoke
in interfaceSSAInstruction.IVisitor
- Overrides:
visitInvoke
in classSSAInstruction.Visitor
-
visitNew
public void visitNew(SSANewInstruction instruction)
- Specified by:
visitNew
in interfaceSSAInstruction.IVisitor
- Overrides:
visitNew
in classSSAInstruction.Visitor
-
visitThrow
public void visitThrow(SSAThrowInstruction instruction)
- Specified by:
visitThrow
in interfaceSSAInstruction.IVisitor
- Overrides:
visitThrow
in classSSAInstruction.Visitor
-
visitGetCaughtException
public void visitGetCaughtException(SSAGetCaughtExceptionInstruction instruction)
- Specified by:
visitGetCaughtException
in interfaceSSAInstruction.IVisitor
- Overrides:
visitGetCaughtException
in 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:
visitPi
in interfaceSSAInstruction.IVisitor
- Overrides:
visitPi
in classSSAInstruction.Visitor
-
getBasicBlock
public ISSABasicBlock getBasicBlock()
-
setBasicBlock
public void setBasicBlock(ISSABasicBlock block)
The calling loop must call this in each iteration!- Specified by:
setBasicBlock
in interfaceAbstractDemandFlowGraph.FlowStatementVisitor
-
visitLoadMetadata
public void visitLoadMetadata(SSALoadMetadataInstruction instruction)
- Specified by:
visitLoadMetadata
in interfaceSSAInstruction.IVisitor
- Overrides:
visitLoadMetadata
in classSSAInstruction.Visitor
-
-