[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