public abstract class AbstractLValueScopeDiscoverer extends java.lang.Object implements LValueScopeDiscoverer
| Modifier and Type | Class and Description |
|---|---|
(package private) class |
AbstractLValueScopeDiscoverer.ScopeDefinition |
private static class |
AbstractLValueScopeDiscoverer.ScopeKey |
| Modifier and Type | Field and Description |
|---|---|
(package private) java.util.Stack<StatementContainer<StructuredStatement>> |
currentBlock |
(package private) int |
currentDepth |
(package private) StatementContainer<StructuredStatement> |
currentMark |
(package private) java.util.List<AbstractLValueScopeDiscoverer.ScopeDefinition> |
discoveredCreations |
(package private) java.util.Map<NamedVariable,AbstractLValueScopeDiscoverer.ScopeDefinition> |
earliestDefinition |
(package private) java.util.Map<java.lang.Integer,java.util.Map<NamedVariable,java.lang.Boolean>> |
earliestDefinitionsByLevel |
private ScopeDiscoverInfoCache |
factCache |
(package private) Options |
options |
private MethodPrototype |
prototype |
(package private) VariableFactory |
variableFactory |
| Constructor and Description |
|---|
AbstractLValueScopeDiscoverer(Options options,
MethodPrototype prototype,
VariableFactory variableFactory) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcollect, collectLocalVariableAssignment, descendLambdasfinal java.util.Map<NamedVariable,AbstractLValueScopeDiscoverer.ScopeDefinition> earliestDefinition
final java.util.Map<java.lang.Integer,java.util.Map<NamedVariable,java.lang.Boolean>> earliestDefinitionsByLevel
int currentDepth
java.util.Stack<StatementContainer<StructuredStatement>> currentBlock
final java.util.List<AbstractLValueScopeDiscoverer.ScopeDefinition> discoveredCreations
final VariableFactory variableFactory
StatementContainer<StructuredStatement> currentMark
Options options
private final MethodPrototype prototype
private final ScopeDiscoverInfoCache factCache
AbstractLValueScopeDiscoverer(Options options, MethodPrototype prototype, VariableFactory variableFactory)
ScopeDiscoverInfoCache getFactCache()
public void enterBlock(StructuredStatement structuredStatement)
enterBlock in interface LValueScopeDiscovererpublic boolean ifCanDefine()
ifCanDefine in interface LValueScopeDiscovererpublic void processOp04Statement(Op04StructuredStatement statement)
processOp04Statement in interface LValueScopeDiscovererpublic void mark(StatementContainer<StructuredStatement> mark)
mark in interface LValueScopeDiscovererpublic void leaveBlock(StructuredStatement structuredStatement)
leaveBlock in interface LValueScopeDiscovererpublic void collect(StackSSALabel lValue, StatementContainer<StructuredStatement> statementContainer, Expression value)
collect in interface LValueAssignmentCollector<StructuredStatement>collect in interface LValueScopeDiscovererpublic void collectMultiUse(StackSSALabel lValue, StatementContainer<StructuredStatement> statementContainer, Expression value)
collectMultiUse in interface LValueAssignmentCollector<StructuredStatement>collectMultiUse in interface LValueScopeDiscovererpublic void collectMutatedLValue(LValue lValue, StatementContainer<StructuredStatement> statementContainer, Expression value)
collectMutatedLValue in interface LValueAssignmentCollector<StructuredStatement>collectMutatedLValue in interface LValueScopeDiscovererpublic void markDiscoveredCreations()
private StatementContainer<StructuredStatement> getNonInit(StatementContainer<StructuredStatement> creationContainer)
private boolean defineInsideSwitchContent(LValue scopedEntity, java.util.List<AbstractLValueScopeDiscoverer.ScopeDefinition> definitions, java.util.List<StatementContainer<StructuredStatement>> commonScope)
private static <T> java.util.List<T> getCommonPrefix(java.util.List<T> a,
java.util.List<T> b)
private JavaTypeInstance getUnclashedType(InferredJavaType inferredJavaType)