private void prepareIntervalPropagations(){
  if (prop_initialized)   return;
  top_rank=new int[n_func];
  Arrays.fill(top_rank,0);
  topQ=new LinkedList<Integer>();
  topQ.add(Constants.SUPER_MAIN);
  while (!topQ.isEmpty()) {
    int s=topQ.poll();
    CgEdge p=call_graph[s];
    while (p != null) {
      int t=p.t;
      int rep_t=rep_cg[t];
      int w=top_rank[s] + 1;
      if (top_rank[rep_t] < w)       top_rank[rep_t]=w;
      if (--in_degree[rep_t] == 0)       topQ.add(rep_t);
      p=p.next;
    }
  }
  contextsForMethods=new ContextsCollector[n_func];
  for (int i=0; i < n_func; ++i) {
    ContextsCollector cc=new ContextsCollector();
    cc.setBudget(Parameters.qryBudgetSize);
    contextsForMethods[i]=cc;
  }
  prop_initialized=true;
}

private void prepareIntervalPropagations ( ) { if ( prop_initialized ) return ; top_rank = new int [ n_func ] ; Arrays . fill ( top_rank , 0 ) ; topQ = new LinkedList < Integer > ( ) ; topQ . add ( Constants . SUPER_MAIN ) ; while ( ! topQ . isEmpty ( ) ) { int s = topQ . poll ( ) ; CgEdge p = call_graph [ s ] ; while ( p != null ) { int t = p . t ; int rep_t = rep_cg [ t ] ; int w = top_rank [ s ] + 1 ; if ( top_rank [ rep_t ] < w ) top_rank [ rep_t ] = w ; if ( -- in_degree [ rep_t ] == 0 ) topQ . add ( rep_t ) ; p = p . next ; } } contextsForMethods = new ContextsCollector [ n_func ] ; for ( int i = 0 ; i < n_func ; ++ i ) { ContextsCollector cc = new ContextsCollector ( ) ; cc . setBudget ( Parameters . qryBudgetSize ) ; contextsForMethods [ i ] = cc ; } prop_initialized = true ; }
only needed by part of the queries . therefore , it is called on demand .
