From 69c1bfa9919d70810eee43534913c03a2a169e24 Mon Sep 17 00:00:00 2001 From: sjfink Date: Mon, 3 Mar 2008 21:32:36 +0000 Subject: [PATCH] Simplify MethodTargetSelector and ContextSelector interfaces; delete optimizations based on allSitesDispatchIdentically and mayReturnSyntheticMethod. Also some Cast bug fixes. git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2655 f5eafffb-2e1d-0410-98e4-8ec43c5233c4 --- .../cast/js/ipa/callgraph/JSCallGraph.java | 5 +++-- .../ipa/callgraph/JSZeroOrOneXCFABuilder.java | 20 +++++++------------ .../JavaScriptSummarizedFunction.java | 12 +++++------ 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSCallGraph.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSCallGraph.java index 3ff652dfc..cae05eb9e 100755 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSCallGraph.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSCallGraph.java @@ -26,6 +26,7 @@ import com.ibm.wala.ipa.callgraph.impl.Everywhere; import com.ibm.wala.ipa.callgraph.impl.FakeRootMethod; import com.ibm.wala.ipa.cha.IClassHierarchy; import com.ibm.wala.ssa.SSAAbstractInvokeInstruction; +import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.SSANewInstruction; import com.ibm.wala.types.MethodReference; import com.ibm.wala.types.TypeReference; @@ -45,8 +46,8 @@ public class JSCallGraph extends AstCallGraph { super(fakeRoot, cha.lookupClass(JavaScriptTypes.FakeRoot), cha, options, cache); } - public InducedCFG makeControlFlowGraph() { - return new JSInducedCFG(getStatements(), this, Everywhere.EVERYWHERE); + public InducedCFG makeControlFlowGraph(SSAInstruction[] instructions) { + return new JSInducedCFG(instructions, this, Everywhere.EVERYWHERE); } public SSANewInstruction addAllocation(TypeReference T) { diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSZeroOrOneXCFABuilder.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSZeroOrOneXCFABuilder.java index e5d6ae2aa..57c13b56a 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSZeroOrOneXCFABuilder.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSZeroOrOneXCFABuilder.java @@ -37,7 +37,7 @@ public class JSZeroOrOneXCFABuilder extends JSCFABuilder { options.setSelector(new JavaScriptConstructTargetSelector(cha, options.getMethodTargetSelector())); - ContextSelector def = new DefaultContextSelector(cha, options.getMethodTargetSelector()); + ContextSelector def = new DefaultContextSelector(); ContextSelector contextSelector = appContextSelector == null ? def : new DelegatingContextSelector(appContextSelector, def); if (doOneCFA) { contextSelector = new nCFAContextSelector(1, contextSelector); @@ -49,18 +49,12 @@ public class JSZeroOrOneXCFABuilder extends JSCFABuilder { } /** - * @param options - * options that govern call graph construction - * @param cha - * governing class hierarchy - * @param cl - * classloader that can find DOMO resources - * @param scope - * representation of the analysis scope - * @param xmlFiles - * set of Strings that are names of XML files holding bypass logic specifications. - * @param dmd - * deployment descriptor abstraction + * @param options options that govern call graph construction + * @param cha governing class hierarchy + * @param cl classloader that can find DOMO resources + * @param scope representation of the analysis scope + * @param xmlFiles set of Strings that are names of XML files holding bypass logic specifications. + * @param dmd deployment descriptor abstraction * @return a 0-1-Opt-CFA Call Graph Builder. */ public static JSCFABuilder make(AnalysisOptions options, AnalysisCache cache, IClassHierarchy cha, ClassLoader cl, diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/summaries/JavaScriptSummarizedFunction.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/summaries/JavaScriptSummarizedFunction.java index ff1c453ac..a7e2ad784 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/summaries/JavaScriptSummarizedFunction.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/summaries/JavaScriptSummarizedFunction.java @@ -16,23 +16,21 @@ import com.ibm.wala.classLoader.IClass; import com.ibm.wala.ipa.callgraph.impl.Everywhere; import com.ibm.wala.ipa.summaries.MethodSummary; import com.ibm.wala.ipa.summaries.SummarizedMethod; +import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.types.MethodReference; public class JavaScriptSummarizedFunction extends SummarizedMethod { - public JavaScriptSummarizedFunction(MethodReference ref, - MethodSummary summary, - IClass declaringClass) - { + public JavaScriptSummarizedFunction(MethodReference ref, MethodSummary summary, IClass declaringClass) { super(ref, summary, declaringClass); } public boolean equals(Object o) { - return this==o; + return this == o; } - public InducedCFG makeControlFlowGraph() { - return new JSInducedCFG(getStatements(), this, Everywhere.EVERYWHERE); + public InducedCFG makeControlFlowGraph(SSAInstruction[] instructions) { + return new JSInducedCFG(instructions, this, Everywhere.EVERYWHERE); } }