Escape "<" and ">" in Javadoc when not used as HTML tag syntax

This commit is contained in:
Ben Liblit 2017-12-19 12:57:25 -06:00
parent d29e278291
commit f60c164ec1
179 changed files with 294 additions and 294 deletions

View File

@ -2438,7 +2438,7 @@ public abstract class JDTJava2CAstTranslator<T extends Position> {
/**
* Expands the form: for ( [final] Type var: iterable ) { ... } Into something equivalent to: for ( Iterator iter =
* iterable.iter(); iter.hasNext(); ) { [final] Type var = (Type) iter.next(); ... } Or, in the case of an array: for ( int idx =
* 0; i < iterable.length; i++ ) { [final] Type var = iterable[idx]; ... } Except that the expression "iterable" is only evaluate
* 0; i &lt; iterable.length; i++ ) { [final] Type var = iterable[idx]; ... } Except that the expression "iterable" is only evaluate
* once (or is it?)
*
* @param n

View File

@ -22,7 +22,7 @@ import com.ibm.wala.ipa.callgraph.CallGraph;
import com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder;
/**
* @author Brian Pfretzschner <brian.pfretzschner@gmail.com>
* @author Brian Pfretzschner &lt;brian.pfretzschner@gmail.com&gt;
*/
public class NodejsRequireJsonTest {

View File

@ -22,7 +22,7 @@ import com.ibm.wala.ipa.callgraph.CallGraph;
import com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder;
/**
* @author Brian Pfretzschner <brian.pfretzschner@gmail.com>
* @author Brian Pfretzschner &lt;brian.pfretzschner@gmail.com&gt;
*/
public class NodejsRequireTargetSelectorResolveTest {

View File

@ -46,7 +46,7 @@ import com.ibm.wala.ssa.IRFactory;
import com.ibm.wala.util.WalaException;
/**
* @author Brian Pfretzschner <brian.pfretzschner@gmail.com>
* @author Brian Pfretzschner &lt;brian.pfretzschner@gmail.com&gt;
*/
public class NodejsCallGraphBuilderUtil extends JSCallGraphUtil {

View File

@ -51,7 +51,7 @@ import com.ibm.wala.util.ssa.ClassLookupException;
* This class is used by WALA internals to resolve to what functions a call
* could potentially invoke.
*
* @author Brian Pfretzschner <brian.pfretzschner@gmail.com>
* @author Brian Pfretzschner &lt;brian.pfretzschner@gmail.com&gt;
*/
public class NodejsRequireTargetSelector implements MethodTargetSelector {
@ -314,7 +314,7 @@ public class NodejsRequireTargetSelector implements MethodTargetSelector {
* 1. let PARTS = path split(START)
* 2. let I = count of PARTS - 1
* 3. let DIRS = []
* 4. while I >= 0,
* 4. while I &gt;= 0,
* a. if PARTS[I] = "node_modules" CONTINUE
* b. DIR = path join(PARTS[0 .. I] + "node_modules")
* c. DIRS = DIRS + DIR

View File

@ -24,7 +24,7 @@ import com.ibm.wala.util.collections.HashSetFactory;
import com.ibm.wala.util.io.TemporaryFile;
/**
* @author Brian Pfretzschner <brian.pfretzschner@gmail.com>
* @author Brian Pfretzschner &lt;brian.pfretzschner@gmail.com&gt;
*/
public class NodejsRequiredCoreModule extends NodejsRequiredSourceModule {

View File

@ -30,7 +30,7 @@ import com.ibm.wala.util.io.Streams;
* environment. The resulting function will be named GLOBAL_PREFIX + relative
* file-name. To retrieve the final function name, use getFunctioName().
*
* @author Brian Pfretzschner <brian.pfretzschner@gmail.com>
* @author Brian Pfretzschner &lt;brian.pfretzschner@gmail.com&gt;
*/
public class NodejsRequiredSourceModule extends SourceFileModule {

View File

@ -45,12 +45,12 @@ public class NotDetectable {
}
/**
* This example does not work: We know 5 > 3 and sometimes length > 5 > 3. In
* This example does not work: We know 5 &gt; 3 and sometimes length &gt; 5 &gt; 3. In
* case of variables this conditional relation is resolved by introducing pi
* nodes. For constants pi nodes can be generated, but the pi variables will
* not be used (maybe due to constant propagation?). Additionally 5 != 3, so
* even if we would use pi-variables for 5, there would be no relation to 3: 0
* -(5)-> 5, 5 -(-5)-> 0, {5,length} -(0)-> 5', 0 -(3)-> 3, 3 -(-3)-> 0 Given
* -(5)-&gt; 5, 5 -(-5)-&gt; 0, {5,length} -(0)-&gt; 5', 0 -(3)-&gt; 3, 3 -(-3)-&gt; 0 Given
* the inequality graph above, we know that 5,5',3 are larger than 0 and 5
* larger 3 and length is larger than 5', but not 5' larger than 3. Which is
* not always the case in general anyway.

View File

@ -195,7 +195,7 @@ public class ContextSensitiveReachingDefs {
* balanced since a definition in a callee used as a seed for the analysis may then reach a caller, yielding a "return" without a
* corresponding "call." An alternative to this approach, used in the Reps-Horwitz-Sagiv POPL95 paper, would be to "lift" the
* domain of putstatic instructions with a 0 (bottom) element, have a 0->0 transition in all transfer functions, and then seed the
* analysis with the path edge (main_entry, 0) -> (main_entry, 0). We choose the partially-balanced approach to avoid pollution of
* analysis with the path edge (main_entry, 0) -&gt; (main_entry, 0). We choose the partially-balanced approach to avoid pollution of
* the flow functions.
*
*/

View File

@ -156,8 +156,8 @@ public class ArrayBoundsGraph extends DirectedHyperGraph<Integer> {
/**
* Add variable as constant with value value.
*
* This will create the following construct: [zero] -(value)-> [h1] -0- >
* [variable] -(-value)-> [h2] -0-> [zero].
* This will create the following construct: [zero] -(value)-&gt; [h1] -0- &gt;
* [variable] -(-value)-&gt; [h2] -0-&gt; [zero].
*
* The bidirectional linking, allows things like
*
@ -214,8 +214,8 @@ public class ArrayBoundsGraph extends DirectedHyperGraph<Integer> {
* Adds var as source var. A source var is a variable, which can be used as
* source for shortest path computation.
*
* This will create the following construct: [unlimited] -> [var] -> [var]
* -(unlimited)-> [unlimited]
* This will create the following construct: [unlimited] -&gt; [var] -&gt; [var]
* -(unlimited)-&gt; [unlimited]
*
* This is a trap door construct: if [var] is not set to 0 it will get the
* value unlimited, if [var] is set to 0 it will stay 0.

View File

@ -112,16 +112,16 @@ public class ArrayBoundsGraphBuilder {
/**
* Case 1: piRestrictor restricts the pi variable for upper/ lower bounds graph
* Given this code below, we want to create a hyper edge
* {piParent, piRestrictor} --> {piVar}.
* {piParent, piRestrictor} --&gt; {piVar}.
*
* If is op in {<, >} we now, that the distance from piRestrictor to piVar
* is +-1 as ( a < b ) <==> ( a <= b - 1), same with "<".
* If is op in {&lt;, &gt;} we now, that the distance from piRestrictor to piVar
* is +-1 as ( a &lt; b ) &lt;==&gt; ( a &lt;= b - 1), same with "&lt;".
* To be more precise we introduce a helper node and add
* {piRestrictor} -- (-)1 --> {helper}
* {piParent, helper} --> {piVar}
* {piRestrictor} -- (-)1 --&gt; {helper}
* {piParent, helper} --&gt; {piVar}
*
* Case 2: no restriction is given by the branch (i.e. the operator is not equal)
* {piParent} --> {piVar}
* {piParent} --&gt; {piVar}
*
* <code>if (piParent op piRestrictor) {piVar = piParent}</code>
*

View File

@ -22,7 +22,7 @@ public class ConditionNormalizer {
* hand side of the comparison, also if the branch is not taken, the
* operation needs to be negated.
*
* p.a. the condition is !(rhs >= lhs), it will be normalized to lhs > rhs
* p.a. the condition is !(rhs &gt;= lhs), it will be normalized to lhs &gt; rhs
*
* @param cnd
* condition to normalize

View File

@ -11,7 +11,7 @@ import com.ibm.wala.analysis.arraybounds.hypergraph.weight.edgeweights.EdgeWeigh
* @author Stephan Gocht {@code <stephan@gobro.de>}
*
* @param <T>
* Type used in HyperNodes (HyperNode<T>)
* Type used in HyperNodes (HyperNode&lt;T&gt;)
*/
public class DirectedHyperEdge<T> {
/** Contains all destinations of this HyperEdge */

View File

@ -172,8 +172,8 @@ public class ShortestPath<T> {
*
* <pre>
* (n1, n2)->(n3)
* Round 1: n1 = unset, n2 = -3 -> n3 = max(unset,-3) = -3
* Round 2: n1 = 1, n2 = -3 -> n3 = max(1,-3) = 1
* Round 1: n1 = unset, n2 = -3 -&gt; n3 = max(unset,-3) = -3
* Round 2: n1 = 1, n2 = -3 -&gt; n3 = max(1,-3) = 1
* </pre>
*
* Would we compute the minimum of n3 over all rounds, it would be -3, but 1

View File

@ -5,7 +5,7 @@ import java.util.Comparator;
import com.ibm.wala.analysis.arraybounds.hypergraph.weight.Weight.Type;
/**
* Defines a normal Order on Weight: unlimited < ... < -1 < 0 < 1 < ... not_set
* Defines a normal Order on Weight: unlimited &lt; ... &lt; -1 &lt; 0 &lt; 1 &lt; ... not_set
* is not comparable
*
* @author Stephan Gocht {@code <stephan@gobro.de>}

View File

@ -5,7 +5,7 @@ import java.util.Comparator;
import com.ibm.wala.analysis.arraybounds.hypergraph.weight.Weight.Type;
/**
* Defines a reverse Order on Weight: ... > 1 > 0 > -1 > ... > unlimited not_set
* Defines a reverse Order on Weight: ... &gt; 1 &gt; 0 &gt; -1 &gt; ... &gt; unlimited not_set
* is not comparable
*
* @author Stephan Gocht {@code <stephan@gobro.de>}

View File

@ -94,7 +94,7 @@ public class CloneInterpreter implements SSAContextInterpreter {
private final static int NEW_PC = 0;
/**
* Mapping from TypeReference -> IR TODO: Soft references?
* Mapping from TypeReference -&gt; IR TODO: Soft references?
*/
final private Map<TypeReference, IR> IRCache = HashMapFactory.make();

View File

@ -67,7 +67,7 @@ import com.ibm.wala.util.warnings.Warnings;
public class FactoryBypassInterpreter extends AbstractReflectionInterpreter {
/**
* A Map from CallerSiteContext -> Set <TypeReference>represents the types a factory method might create in a particular context
* A Map from CallerSiteContext -&gt; Set &lt;TypeReference&gt;represents the types a factory method might create in a particular context
*/
private final Map<Context, Set<TypeReference>> map = HashMapFactory.make();

View File

@ -24,7 +24,7 @@ public interface IBasicBlock<InstType> extends INodeWithNumber, Iterable<InstTyp
* is an index into the instruction array that contains all the instructions
* for the method.
*
* If the result is < 0, the block has no instructions
* If the result is &lt; 0, the block has no instructions
*
* @return the instruction index for the first instruction in the basic block.
*/
@ -35,7 +35,7 @@ public interface IBasicBlock<InstType> extends INodeWithNumber, Iterable<InstTyp
* is an index into the instruction array that contains all the instructions
* for the method.
*
* If the result is < 0, the block has no instructions
* If the result is &lt; 0, the block has no instructions
*
* @return the instruction index for the last instruction in the basic block
*/

View File

@ -53,7 +53,7 @@ public class InducedCFG extends AbstractCFG<SSAInstruction, InducedCFG.BasicBloc
private static final boolean DEBUG = false;
/**
* A partial map from Instruction -> BasicBlock
* A partial map from Instruction -&gt; BasicBlock
*/
private final BasicBlock[] i2block;

View File

@ -23,7 +23,7 @@ import com.ibm.wala.util.graph.GraphIntegrity.UnsoundGraphException;
* control flow from a CFG. This is done by detecting exceptions that may always
* (or never) appear.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public interface ExceptionPruningAnalysis<I, T extends IBasicBlock<I>> {

View File

@ -17,7 +17,7 @@ import com.ibm.wala.ipa.callgraph.CGNode;
/**
* Interface to retrieve the result of the interprocedural analysis.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*/
public interface InterprocAnalysisResult<I, T extends IBasicBlock<I>> {

View File

@ -31,7 +31,7 @@ import com.ibm.wala.util.graph.GraphIntegrity.UnsoundGraphException;
* Tries to detect impossible (or always appearing) NullPointerExceptions and removes impossible
* control flow from the CFG.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public final class NullPointerAnalysis {

View File

@ -27,8 +27,8 @@ import com.ibm.wala.ssa.analysis.IExplodedBasicBlock;
* This class has been developed as part of a student project "Studienarbeit" by Markus Herhoffer.
* It has been adapted and integrated into the WALA project by Juergen Graf.
*
* @author Markus Herhoffer <markus.herhoffer@student.kit.edu>
* @author Juergen Graf <graf@kit.edu>
* @author Markus Herhoffer &lt;markus.herhoffer@student.kit.edu&gt;
* @author Juergen Graf &lt;graf@kit.edu&gt;
*/
public final class AnalysisUtil {

View File

@ -19,7 +19,7 @@ import com.ibm.wala.ssa.SSAAbstractInvokeInstruction;
* This class combines two MethodState objects. A MethodState decides if a given method call may throw an exception.
* If the primary MethodState thinks that the call may throw an exception, the fallback MethodState is asked.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
class DelegatingMethodState extends MethodState {

View File

@ -23,7 +23,7 @@ import com.ibm.wala.ssa.analysis.IExplodedBasicBlock;
/**
* A wrapper for the interprocedural analysis result.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
class InterprocAnalysisResultWrapper implements InterprocAnalysisResult<SSAInstruction, IExplodedBasicBlock> {

View File

@ -24,8 +24,8 @@ import com.ibm.wala.ssa.SSAAbstractInvokeInstruction;
* This class has been developed as part of a student project "Studienarbeit" by Markus Herhoffer.
* It has been adapted and integrated into the WALA project by Juergen Graf.
*
* @author Markus Herhoffer <markus.herhoffer@student.kit.edu>
* @author Juergen Graf <graf@kit.edu>
* @author Markus Herhoffer &lt;markus.herhoffer@student.kit.edu&gt;
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
class InterprocMethodState extends MethodState {

View File

@ -54,8 +54,8 @@ import com.ibm.wala.util.strings.Atom;
* This class has been developed as part of a student project "Studienarbeit" by Markus Herhoffer.
* It has been adapted and integrated into the WALA project by Juergen Graf.
*
* @author Markus Herhoffer <markus.herhoffer@student.kit.edu>
* @author Juergen Graf <graf@kit.edu>
* @author Markus Herhoffer &lt;markus.herhoffer@student.kit.edu&gt;
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public final class InterprocNullPointerAnalysis {
@ -230,7 +230,7 @@ public final class InterprocNullPointerAnalysis {
/**
* Filter for CallGraphs
*
* @author Markus Herhoffer <markus.herhoffer@student.kit.edu>
* @author Markus Herhoffer &lt;markus.herhoffer@student.kit.edu&gt;
*
*/
private static class CallGraphFilter {

View File

@ -31,8 +31,8 @@ import com.ibm.wala.util.graph.GraphIntegrity.UnsoundGraphException;
* This class has been developed as part of a student project "Studienarbeit" by Markus Herhoffer.
* It has been adapted and integrated into the WALA project by Juergen Graf.
*
* @author Markus Herhoffer <markus.herhoffer@student.kit.edu>
* @author Juergen Graf <graf@kit.edu>
* @author Markus Herhoffer &lt;markus.herhoffer@student.kit.edu&gt;
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
final class IntraprocAnalysisState implements ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> {

View File

@ -27,7 +27,7 @@ import com.ibm.wala.util.graph.GraphIntegrity.UnsoundGraphException;
/**
* Intraprocedural null pointer analysis for the exploded control flow graph.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public class ExplodedCFGNullPointerAnalysis implements ExceptionPruningAnalysis<SSAInstruction, IExplodedBasicBlock> {

View File

@ -57,7 +57,7 @@ import com.ibm.wala.util.graph.impl.SparseNumberedGraph;
/**
* Intraprocedural dataflow analysis to detect impossible NullPointerExceptions.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public class IntraprocNullPointerAnalysis<T extends ISSABasicBlock> {

View File

@ -17,7 +17,7 @@ import com.ibm.wala.ssa.SSAAbstractInvokeInstruction;
* Provides a way for the nullpointer analysis to decide whether or not a called method
* may throw an exception.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public abstract class MethodState {

View File

@ -26,7 +26,7 @@ import com.ibm.wala.util.intset.IntSet;
/**
* A modifiable control flow graph.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public class MutableCFG<X, T extends IBasicBlock<X>> extends SparseNumberedGraph<T> implements ControlFlowGraph<X, T> {

View File

@ -19,7 +19,7 @@ import com.ibm.wala.util.graph.Graph;
* An EdgeFilter that ignores all edges contained in a given graph. This ca be used
* to subtract a subgraph from its main graph.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public class NegativeGraphFilter<T extends IBasicBlock<?>> implements EdgeFilter<T> {

View File

@ -26,7 +26,7 @@ import com.ibm.wala.util.intset.IntPair;
* functions are not distribute (similar to constant propagation). Therefore we remove
* back edges in the flow graph.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public class NullPointerFrameWork<T extends ISSABasicBlock> implements IKilldallFramework<T, NullPointerState> {

View File

@ -18,7 +18,7 @@ import com.ibm.wala.ssa.ISSABasicBlock;
/**
* Intraprocedural dataflow analysis to detect impossible NullPointerExceptions.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public class NullPointerSolver<B extends ISSABasicBlock> extends DataflowSolver<B, NullPointerState> {

View File

@ -22,7 +22,7 @@ import com.ibm.wala.ssa.SymbolTable;
/**
* States for the ssa variables.
*
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
public class NullPointerState extends AbstractVariable<NullPointerState> {
@ -76,7 +76,7 @@ public class NullPointerState extends AbstractVariable<NullPointerState> {
* <pre>
* v3 = phi v1, v2
* ^ := Meet-operator
* f := phiValueMeetFunction(3, {1, 2}) = v1,v2,v3 -> v1,v2,[v1 ^ v2]
* f := phiValueMeetFunction(3, {1, 2}) = v1,v2,v3 -&gt; v1,v2,[v1 ^ v2]
*
* f(1,?,?) ^ f(?,1,?) = 1,?,? ^ ?,1,? = 1,1,?
*
@ -134,7 +134,7 @@ public class NullPointerState extends AbstractVariable<NullPointerState> {
* <pre>
* ? == unknown, 1 == not null, 0 == null, * == both
*
* meet | ? | 0 | 1 | * | <- rhs
* meet | ? | 0 | 1 | * | &lt;- rhs
* -----|---|---|---|---|
* ? | ? | 0 | 1 | * |
* -----|---|---|---|---|

View File

@ -51,7 +51,7 @@ import com.ibm.wala.ssa.analysis.IExplodedBasicBlock;
import com.ibm.wala.util.collections.Iterator2Iterable;
/**
* @author Juergen Graf <graf@kit.edu>
* @author Juergen Graf &lt;graf@kit.edu&gt;
*
*/
class NullPointerTransferFunctionProvider<T extends ISSABasicBlock> implements ITransferFunctionProvider<T, NullPointerState> {

View File

@ -26,7 +26,7 @@ public class ArrayClassLoader {
private final static boolean DEBUG = false;
/**
* map: TypeReference -> ArrayClass
* map: TypeReference -&gt; ArrayClass
*/
final private HashMap<TypeReference, ArrayClass> arrayClasses = HashMapFactory.make();

View File

@ -122,7 +122,7 @@ public interface IClassLoader {
/**
* blow away references to any classes in the set
*
* @param toRemove Collection<IClass>
* @param toRemove Collection&lt;IClass&gt;
*/
public abstract void removeAll(Collection<IClass> toRemove);
}

View File

@ -29,7 +29,7 @@ import com.ibm.wala.util.warnings.Warnings;
/**
* Read in a jar file from an input stream. Most parts are copied from the NestedJarFileModule class
* and adapted to work with an input stream.
* @author Juergen Graf <juergen.graf@gmail.com>
* @author Juergen Graf &lt;juergen.graf@gmail.com&gt;
*/
public class JarStreamModule extends JarInputStream implements Module {

View File

@ -25,11 +25,11 @@ import com.ibm.wala.util.intset.SparseIntSet;
public class CallFlowEdges {
/**
* A map from integer -> (IBinaryNonNegativeIntRelation)
* A map from integer -&gt; (IBinaryNonNegativeIntRelation)
*
* For a fact d2, edges[d2] gives a relation R=(c,d1) s.t. (<c, d1> -> <s_p,d2>) was recorded as a call flow edge.
* For a fact d2, edges[d2] gives a relation R=(c,d1) s.t. (&lt;c, d1&gt; -&gt; &lt;s_p,d2&gt;) was recorded as a call flow edge.
*
* Note that we handle paths of the form <c, d1> -> <s_p,d1> specially, below.
* Note that we handle paths of the form &lt;c, d1&gt; -&gt; &lt;s_p,d1&gt; specially, below.
*
* TODO: more representation optimization. A special representation for triples? sparse representations for CFG? exploit shorts
* for ints?
@ -37,9 +37,9 @@ public class CallFlowEdges {
private final SparseVector<IBinaryNaturalRelation> edges = new SparseVector<>(1, 1.1f);
/**
* a map from integer d1 -> int set.
* a map from integer d1 -&gt; int set.
*
* for fact d1, identityPaths[d1] gives the set of block numbers C s.t. for c \in C, <c, d1> -> <s_p, d1> is an edge.
* for fact d1, identityPaths[d1] gives the set of block numbers C s.t. for c \in C, &lt;c, d1&gt; -&gt; &lt;s_p, d1&gt; is an edge.
*/
private final SparseVector<IntSet> identityEdges = new SparseVector<>(1, 1.1f);
@ -47,7 +47,7 @@ public class CallFlowEdges {
}
/**
* Record that we've discovered a call edge <c,d1> -> <s_p, d2>
* Record that we've discovered a call edge &lt;c,d1&gt; -&gt; &lt;s_p, d2&gt;
*
* @param c global number identifying the call site node
* @param d1 source fact at the call edge

View File

@ -33,11 +33,11 @@ public class LocalPathEdges {
private final static boolean PARANOID = false;
/**
* A map from integer (d2) -> (IBinaryNonNegativeIntRelation)
* A map from integer (d2) -&gt; (IBinaryNonNegativeIntRelation)
*
* For fact d2, paths[d2] gives a relation R=(n,d1) s.t. (<s_p, d1> -> <n,d2>) is a path edge.
* For fact d2, paths[d2] gives a relation R=(n,d1) s.t. (&lt;s_p, d1&gt; -&gt; &lt;n,d2&gt;) is a path edge.
*
* Note that we handle paths of the form <s_p, d1> -> <n,d1> specially, below. We also handle paths of the form <s_p, 0> -> <n,
* Note that we handle paths of the form &lt;s_p, d1&gt; -&gt; &lt;n,d1&gt; specially, below. We also handle paths of the form &lt;s_p, 0&gt; -&gt; &lt;n,
* d1> specially below.
*
* We choose this somewhat convoluted representation for the following reasons: 1) of the (n, d1, d2) tuple-space, we expect the
@ -58,9 +58,9 @@ public class LocalPathEdges {
* space or time of the non-merging IFDS solver, for which the original paths representation works well. Is there a better data
* structure tradeoff?
*
* A map from integer (d1) -> (IBinaryNonNegativeIntRelation)
* A map from integer (d1) -&gt; (IBinaryNonNegativeIntRelation)
*
* For fact d1, paths[d1] gives a relation R=(n,d2) s.t. (<s_p, d1> -> <n,d2>) is a path edge.
* For fact d1, paths[d1] gives a relation R=(n,d2) s.t. (&lt;s_p, d1&gt; -&gt; &lt;n,d2&gt;) is a path edge.
*
*
* We choose this somewhat convoluted representation for the following reasons: 1) of the (n, d1, d2) tuple-space, we expect the
@ -71,16 +71,16 @@ public class LocalPathEdges {
private final SparseVector<IBinaryNaturalRelation> altPaths;
/**
* a map from integer d1 -> int set.
* a map from integer d1 -&gt; int set.
*
* for fact d1, identityPaths[d1] gives the set of block numbers N s.t. for n \in N, <s_p, d1> -> <n, d1> is a path edge.
* for fact d1, identityPaths[d1] gives the set of block numbers N s.t. for n \in N, &lt;s_p, d1&gt; -&gt; &lt;n, d1&gt; is a path edge.
*/
private final SparseVector<IntSet> identityPaths = new SparseVector<>(1, 1.1f);
/**
* a map from integer d2 -> int set
* a map from integer d2 -&gt; int set
*
* for fact d2, zeroPaths[d2] gives the set of block numbers N s.t. for n \in N, <s_p, 0> -> <n, d2> is a path edge.
* for fact d2, zeroPaths[d2] gives the set of block numbers N s.t. for n \in N, &lt;s_p, 0&gt; -&gt; &lt;n, d2&gt; is a path edge.
*/
private final SparseVector<IntSet> zeroPaths = new SparseVector<>(1, 1.1f);
@ -193,8 +193,8 @@ public class LocalPathEdges {
}
/**
* N.B: If we're using the ZERO_PATH_SHORT_CIRCUIT, then we may have <s_p, d1> -> <n, d2> implicitly represented since we also
* have <s_p, 0> -> <n,d2>. However, getInverse() <b> will NOT </b> return these implicit d1 bits in the result. This translates
* N.B: If we're using the ZERO_PATH_SHORT_CIRCUIT, then we may have &lt;s_p, d1&gt; -&gt; &lt;n, d2&gt; implicitly represented since we also
* have &lt;s_p, 0&gt; -&gt; &lt;n,d2&gt;. However, getInverse() &lt;b&gt; will NOT &lt;/b&gt; return these implicit d1 bits in the result. This translates
* to saying that the caller had better not care about any other d1 other than d1==0 if d1==0 is present. This happens to be true
* in the single use of getInverse() in the tabulation solver, which uses getInverse() to propagate flow from an exit node back to
* the caller's return site(s). Since we know that we will see flow from fact 0 to the return sites(s), we don't care about other

View File

@ -25,10 +25,10 @@ import com.ibm.wala.util.math.LongUtil;
public class LocalSummaryEdges {
/**
* A map from integer n -> (IBinaryNonNegativeIntRelation)
* A map from integer n -&gt; (IBinaryNonNegativeIntRelation)
*
* Let s_p be an entry to this procedure, and x be an exit. n is a integer which uniquely identifies an (s_p,x) relation. For any
* such n, summaries[n] gives a relation R=(d1,d2) s.t. (<s_p, d1> -> <x,d2>) is a summary edge.
* such n, summaries[n] gives a relation R=(d1,d2) s.t. (&lt;s_p, d1&gt; -&gt; &lt;x,d2&gt;) is a summary edge.
*
* Note that this representation is a little different from the representation described in the PoPL 95 paper. We cache summary
* edges at the CALLEE, not at the CALLER!!! This allows us to avoid eagerly installing summary edges at all call sites to a
@ -61,7 +61,7 @@ public class LocalSummaryEdges {
}
/**
* Record a summary edge for the flow d1 -> d2 from an entry s_p to an exit x.
* Record a summary edge for the flow d1 -&gt; d2 from an entry s_p to an exit x.
*
* @param s_p local block number an entry
* @param x local block number of an exit block

View File

@ -89,7 +89,7 @@ public class PartiallyBalancedTabulationSolver<T, P, F> extends TabulationSolver
}
/**
* A path edge <s_p, i> -> <n, j> was propagated, and <s_p, i> was an unbalanced seed.
* A path edge &lt;s_p, i&gt; -&gt; &lt;n, j&gt; was propagated, and &lt;s_p, i&gt; was an unbalanced seed.
* So, we added a new seed callerSeed (to some return site) in the caller. To be overridden
* in subclasses.
*/

View File

@ -12,7 +12,7 @@ package com.ibm.wala.dataflow.IFDS;
/**
* an individual edge <entry, d1> -> <target, d2>
* an individual edge &lt;entry, d1&gt; -&gt; &lt;target, d2&gt;
*
* @param <T> node type in the supergraph
*/

View File

@ -13,7 +13,7 @@ package com.ibm.wala.dataflow.IFDS;
import com.ibm.wala.util.intset.SparseIntSet;
/**
* A flow function which has only the edge 0 -> dest
* A flow function which has only the edge 0 -&gt; dest
*/
public class SingletonFlowFunction implements IReversibleFlowFunction {

View File

@ -15,7 +15,7 @@ import java.util.Collection;
import com.ibm.wala.util.intset.IntSet;
/**
* The solution of a tabulation problem: a mapping from supergraph node -> bit vector representing the dataflow facts that hold at
* The solution of a tabulation problem: a mapping from supergraph node -&gt; bit vector representing the dataflow facts that hold at
* the entry to the supergraph node.
*
* @param <T> type of node in the supergraph

View File

@ -110,23 +110,23 @@ public class TabulationSolver<T, P, F> {
private final TabulationProblem<T, P, F> problem;
/**
* A map from Object (entry node in supergraph) -> LocalPathEdges.
* A map from Object (entry node in supergraph) -&gt; LocalPathEdges.
*
* Logically, this represents a set of edges (s_p,d_i) -> (n, d_j). The data structure is chosen to attempt to save space over
* Logically, this represents a set of edges (s_p,d_i) -&gt; (n, d_j). The data structure is chosen to attempt to save space over
* representing each edge explicitly.
*/
final private Map<T, LocalPathEdges> pathEdges = HashMapFactory.make();
/**
* A map from Object (entry node in supergraph) -> CallFlowEdges.
* A map from Object (entry node in supergraph) -&gt; CallFlowEdges.
*
* Logically, this represents a set of edges (c,d_i) -> (s_p, d_j). The data structure is chosen to attempt to save space over
* Logically, this represents a set of edges (c,d_i) -&gt; (s_p, d_j). The data structure is chosen to attempt to save space over
* representing each edge explicitly.
*/
final private Map<T, CallFlowEdges> callFlowEdges = HashMapFactory.make();
/**
* A map from Object (procedure) -> LocalSummaryEdges.
* A map from Object (procedure) -&gt; LocalSummaryEdges.
*
*/
final protected Map<P, LocalSummaryEdges> summaryEdges = HashMapFactory.make();
@ -754,7 +754,7 @@ public class TabulationSolver<T, P, F> {
}
/**
* Propagate the fact <s_p,i> -> <n, j> has arisen as a path edge. Returns <code>true</code> iff the path edge was not previously
* Propagate the fact &lt;s_p,i&gt; -&gt; &lt;n, j&gt; has arisen as a path edge. Returns &lt;code&gt;true&lt;/code&gt; iff the path edge was not previously
* observed.
*
* @param s_p entry block
@ -791,10 +791,10 @@ public class TabulationSolver<T, P, F> {
}
/**
* Merging: suppose we're doing propagate <s_p,i> -> <n,j> but we already have path edges <s_p,i> -> <n, x>, <s_p,i> -> <n,y>, and
* <s_p,i> -><n, z>.
* Merging: suppose we're doing propagate &lt;s_p,i&gt; -&gt; &lt;n,j&gt; but we already have path edges &lt;s_p,i&gt; -&gt; &lt;n, x&gt;, &lt;s_p,i&gt; -&gt; &lt;n,y&gt;, and
* &lt;s_p,i&gt; -&gt;&lt;n, z&gt;.
*
* let \alpha be the merge function. then instead of <s_p,i> -> <n,j>, we propagate <s_p,i> -> <n, \alpha(j,x,y,z) > !!!
* let \alpha be the merge function. then instead of &lt;s_p,i&gt; -&gt; &lt;n,j&gt;, we propagate &lt;s_p,i&gt; -&gt; &lt;n, \alpha(j,x,y,z) &gt; !!!
*
* return -1 if no fact should be propagated
*/
@ -1042,9 +1042,9 @@ public class TabulationSolver<T, P, F> {
}
/**
* Indicates that due to a path edge <s_p, d1> -> <n, d2> (the 'edge'
* parameter) and a normal flow function application, a new path edge <s_p,
* d1> -> <m, d3> was created. To be overridden in subclasses. We also use
* Indicates that due to a path edge &lt;s_p, d1&gt; -&gt; &lt;n, d2&gt; (the 'edge'
* parameter) and a normal flow function application, a new path edge &lt;s_p,
* d1&gt; -&gt; &lt;m, d3&gt; was created. To be overridden in subclasses. We also use
* this function to record call-to-return flow.
*
*/
@ -1054,9 +1054,9 @@ public class TabulationSolver<T, P, F> {
}
/**
* Indicates that due to a path edge 'edge' <s_p, d1> -> <n, d2> and
* application of a call flow function, a new path edge <calleeEntry, d3> ->
* <calleeEntry, d3> was created. To be overridden in subclasses.
* Indicates that due to a path edge 'edge' &lt;s_p, d1&gt; -&gt; &lt;n, d2&gt; and
* application of a call flow function, a new path edge &lt;calleeEntry, d3&gt; -&gt;
* &lt;calleeEntry, d3&gt; was created. To be overridden in subclasses.
*
*/
@SuppressWarnings("unused")
@ -1066,10 +1066,10 @@ public class TabulationSolver<T, P, F> {
/**
* Combines [25] and [26-28]. In the caller we have a path edge
* 'edgeToCallSite' <s_c, d3> -> <c, d4>, where c is the call site. In the
* callee, we have path edge 'calleeSummaryEdge' <s_p, d1> -> <e_p, d2>. Of
* course, there is a call edge <c, d4> -> <s_p, d1>. Finally, we have a
* return edge <e_p, d2> -> <returnSite, d5>.
* 'edgeToCallSite' &lt;s_c, d3&gt; -&gt; &lt;c, d4&gt;, where c is the call site. In the
* callee, we have path edge 'calleeSummaryEdge' &lt;s_p, d1&gt; -&gt; &lt;e_p, d2&gt;. Of
* course, there is a call edge &lt;c, d4&gt; -&gt; &lt;s_p, d1&gt;. Finally, we have a
* return edge &lt;e_p, d2&gt; -&gt; &lt;returnSite, d5&gt;.
*/
@SuppressWarnings("unused")
protected void newSummaryEdge(PathEdge<T> edgeToCallSite, PathEdge<T> calleeSummaryEdge, T returnSite, int d5) {

View File

@ -114,7 +114,7 @@ public abstract class AbstractFlowGraph extends SlowSparseNumberedLabeledGraph<O
};
/**
* Map: LocalPointerKey -> SSAInvokeInstruction. If we have (x, foo()), that means that x was def'fed by the return value from the
* Map: LocalPointerKey -&gt; SSAInvokeInstruction. If we have (x, foo()), that means that x was def'fed by the return value from the
* call to foo()
*/
protected final Map<PointerKey, SSAAbstractInvokeInstruction> callDefs = HashMapFactory.make();
@ -127,7 +127,7 @@ public abstract class AbstractFlowGraph extends SlowSparseNumberedLabeledGraph<O
protected final Map<PointerKey, Set<SSAAbstractInvokeInstruction>> callParams = HashMapFactory.make();
/**
* Map: LocalPointerKey -> CGNode. If we have (x, foo), then x is a parameter of method foo. For now, we have to re-discover the
* Map: LocalPointerKey -&gt; CGNode. If we have (x, foo), then x is a parameter of method foo. For now, we have to re-discover the
* parameter position. TODO this should just be a set; we can get the CGNode from the {@link LocalPointerKey}
*/
protected final Map<PointerKey, CGNode> params = HashMapFactory.make();

View File

@ -81,13 +81,13 @@ import com.ibm.wala.util.ref.ReferenceCleanser;
*
* The edges represent
* <ul>
* <li>flow from local -> local representing assignment (i.e. phi,pi)
* <li>flow from instancekey -> local for news
* <li>flow from formal -> actual parameter
* <li>flow from return value -> local
* <li>flow from local -&gt; local representing assignment (i.e. phi,pi)
* <li>flow from instancekey -&gt; local for news
* <li>flow from formal -&gt; actual parameter
* <li>flow from return value -&gt; local
* <li>match edges
* <li>local -> local edges representing loads/stores (e.g. x = y.f will have a edge x->y, labelled with f) for a getstatic x = Y.f,
* we have an edge from x -> Y.f.
* <li>local -&gt; local edges representing loads/stores (e.g. x = y.f will have a edge x-&gt;y, labelled with f) for a getstatic x = Y.f,
* we have an edge from x -&gt; Y.f.
* </ul>
*
* N.B: Edges go OPPOSITE the flow of values.
@ -119,20 +119,20 @@ public class SimpleDemandPointerFlowGraph extends SlowSparseNumberedGraph<Object
final BitVectorIntSet cgNodesVisited = new BitVectorIntSet();
/**
* Map: LocalPointerKey -> IField. if we have (x,f), that means x was def'fed by a getfield on f.
* Map: LocalPointerKey -&gt; IField. if we have (x,f), that means x was def'fed by a getfield on f.
*/
final Map<PointerKey, IField> getFieldDefs = HashMapFactory.make();
final Collection<PointerKey> arrayDefs = HashSetFactory.make();
/**
* Map: LocalPointerKey -> SSAInvokeInstruction. If we have (x, foo()), that means that x was def'fed by the return value from a
* Map: LocalPointerKey -&gt; SSAInvokeInstruction. If we have (x, foo()), that means that x was def'fed by the return value from a
* call to foo()
*/
final Map<PointerKey, SSAInvokeInstruction> callDefs = HashMapFactory.make();
/**
* Map: LocalPointerKey -> CGNode. If we have (x, foo), then x is a parameter of method foo. For now, we have to re-discover the
* Map: LocalPointerKey -&gt; CGNode. If we have (x, foo), then x is a parameter of method foo. For now, we have to re-discover the
* parameter position.
*/
final Map<PointerKey, CGNode> params = HashMapFactory.make();

View File

@ -63,12 +63,12 @@ public class SimpleMemoryAccessMap implements MemoryAccessMap {
private static final boolean ALWAYS_BUILD_IR = true;
/**
* Map: IField -> Set<MemoryAccess>
* Map: IField -&gt; Set&lt;MemoryAccess&gt;
*/
final private Map<IField, Set<MemoryAccess>> readMap = HashMapFactory.make();
/**
* Map: IField -> Set<MemoryAccess>
* Map: IField -&gt; Set&lt;MemoryAccess&gt;
*/
final private Map<IField, Set<MemoryAccess>> writeMap = HashMapFactory.make();

View File

@ -51,7 +51,7 @@ public class FILiveObjectAnalysis implements ILiveObjectAnalysis {
private final HeapGraph<?> heapGraph;
/**
* Cached map from InstanceKey -> Set<CGNode>
* Cached map from InstanceKey -&gt; Set&lt;CGNode&gt;
*/
final private Map<InstanceKey, Set<CGNode>> liveNodes = HashMapFactory.make();

View File

@ -26,8 +26,8 @@ public interface ILiveObjectAnalysis {
* @param m method in question
* @param instructionIndex index of an instruction in SSA IR. in m. if -1, it is interpreted as a wildcard meaning "any statement"
* @throws WalaException
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC> may be live immediately after the
* statement <m,instructionIndex>
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC&gt; may be live immediately after the
* statement &lt;m,instructionIndex&gt;
*/
public boolean mayBeLive(CGNode allocMethod, int allocPC, CGNode m, int instructionIndex) throws WalaException;
@ -36,8 +36,8 @@ public interface ILiveObjectAnalysis {
* @param m method in question
* @param instructionIndex index of an instruction in SSA IR. in m. if -1, it is interpreted as a wildcard meaning "any statement"
* @throws WalaException
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC> may be live immediately after the
* statement <m,instructionIndex>
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC&gt; may be live immediately after the
* statement &lt;m,instructionIndex&gt;
*/
public boolean mayBeLive(InstanceKey ik, CGNode m, int instructionIndex) throws WalaException;
@ -45,8 +45,8 @@ public interface ILiveObjectAnalysis {
* @param ik an instance key
* @param m method in question
* @param instructionIndices indices of instructions in SSA IR.
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC> may be live immediately after the
* statement <m,instructionIndex> for any instructionIndex in the set
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC&gt; may be live immediately after the
* statement &lt;m,instructionIndex&gt; for any instructionIndex in the set
*/
public boolean mayBeLive(InstanceKey ik, CGNode m, IntSet instructionIndices);

View File

@ -22,7 +22,7 @@ public interface IMethodEscapeAnalysis {
* @param allocMethod a method which holds an allocation site
* @param allocPC bytecode index of allocation site
* @param m method in question
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC> may escape from an activation of method m,
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC&gt; may escape from an activation of method m,
* false otherwise
*/
public boolean mayEscape(MethodReference allocMethod, int allocPC, MethodReference m) throws WalaException;

View File

@ -23,7 +23,7 @@ public interface INodeEscapeAnalysis extends IMethodEscapeAnalysis {
* @param allocPC bytecode index of allocation site
* @param node method in question
* @throws WalaException
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC> may escape from an activation of node m,
* @returns true if an object allocated at the allocation site &lt;allocMethod,allocPC&gt; may escape from an activation of node m,
* false otherwise
*/
public boolean mayEscape(CGNode allocNode, int allocPC, CGNode node) throws WalaException;

View File

@ -16,7 +16,7 @@ package com.ibm.wala.ipa.callgraph;
* For example, for CFA-1, there is only one name ("caller"); and the context maps "caller" to an IMethod
*
* As another example, for CPA, there would be name for each parameter slot ("zero","one","two"), and the Context provides a mapping
* from this name to a set of types. eg. "one" -> {java.lang.String, java.lang.Date}
* from this name to a set of types. eg. "one" -&gt; {java.lang.String, java.lang.Date}
*/
public interface Context {
/**

View File

@ -134,7 +134,7 @@ public class ExplicitCallGraph extends BasicCallGraph<SSAContextInterpreter> imp
public class ExplicitNode extends NodeImpl {
/**
* A Mapping from call site program counter (int) -> Object, where Object is a CGNode if we've discovered exactly one target for
* A Mapping from call site program counter (int) -&gt; Object, where Object is a CGNode if we've discovered exactly one target for
* the site, or an IntSet of node numbers if we've discovered more than one target for the site.
*/
protected final SparseVector<Object> targets = new SparseVector<>();

View File

@ -31,7 +31,7 @@ import com.ibm.wala.util.intset.IntSet;
*
* @see com.ibm.wala.ipa.callgraph.impl.DelegatingContextSelector
*
* @author Tobias Blaschke <code@tobiasblaschke.de>
* @author Tobias Blaschke &lt;code@tobiasblaschke.de&gt;
*/
public class UnionContextSelector implements ContextSelector {
private final ContextSelector A;

View File

@ -188,7 +188,7 @@ public class Util {
/**
* @return Entrypoints for a set of J2SE Main classes
* @throws IllegalArgumentException if classNames == null
* @throws IllegalArgumentException if (classNames != null) and (0 < classNames.length) and (classNames[0] == null)
* @throws IllegalArgumentException if (classNames != null) and (0 &lt; classNames.length) and (classNames[0] == null)
* @throws IllegalArgumentException if classNames.length == 0
*/
public static Iterable<Entrypoint> makeMainEntrypoints(final ClassLoaderReference loaderRef, final IClassHierarchy cha,

View File

@ -23,10 +23,10 @@ import com.ibm.wala.util.collections.Pair;
* An InstanceKey serves as the representative for an equivalence class of
* objects in the heap, that can be pointed to.
*
* For example, for 0-CFA, an InstanceKey would embody an <IClass>... we model
* For example, for 0-CFA, an InstanceKey would embody an &lt;IClass&gt;... we model
* all instances of a particular class
*
* For 0-1-CFA, an InstanceKey could be <IMethod,statement #>, representing a
* For 0-1-CFA, an InstanceKey could be &lt;IMethod,statement #&gt;, representing a
* particular allocation statement in a particular method.
*/
public interface InstanceKey extends ContextItem {

View File

@ -14,15 +14,15 @@ package com.ibm.wala.ipa.callgraph.propagation;
* A PointerKey instance serves as the representative for an equivalence class
* of pointers. (or more generally ...locations, if we allow primitives).
*
* For example, a PointerKey for 0-CFA might be - a <CGNode,int> pair, where the
* For example, a PointerKey for 0-CFA might be - a &lt;CGNode,int&gt; pair, where the
* int represents an SSA value number. This PointerKey would represent all
* values of the pointer of a particular local variable. - a <FieldReference>,
* values of the pointer of a particular local variable. - a &lt;FieldReference&gt;,
* representing the set of instances of a given field in the heap, or of a
* particular static field.
*
* A PointerKey for 0-1-CFA, with 1-level of InstanceVar context in the Grove et
* al. terminology, would instead of FieldReference, use a - <InstanceKey,
* FieldReference> pair
* al. terminology, would instead of FieldReference, use a - &lt;InstanceKey,
* FieldReference&gt; pair
*/
public interface PointerKey {

View File

@ -589,7 +589,7 @@ public abstract class PropagationCallGraphBuilder implements CallGraphBuilder<In
* LHS U= (RHS n k)
*
*
* Unary op: <lhs>:= Cast_k( <rhs>)
* Unary op: &lt;lhs&gt;:= Cast_k( &lt;rhs&gt;)
*
* (Again, technically a binary op -- see note for Assign)
*
@ -803,7 +803,7 @@ public abstract class PropagationCallGraphBuilder implements CallGraphBuilder<In
}
/**
* Binary op: <dummy>:= ArrayLoad( &lt;arrayref>) Side effect: Creates new equations.
* Binary op: &lt;dummy&gt;:= ArrayLoad( &lt;arrayref&gt;) Side effect: Creates new equations.
*/
public final class ArrayLoadOperator extends UnarySideEffect implements IPointerOperator {
protected final MutableIntSet priorInstances = rememberGetPutHistory ? IntSetUtil.make() : null;
@ -892,7 +892,7 @@ public abstract class PropagationCallGraphBuilder implements CallGraphBuilder<In
}
/**
* Binary op: <dummy>:= ArrayStore( &lt;arrayref>) Side effect: Creates new equations.
* Binary op: &lt;dummy&gt;:= ArrayStore( &lt;arrayref&gt;) Side effect: Creates new equations.
*/
public final class ArrayStoreOperator extends UnarySideEffect implements IPointerOperator {
@Override
@ -976,7 +976,7 @@ public abstract class PropagationCallGraphBuilder implements CallGraphBuilder<In
}
/**
* Binary op: <dummy>:= GetField( <ref>) Side effect: Creates new equations.
* Binary op: &lt;dummy&gt;:= GetField( &lt;ref&gt;) Side effect: Creates new equations.
*/
public class GetFieldOperator extends UnarySideEffect implements IPointerOperator {
private final IField field;

View File

@ -442,7 +442,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
}
/**
* A graph of just the variables in the system. v1 -> v2 iff there exists equation e s.t. e uses v1 and e defs v2.
* A graph of just the variables in the system. v1 -&gt; v2 iff there exists equation e s.t. e uses v1 and e defs v2.
*
* Note that this graph trickily and fragilely reuses the nodeManager from the delegateGraph, above. This will work ok as long as
* every variable is inserted in the delegateGraph.
@ -834,7 +834,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
}
/**
* A graph of just the variables in the system. v1 -> v2 iff there exists an assignment equation e s.t. e uses v1 and e defs v2.
* A graph of just the variables in the system. v1 -&gt; v2 iff there exists an assignment equation e s.t. e uses v1 and e defs v2.
*
*/
public NumberedGraph<PointsToSetVariable> getAssignmentGraph() {
@ -848,7 +848,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
}
/**
* A graph of just the variables in the system. v1 -> v2 iff there exists an Assingnment or Filter equation e s.t. e uses v1 and e
* A graph of just the variables in the system. v1 -&gt; v2 iff there exists an Assingnment or Filter equation e s.t. e uses v1 and e
* defs v2.
*
*/
@ -871,7 +871,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
}
/**
* A graph of just the variables in the system. v1 -> v2 that are related by def-use with "interesting" operators
* A graph of just the variables in the system. v1 -&gt; v2 that are related by def-use with "interesting" operators
*
*/
private abstract class FilteredConstraintGraphView extends AbstractNumberedGraph<PointsToSetVariable> {

View File

@ -81,7 +81,7 @@ public class PropagationSystem extends DefaultFixedPointSolver<PointsToSetVariab
protected final MutableMapping<InstanceKey> instanceKeys = MutableMapping.make();
/**
* A mapping from IClass -> MutableSharedBitVectorIntSet The range represents the instance keys that correspond to a given class.
* A mapping from IClass -&gt; MutableSharedBitVectorIntSet The range represents the instance keys that correspond to a given class.
* This mapping is used to filter sets based on declared types; e.g., in cast constraints
*/
final private Map<IClass, MutableIntSet> class2InstanceKey = HashMapFactory.make();
@ -104,7 +104,7 @@ public class PropagationSystem extends DefaultFixedPointSolver<PointsToSetVariab
/**
* When doing unification, we must also updated the fixed sets in unary side effects.
*
* This maintains a map from PointsToSetVariable -> Set<UnarySideEffect>
* This maintains a map from PointsToSetVariable -&gt; Set&lt;UnarySideEffect&gt;
*/
final private Map<PointsToSetVariable, Set<UnarySideEffect>> fixedSetMap = HashMapFactory.make();

View File

@ -17,7 +17,7 @@ import com.ibm.wala.ipa.callgraph.ContextItem;
import com.ibm.wala.ipa.callgraph.ContextKey;
/**
* This is a {@link Context} which is defined by a pair consisting of <caller node, base context>.
* This is a {@link Context} which is defined by a pair consisting of &lt;caller node, base context&gt;.
*
* The base context is typically some special case; e.g., a JavaTypeContext used for reflection.
*/

View File

@ -16,7 +16,7 @@ import com.ibm.wala.ipa.callgraph.ContextItem;
import com.ibm.wala.ipa.callgraph.ContextKey;
/**
* A context which is a <CGNode, CallSiteReference> pair.
* A context which is a &lt;CGNode, CallSiteReference&gt; pair.
*/
public class CallerSiteContext extends CallerContext {

View File

@ -17,7 +17,7 @@ import com.ibm.wala.ipa.callgraph.ContextItem;
import com.ibm.wala.ipa.callgraph.ContextKey;
/**
* This is a context which is defined by a pair consisting of <caller node, base context>.
* This is a context which is defined by a pair consisting of &lt;caller node, base context&gt;.
*
* The base context is typically some special case; e.g., a JavaTypeContext used for reflection.
*/

View File

@ -86,8 +86,8 @@ public class ZeroXInstanceKeys implements InstanceKeyFactory {
public static final int SMUSH_PRIMITIVE_HOLDERS = 8;
/**
* This variant counts the N, number of allocation sites of a particular type T in each method. If N > SMUSH_LIMIT, then these N
* allocation sites are NOT distinguished ... instead there is a single abstract allocation site for <N,T>
* This variant counts the N, number of allocation sites of a particular type T in each method. If N &gt; SMUSH_LIMIT, then these N
* allocation sites are NOT distinguished ... instead there is a single abstract allocation site for &lt;N,T&gt;
*
* Probably the best choice in many cases.
*/
@ -134,7 +134,7 @@ public class ZeroXInstanceKeys implements InstanceKeyFactory {
final private RTAContextInterpreter contextInterpreter;
/**
* a Map from CGNode->Set<IClass> that should be smushed.
* a Map from CGNode-&gt;Set&lt;IClass&gt; that should be smushed.
*/
protected final Map<CGNode, Set<IClass>> smushMap = HashMapFactory.make();

View File

@ -50,10 +50,10 @@ public class DelegatingExplicitCallGraph extends ExplicitCallGraph {
}
/**
* In this implementation, super.targets is a mapping from call site ->
* In this implementation, super.targets is a mapping from call site -&gt;
* Object, where Object is a
* <ul>
* A Mapping from call site -> Object, where Object is a
* A Mapping from call site -&gt; Object, where Object is a
* <li>CGNode if we've discovered exactly one target for the site
* <li> or an IntSet of node numbers if we've discovered more than one target
* for the site.

View File

@ -63,14 +63,14 @@ public class TypeBasedHeapModel implements HeapModel {
private final Collection<CGNode> nodesHandled = HashSetFactory.make();
/**
* Map: <PointerKey> -> thing, where thing is a FilteredPointerKey or an InstanceKey representing a constant.
* Map: &lt;PointerKey&gt; -&gt; thing, where thing is a FilteredPointerKey or an InstanceKey representing a constant.
*
* computed lazily
*/
private Map<PointerKey, Object> pKeys;
/**
* @param klasses Collection<IClass>
* @param klasses Collection&lt;IClass&gt;
* @throws IllegalArgumentException if cg is null
*/
public TypeBasedHeapModel(AnalysisOptions options, Collection<IClass> klasses, CallGraph cg) {

View File

@ -48,7 +48,7 @@ public class TypeBasedPointerAnalysis extends AbstractPointerAnalysis {
private final TypeBasedHeapModel heapModel;
/**
* Map: IClass -> OrdinalSet
* Map: IClass -&gt; OrdinalSet
*/
private final Map<IClass, OrdinalSet<InstanceKey>> pointsTo = HashMapFactory.make();

View File

@ -98,7 +98,7 @@ public class ClassHierarchy implements IClassHierarchy {
final private IClassLoader[] loaders;
/**
* A mapping from IClass -> Selector -> Set of IMethod
* A mapping from IClass -&gt; Selector -&gt; Set of IMethod
*/
final private HashMap<IClass, Object> targetCache = HashMapFactory.make();
@ -108,7 +108,7 @@ public class ClassHierarchy implements IClassHierarchy {
private final AnalysisScope scope;
/**
* A mapping from IClass (representing an interface) -> Set of IClass that implement that interface
* A mapping from IClass (representing an interface) -&gt; Set of IClass that implement that interface
*/
private final Map<IClass, Set<IClass>> implementors = HashMapFactory.make();
@ -645,7 +645,7 @@ public class ClassHierarchy implements IClassHierarchy {
/**
* Number the class hierarchy tree to support efficient subclass tests. After numbering the tree, n1 is a child of n2 iff n2.left
* <= n1.left ^ n1.left <= n2.right. Described as "relative numbering" by Vitek, Horspool, and Krall, OOPSLA 97
* &lt;= n1.left ^ n1.left &lt;= n2.right. Described as "relative numbering" by Vitek, Horspool, and Krall, OOPSLA 97
*
* TODO: this implementation is recursive; un-recursify if needed
*/
@ -999,7 +999,7 @@ public class ClassHierarchy implements IClassHierarchy {
}
/**
* Solely for optimization; return a Collection<TypeReference> representing the subclasses of Error
* Solely for optimization; return a Collection&lt;TypeReference&gt; representing the subclasses of Error
*
* kind of ugly. a better scheme?
*/
@ -1016,7 +1016,7 @@ public class ClassHierarchy implements IClassHierarchy {
}
/**
* Solely for optimization; return a Collection<TypeReference> representing the subclasses of RuntimeException
* Solely for optimization; return a Collection&lt;TypeReference&gt; representing the subclasses of RuntimeException
*
* kind of ugly. a better scheme?
*/

View File

@ -144,14 +144,14 @@ public interface IClassHierarchy extends Iterable<IClass> {
public Collection<IClass> computeSubClasses(TypeReference type);
/**
* Solely for optimization; return a Collection<TypeReference> representing the subclasses of Error
* Solely for optimization; return a Collection&lt;TypeReference&gt; representing the subclasses of Error
*
* kind of ugly. a better scheme?
*/
public Collection<TypeReference> getJavaLangErrorTypes();
/**
* Solely for optimization; return a Collection<TypeReference> representing the subclasses of {@link RuntimeException}
* Solely for optimization; return a Collection&lt;TypeReference&gt; representing the subclasses of {@link RuntimeException}
*
* kind of ugly. a better scheme?
*/

View File

@ -33,7 +33,7 @@ import com.ibm.wala.util.collections.Iterator2Iterable;
* Computes interprocedural field accesses for a given method.
*
* @author Martin Seidel
* @author Juergen Graf <juergen.graf@gmail.com>
* @author Juergen Graf &lt;juergen.graf@gmail.com&gt;
*
*/
public final class ModRefFieldAccess {

View File

@ -45,7 +45,7 @@ public class BypassMethodTargetSelector implements MethodTargetSelector {
static final boolean DEBUG = false;
/**
* Method summaries collected for methods. Mapping Object -> MethodSummary where Object is either a
* Method summaries collected for methods. Mapping Object -&gt; MethodSummary where Object is either a
* <ul>
* <li>MethodReference
* <li>TypeReference
@ -75,7 +75,7 @@ public class BypassMethodTargetSelector implements MethodTargetSelector {
private final ClassHierarchyMethodTargetSelector chaMethodTargetSelector;
/**
* Mapping from MethodReference -> SyntheticMethod We may call syntheticMethod.put(m,null) .. in which case we use containsKey()
* Mapping from MethodReference -&gt; SyntheticMethod We may call syntheticMethod.put(m,null) .. in which case we use containsKey()
* to check for having already considered m.
*/
final private HashMap<MethodReference, SummarizedMethod> syntheticMethods = HashMapFactory.make();

View File

@ -37,7 +37,7 @@ public class MethodBypass {
static final boolean DEBUG = false;
/**
* Method summaries collected for methods. Mapping Object -> MethodSummary where Object is either a
* Method summaries collected for methods. Mapping Object -&gt; MethodSummary where Object is either a
* <ul>
* <li>MethodReference
* <li>TypeReference
@ -57,7 +57,7 @@ public class MethodBypass {
private final IClassHierarchy cha;
/**
* Mapping from MethodReference -> SyntheticMethod
* Mapping from MethodReference -&gt; SyntheticMethod
*/
final private HashMap<MethodReference, SummarizedMethod> syntheticMethods = HashMapFactory.make();

View File

@ -40,7 +40,7 @@ public class MethodSummary {
private ArrayList<SSAInstruction> statements;
/**
* Map: value number -> constant
* Map: value number -&gt; constant
*/
private Map<Integer, ConstantValue> constantValues;

View File

@ -63,7 +63,7 @@ import com.ibm.wala.util.strings.Atom;
* names in synthetic methods. This should not change th analysis-result but may come in handy when
* debugging.
*
* @author Tobias Blaschke <code@tobiasblaschke.de>
* @author Tobias Blaschke &lt;code@tobiasblaschke.de&gt;
* @since 2013-11-25
*/
public class SummarizedMethodWithNames extends SummarizedMethod {

View File

@ -79,7 +79,7 @@ import com.ibm.wala.util.strings.Atom;
* @see com.ibm.wala.dalvik.ipa.callgraph.impl.DexFakeRootMethod
* @see com.ibm.wala.ipa.summaries.MethodSummary
*
* @author Tobias Blaschke <code@tobiasblaschke.de>
* @author Tobias Blaschke &lt;code@tobiasblaschke.de&gt;
* @since 2013-09-08
*/
@SuppressWarnings("javadoc")

View File

@ -269,7 +269,7 @@ public class XMLMethodSummaryReader implements BytecodeConstants {
private int nextLocal = -1;
/**
* A mapping from String (variable name) -> Integer (local number)
* A mapping from String (variable name) -&gt; Integer (local number)
*/
private Map<String, Integer> symbolTable = null;

View File

@ -26,19 +26,19 @@ import com.ibm.wala.util.ref.CacheReference;
/**
* A cache for auxiliary information based on an SSA representation
*
* A mapping from (IMethod,Context) -> SSAOptions -> SoftReference -> something
* A mapping from (IMethod,Context) -&gt; SSAOptions -&gt; SoftReference -&gt; something
*
* This doesn't work very well ... GCs don't do such a great job with SoftReferences ... revamp it.
*/
public class AuxiliaryCache implements IAuxiliaryCache {
/**
* A mapping from IMethod -> SSAOptions -> SoftReference -> IR
* A mapping from IMethod -&gt; SSAOptions -&gt; SoftReference -&gt; IR
*/
private HashMap<Pair<IMethod, Context>, Map<SSAOptions, Object>> dictionary = HashMapFactory.make();
/**
* Help out the garbage collector: clear this cache when the number of items is > RESET_THRESHOLD
* Help out the garbage collector: clear this cache when the number of items is &gt; RESET_THRESHOLD
*/
final private static int RESET_THRESHOLD = 2000;

View File

@ -28,17 +28,17 @@ public class DefUse {
static final boolean DEBUG = false;
/**
* A mapping from integer (value number) -> {@link SSAInstruction} that defines the value
* A mapping from integer (value number) -&gt; {@link SSAInstruction} that defines the value
*/
final private SSAInstruction[] defs;
/**
* A mapping from integer (value number) -> bit vector holding integers representing instructions that use the value number
* A mapping from integer (value number) -&gt; bit vector holding integers representing instructions that use the value number
*/
final private MutableIntSet[] uses;
/**
* A Mapping from integer -> Instruction
* A Mapping from integer -&gt; Instruction
*/
final protected ArrayList<SSAInstruction> allInstructions = new ArrayList<>();

View File

@ -28,7 +28,7 @@ interface IAuxiliaryCache {
Object find(IMethod m, Context c, SSAOptions options);
/**
* cache new auxiliary information for an <m,options> pair
* cache new auxiliary information for an &lt;m,options&gt; pair
*
* @param m a method
* @param options options governing ssa construction

View File

@ -87,7 +87,7 @@ public class SSABuilder extends AbstractIntStackMachine {
final private SymbolTable symbolTable;
/**
* A logical mapping from <bcIndex, valueNumber> -> local number if null, don't build it.
* A logical mapping from &lt;bcIndex, valueNumber&gt; -&gt; local number if null, don't build it.
*/
private final SSA2LocalMap localMap;
@ -923,7 +923,7 @@ public class SSABuilder extends AbstractIntStackMachine {
}
/**
* A logical mapping from <pc, valueNumber> -> local number Note: make sure this class remains static: this persists as part of
* A logical mapping from &lt;pc, valueNumber&gt; -&gt; local number Note: make sure this class remains static: this persists as part of
* the IR!!
*/
private static class SSA2LocalMap implements com.ibm.wala.ssa.IR.SSA2LocalMap {
@ -931,7 +931,7 @@ public class SSABuilder extends AbstractIntStackMachine {
private final ShrikeCFG shrikeCFG;
/**
* Mapping Integer -> IntPair where p maps to (vn,L) iff we've started a range at pc p where value number vn corresponds to
* Mapping Integer -&gt; IntPair where p maps to (vn,L) iff we've started a range at pc p where value number vn corresponds to
* local L
*/
private final IntPair[] localStoreMap;

View File

@ -1041,7 +1041,7 @@ public class SSACFG implements ControlFlowGraph<SSAInstruction, ISSABasicBlock>,
}
/**
* has exceptional edge src -> dest
* has exceptional edge src -&gt; dest
*
* @throws IllegalArgumentException if dest is null
*/
@ -1057,7 +1057,7 @@ public class SSACFG implements ControlFlowGraph<SSAInstruction, ISSABasicBlock>,
}
/**
* has normal edge src -> dest
* has normal edge src -&gt; dest
*
* @throws IllegalArgumentException if dest is null
*/

View File

@ -15,7 +15,7 @@ import com.ibm.wala.ipa.callgraph.Context;
import com.ibm.wala.ipa.callgraph.impl.Everywhere;
/**
* A mapping from IMethod -> SSAOptions -> SoftReference -> Something
* A mapping from IMethod -&gt; SSAOptions -&gt; SoftReference -&gt; Something
*
* This doesn't work very well ... GCs don't do such a great job with SoftReferences ... revamp it.
*/
@ -132,21 +132,21 @@ public class SSACache {
}
/**
* Invalidate the cached IR for a <method,context> pair
* Invalidate the cached IR for a &lt;method,context&gt; pair
*/
public void invalidateIR(IMethod method, Context c) {
irCache.invalidate(method, c);
}
/**
* Invalidate the cached {@link DefUse} for a <method,context> pair
* Invalidate the cached {@link DefUse} for a &lt;method,context&gt; pair
*/
public void invalidateDU(IMethod method, Context c) {
duCache.invalidate(method, c);
}
/**
* Invalidate all cached information for a <method,context> pair
* Invalidate all cached information for a &lt;method,context&gt; pair
*/
public void invalidate(IMethod method, Context c) {
invalidateIR(method, c);

View File

@ -32,7 +32,7 @@ public class SymbolTable implements Cloneable {
final private int[] parameters;
/**
* Mapping from Constant -> value number
* Mapping from Constant -&gt; value number
*/
private HashMap<ConstantValue, Integer> constants = HashMapFactory.make(10);
@ -52,7 +52,7 @@ public class SymbolTable implements Cloneable {
}
/**
* Values. Note: this class must maintain the following invariant: values.length > nextFreeValueNumber.
* Values. Note: this class must maintain the following invariant: values.length &gt; nextFreeValueNumber.
*/
private Value[] values = new Value[5];

View File

@ -87,7 +87,7 @@ public class DeadAssignmentElimination {
private static class DeadValueSystem extends DefaultFixedPointSolver<BooleanVariable> {
/**
* Map: value number -> BooleanVariable isLive
* Map: value number -&gt; BooleanVariable isLive
*/
final private Map<Integer, BooleanVariable> vars = HashMapFactory.make();

View File

@ -26,7 +26,7 @@ import com.ibm.wala.util.strings.UTF8Convert;
public final class Descriptor {
/**
* A mapping from Key -> Descriptor
* A mapping from Key -&gt; Descriptor
*/
private static final Map<Key, Descriptor> map = HashMapFactory.make();

View File

@ -25,7 +25,7 @@ public final class FieldReference extends MemberReference {
private final static boolean DEBUG = false;
/**
* Used to canonicalize MemberReferences a mapping from Key -> MemberReference
* Used to canonicalize MemberReferences a mapping from Key -&gt; MemberReference
*/
final private static HashMap<Key, FieldReference> dictionary = HashMapFactory.make();

View File

@ -22,7 +22,7 @@ import com.ibm.wala.util.strings.Atom;
*/
public final class MethodReference extends MemberReference {
/**
* Used to canonicalize MethodReferences a mapping from Key -> MethodReference
* Used to canonicalize MethodReferences a mapping from Key -&gt; MethodReference
*/
final private static HashMap<Key, MethodReference> dictionary = HashMapFactory.make();

View File

@ -39,7 +39,7 @@ public final class TypeName implements Serializable {
private static final long serialVersionUID = -3256390509887654326L;
/**
* canonical mapping from TypeNameKey -> TypeName
* canonical mapping from TypeNameKey -&gt; TypeName
*/
private final static Map<TypeNameKey, TypeName> map = HashMapFactory.make();
@ -253,7 +253,7 @@ public final class TypeName implements Serializable {
* 0 => class
* >0 => mask of levels of array, reference, pointer
*
* When the mask is > 0, it represents levels of type qualifiers (in C
* When the mask is &gt; 0, it represents levels of type qualifiers (in C
* terminology) for array, reference and pointer types. There is also a
* special mask for when the innermost type is a primitive. The mask is
* a bitfield laid out in inverse dimension order.

View File

@ -579,9 +579,9 @@ public final class TypeReference implements Serializable {
* TypeReferences are canonical. However, note that two TypeReferences can be non-equal, yet still represent the same
* IClass.
*
* For example, the there can be two TypeReferences <Application,java.lang.Object> and <Primordial,java.lang.Object>.
* These two TypeReference are <bf>NOT</bf> equal(), but they both represent the IClass which is named
* <Primordial,java.lang.Object>
* For example, the there can be two TypeReferences &lt;Application,java.lang.Object&gt; and &lt;Primordial,java.lang.Object&gt;.
* &lt;Primordial,java.lang.Object&gt;
*/
@Override
public final boolean equals(Object other) {

View File

@ -20,7 +20,7 @@ import com.ibm.wala.shrikeCT.InvalidClassFileException;
* Under construction.
*
* ClassSignature:
* (<FormalTypeParameter+>)? SuperclassSignature SuperinterfaceSignature*
* (&lt;FormalTypeParameter+&gt;)? SuperclassSignature SuperinterfaceSignature*
*
* SuperclassSignature:
* ClassTypeSignature

View File

@ -28,7 +28,7 @@ import com.ibm.wala.types.TypeReference;
* Identifier TypeArguments?
*
* TypeArguments:
* <TypeArguments+>
* &lt;TypeArguments+&gt;
*
* @author sjfink
*

View File

@ -54,7 +54,7 @@ import com.ibm.wala.types.TypeReference;
*
* This Class does not consider Boxing / Unboxing
*
* @author Tobias Blaschke <code@tobiasblaschke.de>
* @author Tobias Blaschke &lt;code@tobiasblaschke.de&gt;
* @since 2013-11-21
*/
public class PrimitiveAssignability {

View File

@ -243,7 +243,7 @@ public class BytecodeStream implements BytecodeConstants {
}
/**
* Returns the offset of the branch (as a signed short) Used for if<cond>, ificmp<cond>, ifacmp<cond>, goto, jsr
* Returns the offset of the branch (as a signed short) Used for if&lt;cond&gt;, ificmp&lt;cond&gt;, ifacmp&lt;cond&gt;, goto, jsr
*
* @return branch offset
* @see #getWideBranchOffset()

View File

@ -51,7 +51,7 @@ package com.ibm.wala.util.ssa;
* In typical cases this should not be propergated out from the utility
* classes.
*
* @author Tobias Blaschke <code@tobiasblaschke.de>
* @author Tobias Blaschke &lt;code@tobiasblaschke.de&gt;
*/
public class ClassLookupException extends RuntimeException {
private static final long serialVersionUID = 7551139209041666026L;

View File

@ -52,7 +52,7 @@ import com.ibm.wala.types.TypeReference;
*
* This mainly applies to the connectThrough-Function.
*
* @author Tobias Blaschke <code@tobiasblaschke.de>
* @author Tobias Blaschke &lt;code@tobiasblaschke.de&gt;
*/
public interface IInstantiator {
/**

Some files were not shown because too many files have changed in this diff Show More