edu.cmu.cs.crystal.analysis.alias
Class MayAliasTransferFunction
java.lang.Object
edu.cmu.cs.crystal.tac.AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
edu.cmu.cs.crystal.analysis.alias.MayAliasTransferFunction
- All Implemented Interfaces:
- IFlowAnalysisDefinition<TupleLatticeElement<Variable,AliasLE>>, ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
public class MayAliasTransferFunction
- extends AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
Method Summary |
TupleLatticeElement<Variable,AliasLE> |
createEntryValue(MethodDeclaration m)
Creates entry analysis information for analyzing a given method. |
ILatticeOperations<TupleLatticeElement<Variable,AliasLE>> |
getLatticeOperations()
Gets the lattice operations for computing flow analysis
results for a given method. |
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(ArrayInitInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(BinaryOperation binop,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(CastInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(CopyInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(DotClassInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(InstanceofInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(LoadArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(LoadFieldInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(LoadLiteralInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(MethodCallInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(NewArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(NewObjectInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(SourceVariableDeclaration instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
IResult<TupleLatticeElement<Variable,AliasLE>> |
transfer(UnaryOperation unop,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
|
MayAliasTransferFunction
public MayAliasTransferFunction(ICrystalAnalysis analysis)
getLatticeOperations
public ILatticeOperations<TupleLatticeElement<Variable,AliasLE>> 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.
- Returns:
- lattice operations to be used for computing flow analysis
results for a given method.
createEntryValue
public TupleLatticeElement<Variable,AliasLE> 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.
- Parameters:
m
- the method to create the lattice operations for
- Returns:
- entry analysis information for analyzing a given method.
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(ArrayInitInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(BinaryOperation binop,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(CastInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(DotClassInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(CopyInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(InstanceofInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadLiteralInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(LoadFieldInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(MethodCallInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(NewArrayInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(NewObjectInstruction instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(UnaryOperation unop,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
transfer
public IResult<TupleLatticeElement<Variable,AliasLE>> transfer(SourceVariableDeclaration instr,
List<ILabel> labels,
TupleLatticeElement<Variable,AliasLE> value)
- Specified by:
transfer
in interface ITACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>
- Overrides:
transfer
in class AbstractTACBranchSensitiveTransferFunction<TupleLatticeElement<Variable,AliasLE>>