public class StrongLocalMustAliasAnalysis extends LocalMustAliasAnalysis
LocalMustAliasAnalysis#UNKNOWN
.
E.g. assume the following example:
while(..) {
c = foo(); //(1)
c.doSomething(); //(2)
}
While it is certainly true that c at (2) must-alias c at (1) (they have the same value number), it is also true that
in a second iteration, c at (2) may not alias the previous c at (2).FlowAnalysis.Flow
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<java.lang.Integer> |
invalidInstanceKeys |
container, localsAndFieldRefs, mergePointToValueToNumber, nextNumber, rhsToNumber
filterUnitToAfterFlow, unitToAfterFlow
filterUnitToBeforeFlow, graph, unitToBeforeFlow
Constructor and Description |
---|
StrongLocalMustAliasAnalysis(UnitGraph g) |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
instanceKeyString(Local l,
Stmt s)
Returns a string (natural number) representation of the instance key associated with l
at statement s or
null if there is no such key associated. |
boolean |
mustAlias(Local l1,
Stmt s1,
Local l2,
Stmt s2) |
copy, entryInitialFlow, flowThrough, hasInfoOn, merge, merge, newInitialFlow, parameterRefNumber, thisRefNumber
doAnalysis, isForward
getFlow, getFlowAfter, getFlowBefore, omissible
mergeInto, treatTrapHandlersAsEntries
public StrongLocalMustAliasAnalysis(UnitGraph g)
public boolean mustAlias(Local l1, Stmt s1, Local l2, Stmt s2)
mustAlias
in class LocalMustAliasAnalysis
public java.lang.String instanceKeyString(Local l, Stmt s)
null
if there is no such key associated.instanceKeyString
in class LocalMustAliasAnalysis
l
- any local of the associated methods
- the statement at which to check