edu.cmu.cs.crystal.analysis.constant
Class ConstantTransferFunction
java.lang.Object
edu.cmu.cs.crystal.analysis.constant.ConstantTransferFunction
- All Implemented Interfaces:
- IFlowAnalysisDefinition<TupleLatticeElement<Variable,BooleanConstantLE>>, ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
public class ConstantTransferFunction
- extends Object
- implements ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
Method Summary |
TupleLatticeElement<Variable,BooleanConstantLE> |
createEntryValue(MethodDeclaration m)
Creates entry analysis information for analyzing a given method. |
AnalysisDirection |
getAnalysisDirection()
Informs Crystal in which direction to perform the analysis. |
ILatticeOperations<TupleLatticeElement<Variable,BooleanConstantLE>> |
getLatticeOperations()
Gets the lattice operations for computing flow analysis
results for a given method. |
void |
setAnalysisContext(ITACAnalysisContext analysisContext)
This method is used to pass a variable query interface to the
transfer function. |
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(ArrayInitInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(BinaryOperation binop,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(CastInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(ConstructorCallInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(CopyInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(DotClassInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(EnhancedForConditionInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(InstanceofInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(LoadArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(LoadFieldInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(LoadLiteralInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(MethodCallInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(NewArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(NewObjectInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(ReturnInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(SourceVariableDeclaration instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(SourceVariableReadInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(StoreArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(StoreFieldInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
IResult<TupleLatticeElement<Variable,BooleanConstantLE>> |
transfer(UnaryOperation unop,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
|
ConstantTransferFunction
public ConstantTransferFunction()
getLatticeOperations
public ILatticeOperations<TupleLatticeElement<Variable,BooleanConstantLE>> getLatticeOperations()
- Description copied from interface:
IFlowAnalysisDefinition
- Gets the lattice operations for computing flow analysis
results for a given method.
Crystal uses the result of this method to compare and join intermediate
results.
- Specified by:
getLatticeOperations
in interface IFlowAnalysisDefinition<TupleLatticeElement<Variable,BooleanConstantLE>>
- Returns:
- lattice operations to be used for computing flow analysis
results for a given method.
createEntryValue
public TupleLatticeElement<Variable,BooleanConstantLE> createEntryValue(MethodDeclaration m)
- Description copied from interface:
IFlowAnalysisDefinition
- Creates entry analysis information for analyzing a given method.
Crystal's flow analysis uses the result of this method as the incoming
analysis information to transfer over the first (or last, for backwards
analyses) instruction in the given method.
- Specified by:
createEntryValue
in interface IFlowAnalysisDefinition<TupleLatticeElement<Variable,BooleanConstantLE>>
- Parameters:
m
- the method to create the lattice operations for
- Returns:
- entry analysis information for analyzing a given method.
getAnalysisDirection
public AnalysisDirection getAnalysisDirection()
- Description copied from interface:
IFlowAnalysisDefinition
- Informs Crystal in which direction to perform the analysis.
- Specified by:
getAnalysisDirection
in interface IFlowAnalysisDefinition<TupleLatticeElement<Variable,BooleanConstantLE>>
- Returns:
- the direction of the analysis; never
null
.
setAnalysisContext
public void setAnalysisContext(ITACAnalysisContext analysisContext)
- Description copied from interface:
ITACBranchSensitiveTransferFunction
- 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.
- Specified by:
setAnalysisContext
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
- Parameters:
analysisContext
- Interface to query for variables given AST nodes.
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(ArrayInitInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(BinaryOperation binop,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(CastInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(DotClassInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(ConstructorCallInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(CopyInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(InstanceofInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(LoadLiteralInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(LoadArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(LoadFieldInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(MethodCallInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(NewArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(NewObjectInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(StoreArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(StoreFieldInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(UnaryOperation unop,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(SourceVariableDeclaration instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(SourceVariableReadInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(EnhancedForConditionInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>
transfer
public IResult<TupleLatticeElement<Variable,BooleanConstantLE>> transfer(ReturnInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,BooleanConstantLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,BooleanConstantLE>>