Class 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()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface it.unive.lisa.analysis.dataflow.DataflowElement

        canProcess, tracksIdentifiers
    • 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 variable
        v - the constant value
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getInvolvedIdentifiers

        public java.util.Collection<it.unive.lisa.symbolic.value.Identifier> getInvolvedIdentifiers()
        Specified by:
        getInvolvedIdentifiers in interface it.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 interface it.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 interface it.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 interface it.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 interface it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,​ConstantPropagation>
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • representation

        public it.unive.lisa.analysis.representation.DomainRepresentation representation()
        Specified by:
        representation in interface it.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 interface it.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 interface it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<ConstantPropagation>,​ConstantPropagation>
        Throws:
        it.unive.lisa.analysis.SemanticException