type generalization
This commit is contained in:
parent
0cb23266c9
commit
dbd9c60d4f
|
@ -257,7 +257,7 @@ public class CallGraphTest extends WalaTestCase {
|
|||
PointerAnalysis pa = builder.getPointerAnalysis();
|
||||
CGNode mainMethod = AbstractPtrTest.findMainMethod(cg);
|
||||
PointerKey keyToQuery = AbstractPtrTest.getParam(mainMethod, "testThisVar", pa.getHeapModel());
|
||||
OrdinalSet<InstanceKey> pointsToSet = pa.getPointsToSet(keyToQuery);
|
||||
OrdinalSet<? extends InstanceKey> pointsToSet = pa.getPointsToSet(keyToQuery);
|
||||
Assert.assertEquals(1, pointsToSet.size());
|
||||
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ public class MultiDimArrayTest extends WalaTestCase {
|
|||
|
||||
CGNode node = findDoNothingNode(cg);
|
||||
PointerKey pk = pa.getHeapModel().getPointerKeyForLocal(node, 1);
|
||||
OrdinalSet<InstanceKey> ptsTo = pa.getPointsToSet(pk);
|
||||
OrdinalSet<? extends InstanceKey> ptsTo = pa.getPointsToSet(pk);
|
||||
Assert.assertEquals(1, ptsTo.size());
|
||||
}
|
||||
|
||||
|
|
|
@ -78,8 +78,8 @@ public class TypeBasedArrayAliasTest extends WalaTestCase {
|
|||
}
|
||||
|
||||
private static boolean mayAliased(PointerKey pk1, PointerKey pk2, PointerAnalysis pa) {
|
||||
OrdinalSet<InstanceKey> ptsTo1 = pa.getPointsToSet(pk1);
|
||||
OrdinalSet<InstanceKey> ptsTo2 = pa.getPointsToSet(pk2);
|
||||
OrdinalSet<? extends InstanceKey> ptsTo1 = pa.getPointsToSet(pk1);
|
||||
OrdinalSet<? extends InstanceKey> ptsTo2 = pa.getPointsToSet(pk2);
|
||||
boolean foundIntersection = false;
|
||||
outer: for (InstanceKey i : ptsTo1) {
|
||||
for (InstanceKey j : ptsTo2) {
|
||||
|
|
|
@ -60,10 +60,10 @@ public class ZeroLengthArrayTest {
|
|||
cha.resolveMethod(MethodReference.findOrCreate(
|
||||
TypeReference.findOrCreate(ClassLoaderReference.Application, TestConstants.ZERO_LENGTH_ARRAY_MAIN),
|
||||
Selector.make("main([Ljava/lang/String;)V"))), Everywhere.EVERYWHERE);
|
||||
OrdinalSet<InstanceKey> pointsToSet = pa.getPointsToSet(heapModel.getPointerKeyForLocal(mainNode, 4));
|
||||
OrdinalSet<? extends InstanceKey> pointsToSet = pa.getPointsToSet(heapModel.getPointerKeyForLocal(mainNode, 4));
|
||||
Assert.assertEquals(1, pointsToSet.size());
|
||||
InstanceKey arrayKey = pointsToSet.iterator().next();
|
||||
OrdinalSet<InstanceKey> arrayContents = pa.getPointsToSet(heapModel.getPointerKeyForArrayContents(arrayKey));
|
||||
OrdinalSet<? extends InstanceKey> arrayContents = pa.getPointsToSet(heapModel.getPointerKeyForArrayContents(arrayKey));
|
||||
System.err.println(arrayContents);
|
||||
Assert.assertEquals(0, arrayContents.size());
|
||||
|
||||
|
|
|
@ -174,7 +174,7 @@ public class CompareToZeroOneCFADriver {
|
|||
LocalPointerKey pk = (LocalPointerKey) heapModel.getPointerKeyForLocal(node, i);
|
||||
LocalPointerKey oldPk = (LocalPointerKey) CallGraphMapUtil.mapPointerKey(pk, cg, oldCG, heapModel);
|
||||
Collection<InstanceKey> p2set = dmp.getPointsTo(pk);
|
||||
OrdinalSet<InstanceKey> otherP2Set = pa.getPointsToSet(oldPk);
|
||||
OrdinalSet<? extends InstanceKey> otherP2Set = pa.getPointsToSet(oldPk);
|
||||
System.err.println(("OLD POINTS-TO " + otherP2Set));
|
||||
for (InstanceKey key : otherP2Set) {
|
||||
if (knownBug(key)) {
|
||||
|
|
|
@ -256,8 +256,8 @@ public class SimpleThreadEscapeAnalysis extends AbstractAnalysisEngine {
|
|||
//
|
||||
for (Iterator<PointerKey> rts = escapeAnalysisRoots.iterator(); rts.hasNext();) {
|
||||
PointerKey root = rts.next();
|
||||
OrdinalSet<InstanceKey> objects = pa.getPointsToSet(root);
|
||||
for (Iterator<InstanceKey> objs = objects.iterator(); objs.hasNext();) {
|
||||
OrdinalSet<? extends InstanceKey> objects = pa.getPointsToSet(root);
|
||||
for (Iterator<? extends InstanceKey> objs = objects.iterator(); objs.hasNext();) {
|
||||
InstanceKey obj = (InstanceKey) objs.next();
|
||||
escapingInstanceKeys.add(obj);
|
||||
}
|
||||
|
@ -276,8 +276,8 @@ public class SimpleThreadEscapeAnalysis extends AbstractAnalysisEngine {
|
|||
if (type.isArrayClass()) {
|
||||
if (((ArrayClass) type).getElementClass() != null) {
|
||||
PointerKey fk = heapModel.getPointerKeyForArrayContents(key);
|
||||
OrdinalSet<InstanceKey> fobjects = pa.getPointsToSet(fk);
|
||||
for (Iterator<InstanceKey> fobjs = fobjects.iterator(); fobjs.hasNext();) {
|
||||
OrdinalSet<? extends InstanceKey> fobjects = pa.getPointsToSet(fk);
|
||||
for (Iterator<? extends InstanceKey> fobjs = fobjects.iterator(); fobjs.hasNext();) {
|
||||
InstanceKey fobj = (InstanceKey) fobjs.next();
|
||||
if (!escapingInstanceKeys.contains(fobj)) {
|
||||
newKeys.add(fobj);
|
||||
|
@ -290,8 +290,8 @@ public class SimpleThreadEscapeAnalysis extends AbstractAnalysisEngine {
|
|||
IField f = (IField) fs.next();
|
||||
if (f.getFieldTypeReference().isReferenceType()) {
|
||||
PointerKey fk = heapModel.getPointerKeyForInstanceField(key, f);
|
||||
OrdinalSet<InstanceKey> fobjects = pa.getPointsToSet(fk);
|
||||
for (Iterator<InstanceKey> fobjs = fobjects.iterator(); fobjs.hasNext();) {
|
||||
OrdinalSet<? extends InstanceKey> fobjects = pa.getPointsToSet(fk);
|
||||
for (Iterator<? extends InstanceKey> fobjs = fobjects.iterator(); fobjs.hasNext();) {
|
||||
InstanceKey fobj = (InstanceKey) fobjs.next();
|
||||
if (!escapingInstanceKeys.contains(fobj)) {
|
||||
newKeys.add(fobj);
|
||||
|
|
|
@ -256,10 +256,10 @@ public class BasicHeapGraph extends HeapGraph {
|
|||
private int[] computeSuccNodeNumbers(Object N, NumberedNodeManager<Object> nodeManager) {
|
||||
if (N instanceof PointerKey) {
|
||||
PointerKey P = (PointerKey) N;
|
||||
OrdinalSet<InstanceKey> S = getPointerAnalysis().getPointsToSet(P);
|
||||
OrdinalSet<? extends InstanceKey> S = getPointerAnalysis().getPointsToSet(P);
|
||||
int[] result = new int[S.size()];
|
||||
int i = 0;
|
||||
for (Iterator<InstanceKey> it = S.iterator(); it.hasNext();) {
|
||||
for (Iterator<? extends InstanceKey> it = S.iterator(); it.hasNext();) {
|
||||
result[i] = nodeManager.getNumber(it.next());
|
||||
i++;
|
||||
}
|
||||
|
|
|
@ -2459,7 +2459,7 @@ public class DemandRefinementPointsTo extends AbstractDemandPointsTo {
|
|||
|
||||
private boolean predHoldsForPk(PointerKey curPk, Predicate<InstanceKey> pred, PointerAnalysis pa) {
|
||||
PointerKey curPkForPAHeapModel = convertToHeapModel(curPk, pa.getHeapModel());
|
||||
OrdinalSet<InstanceKey> pointsToSet = pa.getPointsToSet(curPkForPAHeapModel);
|
||||
OrdinalSet<? extends InstanceKey> pointsToSet = pa.getPointsToSet(curPkForPAHeapModel);
|
||||
for (InstanceKey ik : pointsToSet) {
|
||||
if (!pred.test(ik)) {
|
||||
return false;
|
||||
|
|
|
@ -27,7 +27,7 @@ public interface PointerAnalysis {
|
|||
* @return Set of InstanceKey, representing the instance abstractions that define
|
||||
* the points-to set computed for the pointer key
|
||||
*/
|
||||
OrdinalSet<InstanceKey> getPointsToSet(PointerKey key);
|
||||
OrdinalSet<? extends InstanceKey> getPointsToSet(PointerKey key);
|
||||
|
||||
/**
|
||||
* @return an Object that determines how to model abstract locations in the heap.
|
||||
|
|
Loading…
Reference in New Issue