Class AstSSAPropagationCallGraphBuilder.AstConstraintVisitor
java.lang.Object
com.ibm.wala.ssa.SSAInstruction.Visitor
com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.ConstraintVisitor
com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder.AstConstraintVisitor
- All Implemented Interfaces:
AstInstructionVisitor, SSAInstruction.IVisitor
- Direct Known Subclasses:
AstJavaSSAPropagationCallGraphBuilder.AstJavaConstraintVisitor, JSSSAPropagationCallGraphBuilder.JSConstraintVisitor
- Enclosing class:
AstSSAPropagationCallGraphBuilder
protected static class AstSSAPropagationCallGraphBuilder.AstConstraintVisitor
extends SSAPropagationCallGraphBuilder.ConstraintVisitor
implements AstInstructionVisitor
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classprotected static interfaceNested classes/interfaces inherited from class SSAPropagationCallGraphBuilder.ConstraintVisitor
SSAPropagationCallGraphBuilder.ConstraintVisitor.DefaultInvariantComputer, SSAPropagationCallGraphBuilder.ConstraintVisitor.InvariantComputerModifier and TypeClassDescriptionclassprotected static interface -
Field Summary
Fields inherited from class SSAPropagationCallGraphBuilder.ConstraintVisitor
basicBlock, builder, du, ir, node, symbolTable, systemModifier and TypeFieldDescriptionprotected ISSABasicBlockThe basic block currently being processedprotected final SSAPropagationCallGraphBuilderThe governing call graph builder.protected final DefUseDef-use informationprotected final IRViewThe governing IRprotected final CGNodeThe node whose statements we are currently traversingprotected final SymbolTableGoverning symbol tableprotected final PropagationSystemThe governing propagation system, into which constraints are added -
Constructor Summary
ConstructorsConstructorDescriptionAstConstraintVisitor(AstSSAPropagationCallGraphBuilder builder, CGNode node) -
Method Summary
Modifier and TypeMethodDescriptionprotected AstSSAPropagationCallGraphBuilderprotected voidnewFieldFullOperation(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, PointerKey objKey, PointerKey fieldKey) protected voidnewFieldOperation(CGNode opNode, int objVn, int fieldsVn, boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action) protected voidnewFieldOperationFieldConstant(CGNode opNode, boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, int objVn, InstanceKey[] fieldsKeys) protected voidnewFieldOperationObjectAndFieldConstant(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, InstanceKey[] objKeys, InstanceKey[] fieldsKeys) protected voidnewFieldOperationOnlyFieldConstant(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, PointerKey objKey, InstanceKey[] fieldsKeys) protected voidnewFieldOperationOnlyObjectConstant(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, PointerKey fieldKey, InstanceKey[] objKeys) protected voidnewFieldRead(CGNode opNode, int objVn, int fieldsVn, int lhsVn) protected voidnewFieldRead(CGNode opNode, int objVn, int fieldsVn, PointerKey lhs) voidnewFieldWrite(CGNode opNode, int objVn, int fieldsVn, int rhsVn) voidnewFieldWrite(CGNode opNode, int objVn, int fieldsVn, InstanceKey[] rhsFixedValues) voidnewFieldWrite(CGNode opNode, int objVn, int fieldsVn, PointerKey rhs) voidnewFieldWrite(CGNode opNode, int objVn, InstanceKey[] fieldKeys, InstanceKey[] rhsValues) voidnewFieldWrite(CGNode opNode, int objVn, InstanceKey[] fieldKeys, PointerKey rhs) voidvisitAstGlobalRead(AstGlobalRead instruction) voidvisitAstGlobalWrite(AstGlobalWrite instruction) voidvisitAstLexicalRead(AstLexicalRead instruction) voidvisitAstLexicalWrite(AstLexicalWrite instruction) voidvoidvisitPropertyRead(AstPropertyRead instruction) voidvisitPropertyWrite(AstPropertyWrite instruction) voidvisitPut(SSAPutInstruction inst) Methods inherited from class SSAPropagationCallGraphBuilder.ConstraintVisitor
contentsAreInvariant, contentsAreInvariant, doVisitArrayLoad, doVisitArrayStore, getAnalysisCache, getBasicBlock, getClassHierarchy, getFilteredPointerKeyForLocal, getInstanceKeyForAllocation, getInstanceKeyForClassObject, getInstanceKeyForConstant, getInstanceKeyForMultiNewArray, getInstanceKeyForPEI, getInvariantContents, getInvariantContents, getOptions, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticField, getTargetForCall, hasNoInterestingUses, isRootType, processClassInitializer, processPutField, processPutStatic, setBasicBlock, visitArrayLoad, visitArrayStore, visitCheckCast, visitGet, visitGetCaughtException, visitGetInternal, visitInvoke, visitInvokeInternal, visitLoadMetadata, visitNew, visitPhi, visitPi, visitPutInternal, visitReturn, visitThrowModifier and TypeMethodDescriptionprotected booleancontentsAreInvariant(SymbolTable symbolTable, DefUse du, int valueNumber) protected booleancontentsAreInvariant(SymbolTable symbolTable, DefUse du, int[] valueNumber) protected voiddoVisitArrayLoad(int def, int arrayRef) voiddoVisitArrayStore(int arrayRef, int value) protected IAnalysisCacheViewprotected IClassHierarchygetFilteredPointerKeyForLocal(int valueNumber, FilteredPointerKey.TypeFilter filter) getInstanceKeyForAllocation(NewSiteReference allocation) getInstanceKeyForClassObject(Object obj, TypeReference type) <T> InstanceKeygetInstanceKeyForMultiNewArray(NewSiteReference allocation, int dim) getInstanceKeyForPEI(ProgramCounter instr, TypeReference type) protected InstanceKey[]getInvariantContents(int valueNumber) protected InstanceKey[]getInvariantContents(SymbolTable symbolTable, DefUse du, CGNode node, int valueNumber) protected AnalysisOptionsgetPointerKeyForLocal(int valueNumber) getTargetForCall(CGNode caller, CallSiteReference site, IClass recv, InstanceKey[] iKey) protected booleanhasNoInterestingUses(int vn) protected booleanisRootType(IClass klass) protected voidprocessClassInitializer(IClass klass) TODO: lift most of this logic to PropagationCallGraphBuildervoidprocessPutField(int rval, int ref, IField f) protected voidprocessPutStatic(int rval, FieldReference field, IField f) 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) protected voidvisitInvokeInternal(SSAAbstractInvokeInstruction instruction, SSAPropagationCallGraphBuilder.ConstraintVisitor.InvariantComputer invs) voidvisitLoadMetadata(SSALoadMetadataInstruction instruction) voidvisitNew(SSANewInstruction instruction) voidvisitPhi(SSAPhiInstruction instruction) voidvisitPi(SSAPiInstruction instruction) voidvisitPutInternal(int rval, int ref, boolean isStatic, FieldReference field) voidvisitReturn(SSAReturnInstruction instruction) voidvisitThrow(SSAThrowInstruction instruction) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface AstInstructionVisitor
visitAssert, visitEachElementHasNext, visitEcho, visitIsDefined, visitYieldModifier and TypeMethodDescriptiondefault voidvisitAssert(AstAssertInstruction instruction) default voiddefault voidvisitEcho(AstEchoInstruction inst) default voiddefault voidMethods inherited from interface SSAInstruction.IVisitor
visitArrayLength, visitBinaryOp, visitComparison, visitConditionalBranch, visitConversion, visitGoto, visitInstanceof, visitMonitor, visitSwitch, visitUnaryOpModifier and TypeMethodDescriptiondefault voidvisitArrayLength(SSAArrayLengthInstruction instruction) default voidvisitBinaryOp(SSABinaryOpInstruction instruction) default voidvisitComparison(SSAComparisonInstruction instruction) default voidvisitConditionalBranch(SSAConditionalBranchInstruction instruction) default voidvisitConversion(SSAConversionInstruction instruction) default voidvisitGoto(SSAGotoInstruction instruction) default voidvisitInstanceof(SSAInstanceofInstruction instruction) default voidvisitMonitor(SSAMonitorInstruction instruction) default voidvisitSwitch(SSASwitchInstruction instruction) default voidvisitUnaryOp(SSAUnaryOpInstruction instruction)
-
Constructor Details
-
AstConstraintVisitor
-
-
Method Details
-
getBuilder
- Overrides:
getBuilderin classSSAPropagationCallGraphBuilder.ConstraintVisitor
-
getPointerKeyForObjectCatalog
-
getPointerKeysForReflectedFieldRead
-
getPointerKeysForReflectedFieldWrite
-
visitPropertyRead
- Specified by:
visitPropertyReadin interfaceAstInstructionVisitor
-
visitPropertyWrite
- Specified by:
visitPropertyWritein interfaceAstInstructionVisitor
-
visitAstLexicalRead
- Specified by:
visitAstLexicalReadin interfaceAstInstructionVisitor
-
visitAstLexicalWrite
- Specified by:
visitAstLexicalWritein interfaceAstInstructionVisitor
-
visitAstGlobalRead
- Specified by:
visitAstGlobalReadin interfaceAstInstructionVisitor
-
visitAstGlobalWrite
- Specified by:
visitAstGlobalWritein interfaceAstInstructionVisitor
-
visitPut
- Specified by:
visitPutin interfaceSSAInstruction.IVisitor- Overrides:
visitPutin classSSAPropagationCallGraphBuilder.ConstraintVisitor
-
visitEachElementGet
- Specified by:
visitEachElementGetin interfaceAstInstructionVisitor
-
newFieldOperation
protected void newFieldOperation(CGNode opNode, int objVn, int fieldsVn, boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action) -
newFieldOperationFieldConstant
protected void newFieldOperationFieldConstant(CGNode opNode, boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, int objVn, InstanceKey[] fieldsKeys) -
newFieldFullOperation
protected void newFieldFullOperation(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, PointerKey objKey, PointerKey fieldKey) -
newFieldOperationOnlyFieldConstant
protected void newFieldOperationOnlyFieldConstant(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, PointerKey objKey, InstanceKey[] fieldsKeys) -
newFieldOperationOnlyObjectConstant
protected void newFieldOperationOnlyObjectConstant(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, PointerKey fieldKey, InstanceKey[] objKeys) -
newFieldOperationObjectAndFieldConstant
protected void newFieldOperationObjectAndFieldConstant(boolean isLoadOperation, AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction action, InstanceKey[] objKeys, InstanceKey[] fieldsKeys) -
newFieldWrite
-
newFieldWrite
-
newFieldWrite
public void newFieldWrite(CGNode opNode, int objVn, InstanceKey[] fieldKeys, InstanceKey[] rhsValues) -
newFieldWrite
-
newFieldWrite
-
newFieldRead
-
fieldReadAction
protected AstSSAPropagationCallGraphBuilder.AstConstraintVisitor.ReflectedFieldAction fieldReadAction(PointerKey lhs) -
newFieldRead
-