public static class DemandPointerFlowGraph.StatementVisitor extends SSAInstruction.Visitor implements AbstractDemandFlowGraph.FlowStatementVisitor
Modifier and Type | Field and Description |
---|---|
protected DefUse |
du
Def-use information
|
protected IR |
ir
The governing IR
|
protected CGNode |
node
The node whose statements we are currently traversing
|
protected SymbolTable |
symbolTable
Governing symbol table
|
Constructor and Description |
---|
StatementVisitor(HeapModel heapModel,
IFlowGraph g,
IClassHierarchy cha,
CallGraph cg,
CGNode node) |
Modifier and Type | Method and 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 pointer
|
ISSABasicBlock |
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) |
visitArrayLength, visitBinaryOp, visitComparison, visitConditionalBranch, visitConversion, visitGoto, visitInstanceof, visitMonitor, visitPhi, visitSwitch, visitUnaryOp
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
visitArrayLength, visitBinaryOp, visitComparison, visitConditionalBranch, visitConversion, visitGoto, visitInstanceof, visitMonitor, visitPhi, visitSwitch, visitUnaryOp
protected final CGNode node
protected final IR ir
protected final SymbolTable symbolTable
protected final DefUse du
public StatementVisitor(HeapModel heapModel, IFlowGraph g, IClassHierarchy cha, CallGraph cg, CGNode node)
public void visitArrayLoad(SSAArrayLoadInstruction instruction)
visitArrayLoad
in interface SSAInstruction.IVisitor
visitArrayLoad
in class SSAInstruction.Visitor
public void visitArrayStore(SSAArrayStoreInstruction instruction)
visitArrayStore
in interface SSAInstruction.IVisitor
visitArrayStore
in class SSAInstruction.Visitor
public void visitCheckCast(SSACheckCastInstruction instruction)
visitCheckCast
in interface SSAInstruction.IVisitor
visitCheckCast
in class SSAInstruction.Visitor
public void visitReturn(SSAReturnInstruction instruction)
visitReturn
in interface SSAInstruction.IVisitor
visitReturn
in class SSAInstruction.Visitor
public void visitGet(SSAGetInstruction instruction)
visitGet
in interface SSAInstruction.IVisitor
visitGet
in class SSAInstruction.Visitor
protected void visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field)
public void visitPut(SSAPutInstruction instruction)
visitPut
in interface SSAInstruction.IVisitor
visitPut
in class SSAInstruction.Visitor
public void visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field)
public void visitInvoke(SSAInvokeInstruction instruction)
visitInvoke
in interface SSAInstruction.IVisitor
visitInvoke
in class SSAInstruction.Visitor
public void visitNew(SSANewInstruction instruction)
visitNew
in interface SSAInstruction.IVisitor
visitNew
in class SSAInstruction.Visitor
public void visitThrow(SSAThrowInstruction instruction)
visitThrow
in interface SSAInstruction.IVisitor
visitThrow
in class SSAInstruction.Visitor
public void visitGetCaughtException(SSAGetCaughtExceptionInstruction instruction)
visitGetCaughtException
in interface SSAInstruction.IVisitor
visitGetCaughtException
in class SSAInstruction.Visitor
protected void addExceptionDefConstraints(IR ir, CGNode node, List<ProgramCounter> peis, PointerKey exceptionVar, Set<IClass> catchClasses)
node
- governing nodepeis
- list of PEI instructionsexceptionVar
- PointerKey representing a pointer to an exception valuecatchClasses
- the types "caught" by the exceptionVarpublic void visitPi(SSAPiInstruction instruction)
visitPi
in interface SSAInstruction.IVisitor
visitPi
in class SSAInstruction.Visitor
public ISSABasicBlock getBasicBlock()
public void setBasicBlock(ISSABasicBlock block)
setBasicBlock
in interface AbstractDemandFlowGraph.FlowStatementVisitor
public void visitLoadMetadata(SSALoadMetadataInstruction instruction)
visitLoadMetadata
in interface SSAInstruction.IVisitor
visitLoadMetadata
in class SSAInstruction.Visitor