public void ddSolve(Set<Node> qryNodes){
  long solve_time=0, prepare_time=0;
  if (hasExecuted == false)   solve();
  if (ddPrepared == false || offlineProcessor == null) {
    offlineProcessor=new OfflineProcessor(this);
    IFigureManager.cleanCache();
    ddPrepared=true;
    ps.println();
    ps.println("==> Entering demand-driven mode (experimental).");
  }
  int init_size=qryNodes.size();
  if (init_size == 0) {
    ps.println("Please provide at least one pointer.");
    return;
  }
  Date prepare_begin=new Date();
  offlineProcessor.init();
  offlineProcessor.addUserDefPts(qryNodes);
  offlineProcessor.runOptimizations();
  Date prepare_end=new Date();
  prepare_time+=prepare_end.getTime() - prepare_begin.getTime();
  Date begin=new Date();
  prepareNextRun();
  nodeGenerator.initFlowGraph(this);
  solveConstraints();
  Date end=new Date();
  solve_time+=end.getTime() - begin.getTime();
  ps.println();
  ps.printf("[ddGeom] Preprocessing time: %.2f seconds\n",(double)prepare_time / 1000);
  ps.printf("[ddGeom] Main propagation time: %.2f seconds\n",(double)solve_time / 1000);
}

public void ddSolve ( Set < Node > qryNodes ) { long solve_time = 0 , prepare_time = 0 ; if ( hasExecuted == false ) solve ( ) ; if ( ddPrepared == false || offlineProcessor == null ) { offlineProcessor = new OfflineProcessor ( this ) ; IFigureManager . cleanCache ( ) ; ddPrepared = true ; ps . println ( ) ; ps . println ( "==> Entering demand-driven mode (experimental)." ) ; } int init_size = qryNodes . size ( ) ; if ( init_size == 0 ) { ps . println ( "Please provide at least one pointer." ) ; return ; } Date prepare_begin = new Date ( ) ; offlineProcessor . init ( ) ; offlineProcessor . addUserDefPts ( qryNodes ) ; offlineProcessor . runOptimizations ( ) ; Date prepare_end = new Date ( ) ; prepare_time += prepare_end . getTime ( ) - prepare_begin . getTime ( ) ; Date begin = new Date ( ) ; prepareNextRun ( ) ; nodeGenerator . initFlowGraph ( this ) ; solveConstraints ( ) ; Date end = new Date ( ) ; solve_time += end . getTime ( ) - begin . getTime ( ) ; ps . println ( ) ; ps . printf ( "[ddGeom] Preprocessing time: %.2f seconds\n" , ( double ) prepare_time / 1000 ) ; ps . printf ( "[ddGeom] Main propagation time: %.2f seconds\n" , ( double ) solve_time / 1000 ) ; }
the demand - driven mode for precisely computing points - to information for given pointers . call graph will not be updated in this mode .
