Package it.unive.lisa.analysis.dataflow
Class ConstantPropagation
- java.lang.Object
-
- it.unive.lisa.analysis.dataflow.ConstantPropagation
-
- All Implemented Interfaces:
it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>,it.unive.lisa.analysis.SemanticEvaluator
public class ConstantPropagation extends java.lang.Object implements it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
An implementation of the overflow-insensitive constant propagation dataflow analysis, that focuses only on integers.
-
-
Constructor Summary
Constructors Constructor Description ConstantPropagation()Builds an empty constant propagation object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanProcess(it.unive.lisa.symbolic.SymbolicExpression expression)booleanequals(java.lang.Object obj)java.util.Collection<ConstantPropagation>gen(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)java.util.Collection<ConstantPropagation>gen(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)java.util.Collection<it.unive.lisa.symbolic.value.Identifier>getInvolvedIdentifiers()inthashCode()java.util.Collection<ConstantPropagation>kill(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)java.util.Collection<ConstantPropagation>kill(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)ConstantPropagationpopScope(it.unive.lisa.analysis.ScopeToken scope)ConstantPropagationpushScope(it.unive.lisa.analysis.ScopeToken scope)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()java.lang.StringtoString()booleantracksIdentifiers(it.unive.lisa.symbolic.value.Identifier id)
-
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getInvolvedIdentifiers
public java.util.Collection<it.unive.lisa.symbolic.value.Identifier> getInvolvedIdentifiers()
- Specified by:
getInvolvedIdentifiersin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
-
gen
public java.util.Collection<ConstantPropagation> gen(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)
- Specified by:
genin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
-
gen
public java.util.Collection<ConstantPropagation> gen(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)
- Specified by:
genin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
-
kill
public java.util.Collection<ConstantPropagation> kill(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)
- Specified by:
killin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
-
kill
public java.util.Collection<ConstantPropagation> kill(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation> domain)
- Specified by:
killin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
tracksIdentifiers
public boolean tracksIdentifiers(it.unive.lisa.symbolic.value.Identifier id)
- Specified by:
tracksIdentifiersin interfaceit.unive.lisa.analysis.SemanticEvaluator
-
canProcess
public boolean canProcess(it.unive.lisa.symbolic.SymbolicExpression expression)
- Specified by:
canProcessin interfaceit.unive.lisa.analysis.SemanticEvaluator
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
- Specified by:
representationin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
-
pushScope
public ConstantPropagation pushScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
- Specified by:
pushScopein interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
popScope
public ConstantPropagation popScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
- Specified by:
popScopein interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
-