From 098ab6e07d06f27577d26992f5cffef116556100 Mon Sep 17 00:00:00 2001 From: sjfink Date: Fri, 26 Oct 2007 14:53:39 +0000 Subject: [PATCH] bug fixes and cleanup of TypeBasedPointerAnalysis git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1959 f5eafffb-2e1d-0410-98e4-8ec43c5233c4 --- .../ipa/callgraph/propagation/rta/AbstractRTABuilder.java | 2 +- .../ipa/callgraph/propagation/rta/TypeBasedHeapModel.java | 6 ++---- .../propagation/rta/TypeBasedPointerAnalysis.java | 7 ++++++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/AbstractRTABuilder.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/AbstractRTABuilder.java index 628efcba2..0936314ae 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/AbstractRTABuilder.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/AbstractRTABuilder.java @@ -471,6 +471,6 @@ public abstract class AbstractRTABuilder extends PropagationCallGraphBuilder { */ @Override public PointerAnalysis getPointerAnalysis() { - return new TypeBasedPointerAnalysis(getOptions(), allocatedClasses, getCallGraph()); + return TypeBasedPointerAnalysis.make(getOptions(), allocatedClasses, getCallGraph()); } } diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java index 26955b6e4..7fd095491 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedHeapModel.java @@ -195,13 +195,11 @@ public class TypeBasedHeapModel implements HeapModel { } public InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return iKeyFactory.getInstanceKeyForAllocation(node, allocation); } public InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim) throws UnimplementedError { - Assertions.UNREACHABLE(); - return null; + return iKeyFactory.getInstanceKeyForMultiNewArray(node, allocation, dim); } public InstanceKey getInstanceKeyForConstant(TypeReference type, Object S) { diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java index 0bd8696da..068992366 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/callgraph/propagation/rta/TypeBasedPointerAnalysis.java @@ -59,7 +59,7 @@ public class TypeBasedPointerAnalysis extends AbstractPointerAnalysis { * Collection * @throws AssertionError if klasses is null */ - public TypeBasedPointerAnalysis(AnalysisOptions options, Collection klasses, CallGraph cg) throws AssertionError { + private TypeBasedPointerAnalysis(AnalysisOptions options, Collection klasses, CallGraph cg) throws AssertionError { super(cg, makeInstanceKeys(klasses)); this.klasses = klasses; heapModel = new TypeBasedHeapModel(options, klasses, cg); @@ -81,6 +81,11 @@ public class TypeBasedPointerAnalysis extends AbstractPointerAnalysis { return result; } + public static TypeBasedPointerAnalysis make(AnalysisOptions options, Collection klasses, CallGraph cg) + throws AssertionError { + return new TypeBasedPointerAnalysis(options, klasses, cg); + } + public OrdinalSet getPointsToSet(PointerKey key) throws IllegalArgumentException { if (key == null) { throw new IllegalArgumentException("key == null");