Skip to content

Commit f27d294

Browse files
No longer have CSMethod implements the Indexable interface
1 parent 0acacbc commit f27d294

4 files changed

Lines changed: 6 additions & 59 deletions

File tree

src/main/java/pascal/taie/analysis/pta/core/cs/CSCallGraph.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import pascal.taie.ir.stmt.Stmt;
3333
import pascal.taie.language.classes.JMethod;
3434
import pascal.taie.util.collection.ArraySet;
35-
import pascal.taie.util.collection.IndexerBitSet;
3635
import pascal.taie.util.collection.Views;
3736

3837
import java.util.ArrayList;
@@ -49,7 +48,6 @@ public class CSCallGraph extends AbstractCallGraph<CSCallSite, CSMethod> {
4948

5049
public CSCallGraph(CSManager csManager) {
5150
this.csManager = csManager;
52-
this.reachableMethods = new IndexerBitSet<>(csManager.getMethodIndexer(), false);
5351
}
5452

5553
/**

src/main/java/pascal/taie/analysis/pta/core/cs/element/CSManager.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,4 @@ public interface CSManager {
124124
* The indexer is useful for creating efficient points-to sets.
125125
*/
126126
Indexer<CSObj> getObjectIndexer();
127-
128-
/**
129-
* @return {@link Indexer} for {@link CSMethod} maintained by this manager.
130-
*/
131-
Indexer<CSMethod> getMethodIndexer();
132127
}

src/main/java/pascal/taie/analysis/pta/core/cs/element/CSMethod.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import pascal.taie.analysis.pta.core.cs.context.Context;
2727
import pascal.taie.language.classes.JMethod;
2828
import pascal.taie.util.AbstractResultHolder;
29-
import pascal.taie.util.Indexable;
3029
import pascal.taie.util.ResultHolder;
3130
import pascal.taie.util.collection.ArraySet;
3231

@@ -39,23 +38,20 @@
3938
/**
4039
* Represents context-sensitive methods.
4140
*/
42-
public class CSMethod extends AbstractCSElement implements Indexable {
41+
public class CSMethod extends AbstractCSElement {
4342

4443
private final JMethod method;
4544

46-
private final int index;
47-
4845
/**
4946
* Call edges to this CS method.
5047
*/
5148
private final ArrayList<Edge<CSCallSite, CSMethod>> edges = new ArrayList<>(4);
5249

5350
private final ResultHolder resultHolder = new AbstractResultHolder() {};
5451

55-
CSMethod(JMethod method, Context context, int index) {
52+
CSMethod(JMethod method, Context context) {
5653
super(context);
5754
this.method = method;
58-
this.index = index;
5955
}
6056

6157
/**
@@ -82,11 +78,6 @@ public <R> Optional<R> getResult(String id) {
8278
return Optional.ofNullable(resultHolder.getResult(id));
8379
}
8480

85-
@Override
86-
public int getIndex() {
87-
return index;
88-
}
89-
9081
@Override
9182
public String toString() {
9283
return context + ":" + method;

src/main/java/pascal/taie/analysis/pta/core/cs/element/MapBasedCSManager.java

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,9 @@
3737
import pascal.taie.util.collection.Streams;
3838
import pascal.taie.util.collection.TwoKeyMap;
3939

40-
import java.util.ArrayList;
4140
import java.util.Arrays;
4241
import java.util.Collection;
4342
import java.util.Collections;
44-
import java.util.List;
4543
import java.util.Map;
4644
import java.util.Set;
4745
import java.util.stream.Stream;
@@ -56,10 +54,10 @@ public class MapBasedCSManager implements CSManager {
5654

5755
private final CSObjManager objManager = new CSObjManager();
5856

59-
private final CSMethodManager mtdManager = new CSMethodManager();
60-
6157
private final TwoKeyMap<Invoke, Context, CSCallSite> callSites = Maps.newTwoKeyMap();
6258

59+
private final TwoKeyMap<JMethod, Context, CSMethod> methods = Maps.newTwoKeyMap();
60+
6361
@Override
6462
public CSVar getCSVar(Context context, Var var) {
6563
return ptrManager.getCSVar(context, var);
@@ -138,19 +136,14 @@ public Indexer<CSObj> getObjectIndexer() {
138136
@Override
139137
public CSCallSite getCSCallSite(Context context, Invoke callSite) {
140138
return callSites.computeIfAbsent(callSite, context, (cs, ctx) -> {
141-
CSMethod container = mtdManager.getCSMethod(ctx, cs.getContainer());
139+
CSMethod container = getCSMethod(ctx, cs.getContainer());
142140
return new CSCallSite(cs, ctx, container);
143141
});
144142
}
145143

146144
@Override
147145
public CSMethod getCSMethod(Context context, JMethod method) {
148-
return mtdManager.getCSMethod(context, method);
149-
}
150-
151-
@Override
152-
public Indexer<CSMethod> getMethodIndexer() {
153-
return mtdManager;
146+
return methods.computeIfAbsent(method, context, CSMethod::new);
154147
}
155148

156149
private static class PointerManager {
@@ -316,34 +309,4 @@ public CSObj getObject(int index) {
316309
return objs[index];
317310
}
318311
}
319-
320-
private static class CSMethodManager implements Indexer<CSMethod> {
321-
322-
private final TwoKeyMap<JMethod, Context, CSMethod> methodMap = Maps.newTwoKeyMap();
323-
324-
/**
325-
* Counter for assigning unique indexes to CSMethods.
326-
*/
327-
private int counter = 0;
328-
329-
private final List<CSMethod> methods = new ArrayList<>(65536);
330-
331-
private CSMethod getCSMethod(Context context, JMethod method) {
332-
return methodMap.computeIfAbsent(method, context, (m, c) -> {
333-
CSMethod csMethod = new CSMethod(m, c, counter++);
334-
methods.add(csMethod);
335-
return csMethod;
336-
});
337-
}
338-
339-
@Override
340-
public int getIndex(CSMethod m) {
341-
return m.getIndex();
342-
}
343-
344-
@Override
345-
public CSMethod getObject(int index) {
346-
return methods.get(index);
347-
}
348-
}
349312
}

0 commit comments

Comments
 (0)