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.ConstantPropagation(it.unive.lisa.symbolic.value.Identifier id, java.lang.Integer v)
Builds the new constant propagation object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(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()
int
hashCode()
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)
ConstantPropagation
popScope(it.unive.lisa.analysis.ScopeToken scope)
ConstantPropagation
pushScope(it.unive.lisa.analysis.ScopeToken scope)
it.unive.lisa.analysis.representation.DomainRepresentation
representation()
java.lang.String
toString()
-
-
-
Constructor Detail
-
ConstantPropagation
public ConstantPropagation()
Builds an empty constant propagation object.
-
ConstantPropagation
public ConstantPropagation(it.unive.lisa.symbolic.value.Identifier id, java.lang.Integer v)
Builds the new constant propagation object.- Parameters:
id
- the constant variablev
- the constant value
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getInvolvedIdentifiers
public java.util.Collection<it.unive.lisa.symbolic.value.Identifier> getInvolvedIdentifiers()
- Specified by:
getInvolvedIdentifiers
in 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:
gen
in 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:
gen
in 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:
kill
in 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:
kill
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
- Specified by:
representation
in 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:
pushScope
in 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:
popScope
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,ConstantPropagation>
- Throws:
it.unive.lisa.analysis.SemanticException
-
-