edu.cmu.cs.crystal.tac
Interface ITACBranchSensitiveTransferFunction<LE>
- Type Parameters:
LE
- Type representing the analysis knowledge.
- All Superinterfaces:
- IFlowAnalysisDefinition<LE>
- All Known Implementing Classes:
- AbstractTACBranchSensitiveTransferFunction, ConstantTransferFunction, MayAliasTransferFunction
public interface ITACBranchSensitiveTransferFunction<LE>
- extends IFlowAnalysisDefinition<LE>
Interface for defining branch-sensitive
flow analysis transfer functions based on 3-address code instructions.
Implement this interface directly or use a pre-defined abstract base classes
for it.
To create a flow analysis, pass an instance of this interface to
TACFlowAnalysis
.
- Author:
- Kevin Bierhoff
- See Also:
TACInstruction
,
ITACTransferFunction
Method Summary |
void |
setAnalysisContext(ITACAnalysisContext context)
This method is used to pass a variable query interface to the
transfer function. |
IResult<LE> |
transfer(ArrayInitInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(BinaryOperation binop,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(CastInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(ConstructorCallInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(CopyInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(DotClassInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(EnhancedForConditionInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(InstanceofInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(LoadArrayInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(LoadFieldInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(LoadLiteralInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(MethodCallInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(NewArrayInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(NewObjectInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(ReturnInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(SourceVariableDeclaration instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(SourceVariableReadInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(StoreArrayInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(StoreFieldInstruction instr,
List<ILabel> labels,
LE value)
|
IResult<LE> |
transfer(UnaryOperation unop,
List<ILabel> labels,
LE value)
|
setAnalysisContext
void setAnalysisContext(ITACAnalysisContext context)
- This method is used to pass a variable query interface to the
transfer function. Transfer functions can, but do not
have to, store the passed object in one of their fields for future use.
The provided object can be used to find
Variable
objects for AST nodes.
- Parameters:
context
- Interface to query for variables given AST nodes.
transfer
IResult<LE> transfer(ArrayInitInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(BinaryOperation binop,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(CastInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(DotClassInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(ConstructorCallInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(CopyInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(EnhancedForConditionInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(InstanceofInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(LoadLiteralInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(LoadArrayInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(LoadFieldInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(MethodCallInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(NewArrayInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(NewObjectInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(ReturnInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(StoreArrayInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(StoreFieldInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(SourceVariableDeclaration instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(SourceVariableReadInstruction instr,
List<ILabel> labels,
LE value)
transfer
IResult<LE> transfer(UnaryOperation unop,
List<ILabel> labels,
LE value)