Package it.unive.lisa.analysis.dataflow
Class ReachingDefinitions
- java.lang.Object
-
- it.unive.lisa.analysis.dataflow.ReachingDefinitions
-
- All Implemented Interfaces:
it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
,it.unive.lisa.analysis.SemanticEvaluator
public class ReachingDefinitions extends java.lang.Object implements it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
An implementation of the reaching definition dataflow analysis.
-
-
Constructor Summary
Constructors Constructor Description ReachingDefinitions()
Builds an empty reaching definition object.ReachingDefinitions(it.unive.lisa.symbolic.value.Identifier variable, it.unive.lisa.program.cfg.ProgramPoint pp)
Builds a new reaching definition object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object obj)
java.util.Collection<ReachingDefinitions>
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.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
java.util.Collection<ReachingDefinitions>
gen(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
java.util.Collection<it.unive.lisa.symbolic.value.Identifier>
getInvolvedIdentifiers()
int
hashCode()
java.util.Collection<ReachingDefinitions>
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.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
java.util.Collection<ReachingDefinitions>
kill(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
ReachingDefinitions
popScope(it.unive.lisa.analysis.ScopeToken scope)
ReachingDefinitions
pushScope(it.unive.lisa.analysis.ScopeToken scope)
it.unive.lisa.analysis.representation.DomainRepresentation
representation()
java.lang.String
toString()
-
-
-
Constructor Detail
-
ReachingDefinitions
public ReachingDefinitions()
Builds an empty reaching definition object.
-
ReachingDefinitions
public ReachingDefinitions(it.unive.lisa.symbolic.value.Identifier variable, it.unive.lisa.program.cfg.ProgramPoint pp)
Builds a new reaching definition object.- Parameters:
variable
- the variable being definedpp
- the location where the definition happens
-
-
Method Detail
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
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.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
-
gen
public java.util.Collection<ReachingDefinitions> 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.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
- Specified by:
gen
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
-
gen
public java.util.Collection<ReachingDefinitions> gen(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
- Specified by:
gen
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
-
kill
public java.util.Collection<ReachingDefinitions> 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.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
- Specified by:
kill
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
-
kill
public java.util.Collection<ReachingDefinitions> kill(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions> domain)
- Specified by:
kill
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
- Specified by:
representation
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
-
pushScope
public ReachingDefinitions 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.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
- Throws:
it.unive.lisa.analysis.SemanticException
-
popScope
public ReachingDefinitions 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.PossibleForwardDataflowDomain<ReachingDefinitions>,ReachingDefinitions>
- Throws:
it.unive.lisa.analysis.SemanticException
-
-