protected void internalTransform(String phaseName, Map<String, String> opts) { CHAOptions options = new CHAOptions(opts); CallGraphBuilder cg = options.apponly() ? new CallGraphBuilder() : new CallGraphBuilder(DumbPointerAnalysis.v()); cg.build(); if (options.verbose()) { logger.debug("" + "Number of reachable methods: " + Scene.v().getReachableMethods().size()); } } }
/** * This constructor builds a complete call graph using the given PointsToAnalysis to resolve virtual calls. */ public CallGraphBuilder(PointsToAnalysis pa) { this.pa = pa; cg = Scene.v().internalMakeCallGraph(); Scene.v().setCallGraph(cg); reachables = Scene.v().getReachableMethods(); ContextManager cm = makeContextManager(cg); ofcgb = new OnFlyCallGraphBuilder(cm, reachables); }
reachables.update(); } else { callEdges = cgb.getCallGraph().listener(); cgb.build(); reachables = cgb.reachables();
/** Creates an empty pointer assignment graph. */ public PAG setup(SparkOptions opts) { pag = opts.geom_pta() ? new GeomPointsTo(opts) : new PAG(opts); if (opts.simulate_natives()) { pag.nativeMethodDriver = new NativeMethodDriver(new SparkNativeHelper(pag)); } if (opts.on_fly_cg() && !opts.vta()) { ofcg = new OnFlyCallGraph(pag, opts.apponly()); pag.setOnFlyCallGraph(ofcg); } else { cgb = new CallGraphBuilder(DumbPointerAnalysis.v()); } return pag; }
cg = Scene.v().getCallGraph(); } else { new CallGraphBuilder().build(); cg = Scene.v().getCallGraph(); Scene.v().releaseCallGraph();
public OnFlyCallGraph(PAG pag, boolean appOnly) { this.pag = pag; callGraph = Scene.v().internalMakeCallGraph(); Scene.v().setCallGraph(callGraph); ContextManager cm = CallGraphBuilder.makeContextManager(callGraph); reachableMethods = Scene.v().getReachableMethods(); ofcgb = new OnFlyCallGraphBuilder(cm, reachableMethods, appOnly); reachablesReader = reachableMethods.listener(); callEdges = cm.callGraph().listener(); }
CallGraphBuilder cgb = new CallGraphBuilder(pag); cgb.build();
/** This constructor builds a complete call graph using the given * PointsToAnalysis to resolve virtual calls. */ public CallGraphBuilder( PointsToAnalysis pa ) { this.pa = pa; cg = new CallGraph(); Scene.v().setCallGraph( cg ); reachables = Scene.v().getReachableMethods(); ContextManager cm = makeContextManager(cg); ofcgb = new OnFlyCallGraphBuilder( cm, reachables ); } /** This constructor builds the incomplete hack call graph for the
protected void internalTransform(String phaseName, Map opts) { CHAOptions options = new CHAOptions( opts ); CallGraphBuilder cg = new CallGraphBuilder( DumbPointerAnalysis.v() ); cg.build(); if( options.verbose() ) { G.v().out.println( "Number of reachable methods: " +Scene.v().getReachableMethods().size() ); } } }
/** This constructor builds a complete call graph using the given * PointsToAnalysis to resolve virtual calls. */ public CallGraphBuilder( PointsToAnalysis pa ) { this.pa = pa; cg = new CallGraph(); Scene.v().setCallGraph( cg ); reachables = Scene.v().getReachableMethods(); ContextManager cm = makeContextManager(cg); ofcgb = new OnFlyCallGraphBuilder( cm, reachables ); } /** This constructor builds the incomplete hack call graph for the
protected void internalTransform(String phaseName, Map opts) { CHAOptions options = new CHAOptions( opts ); CallGraphBuilder cg = new CallGraphBuilder( DumbPointerAnalysis.v() ); cg.build(); if( options.verbose() ) { G.v().out.println( "Number of reachable methods: " +Scene.v().getReachableMethods().size() ); } } }