package jqian.sootex.ptsto; import java.util.*; import jqian.sootex.location.InstanceObject; import jqian.sootex.location.Location; import jqian.sootex.location.UnknownArraySpace; import jqian.sootex.location.UnknownInstObject; import soot.*; /** * A dumb points-to relation query by type. * Model heap by an unknown object and an unknown array */ public class NaivePtsToQuery implements IPtsToQuery{ public NaivePtsToQuery(){ } private Set<InstanceObject> getPointTos(Type type){ Set<InstanceObject> pt2Set = new HashSet<InstanceObject>(); if(type.equals(Scene.v().getObjectType())){ // can point to every kind of object pt2Set.add(UnknownArraySpace.v()); pt2Set.add(UnknownInstObject.v()); } else if(type instanceof ArrayType){ pt2Set.add(UnknownArraySpace.v()); } else{ pt2Set.add(UnknownInstObject.v()); } return pt2Set; } public Set<InstanceObject> getPointTos(SootMethod m, Unit stmt,Location ptr){ if(!ptr.isPointer()) return Collections.emptySet(); Type type = ptr.getType(); return getPointTos(type); } }