[Soot-list] proper way of re-doing points-to analysis after transformation
Peter Kim
chpkim at gmail.com
Tue Mar 31 18:17:39 EDT 2009
Thank you in advance for your help.
I'm running into a problem where after inlining and re-running Spark
points-to-analysis, the CallGraph I get is not correct. Here is a
summary of the code:
// Inlining. CallGraph is correct when I run Spark before this code.
SiteInliner.inlineSite(inlinee, invokeStmt, container);
PackManager.v().getPack("jb").apply(container.retrieveActiveBody());
// Calling all "release" methods (I tried with and without this code
block, but same problem)
Scene.v().releaseCallGraph();
Scene.v().release...();
Scene.v().releaseSideEffectAnalysis
// Points-to analysis
HashMap opt = new HashMap();
opt.put("enabled","true");
opt.put(..., ...);
SparkTransformer.v().transform("",opt);
// Get call graph
CallGraph cg = Scene.v().getCallGraph();
cg is missing "virtual" edges that should be there after inlining. I
was wondering what the proper way of re-setting the analysis after a
transformation like inlining has been performed. Do I have to write
out the transformed to class files and re-read them in? (is there an
example of how to do this)?
Thank you.
More information about the Soot-list
mailing list