edu.cmu.cs.crystal.analysis.live
Class LiveVariableTransferFunction
java.lang.Object
edu.cmu.cs.crystal.simple.AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
edu.cmu.cs.crystal.analysis.live.LiveVariableTransferFunction
- All Implemented Interfaces:
- IFlowAnalysisDefinition<TupleLatticeElement<Variable,LiveVariableLE>>, ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
public class LiveVariableTransferFunction
- extends AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
Method Summary |
TupleLatticeElement<Variable,LiveVariableLE> |
createEntryValue(MethodDeclaration d)
Creates entry analysis information for analyzing a given method. |
AnalysisDirection |
getAnalysisDirection()
Informs Crystal in which direction to perform the analysis. |
ILatticeOperations<TupleLatticeElement<Variable,LiveVariableLE>> |
getLatticeOperations()
Gets the lattice operations for computing flow analysis
results for a given method. |
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(ArrayInitInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(BinaryOperation binop,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(CastInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(ConstructorCallInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(CopyInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(DotClassInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(EnhancedForConditionInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(InstanceofInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(LoadArrayInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(LoadFieldInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(LoadLiteralInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(MethodCallInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(NewArrayInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(NewObjectInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(ReturnInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(SourceVariableDeclaration instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(SourceVariableReadInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(StoreArrayInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(StoreFieldInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
TupleLatticeElement<Variable,LiveVariableLE> |
transfer(UnaryOperation unop,
TupleLatticeElement<Variable,LiveVariableLE> value)
|
LiveVariableTransferFunction
public LiveVariableTransferFunction()
getLatticeOperations
public ILatticeOperations<TupleLatticeElement<Variable,LiveVariableLE>> 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,LiveVariableLE> createEntryValue(MethodDeclaration d)
- 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:
d
- 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,LiveVariableLE>>
- Overrides:
getAnalysisDirection
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Returns:
- the direction of the analysis; never
null
.
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(ArrayInitInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(BinaryOperation binop,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(CastInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(DotClassInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(ConstructorCallInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(CopyInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(EnhancedForConditionInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(InstanceofInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(LoadLiteralInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(LoadArrayInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(LoadFieldInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(MethodCallInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(NewArrayInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(NewObjectInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(ReturnInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(StoreArrayInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(StoreFieldInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(SourceVariableDeclaration instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(SourceVariableReadInstruction instr,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
transfer
public TupleLatticeElement<Variable,LiveVariableLE> transfer(UnaryOperation unop,
TupleLatticeElement<Variable,LiveVariableLE> value)
- Specified by:
transfer
in interface ITACTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>
- Overrides:
transfer
in class AbstractingTransferFunction<TupleLatticeElement<Variable,LiveVariableLE>>