private void computeValues(){
  logger.debug("Computing the final values for the edge functions");
  Map<N,Set<D>> allSeeds=new HashMap<N,Set<D>>(initialSeeds);
  for (  N unbalancedRetSite : unbalancedRetSites) {
    Set<D> seeds=allSeeds.get(unbalancedRetSite);
    if (seeds == null) {
      seeds=new HashSet<D>();
      allSeeds.put(unbalancedRetSite,seeds);
    }
    seeds.add(zeroValue);
  }
  for (  Entry<N,Set<D>> seed : allSeeds.entrySet()) {
    N startPoint=seed.getKey();
    for (    D val : seed.getValue()) {
      setVal(startPoint,val,valueLattice.bottomElement());
      Pair<N,D> superGraphNode=new Pair<N,D>(startPoint,val);
      scheduleValueProcessing(new ValuePropagationTask(superGraphNode));
    }
  }
  logger.debug("Computed the final values of the edge functions");
  try {
    executor.awaitCompletion();
  }
 catch (  InterruptedException e) {
    e.printStackTrace();
  }
  Set<N> allNonCallStartNodes=icfg.allNonCallStartNodes();
  @SuppressWarnings("unchecked") N[] nonCallStartNodesArray=(N[])new Object[allNonCallStartNodes.size()];
  int i=0;
  for (  N n : allNonCallStartNodes) {
    nonCallStartNodesArray[i]=n;
    i++;
  }
  for (int t=0; t < numThreads; t++) {
    ValueComputationTask task=new ValueComputationTask(nonCallStartNodesArray,t);
    scheduleValueComputationTask(task);
  }
  try {
    executor.awaitCompletion();
  }
 catch (  InterruptedException e) {
    e.printStackTrace();
  }
}

private void computeValues ( ) { logger . debug ( "Computing the final values for the edge functions" ) ; Map < N , Set < D > > allSeeds = new HashMap < N , Set < D > > ( initialSeeds ) ; for ( N unbalancedRetSite : unbalancedRetSites ) { Set < D > seeds = allSeeds . get ( unbalancedRetSite ) ; if ( seeds == null ) { seeds = new HashSet < D > ( ) ; allSeeds . put ( unbalancedRetSite , seeds ) ; } seeds . add ( zeroValue ) ; } for ( Entry < N , Set < D > > seed : allSeeds . entrySet ( ) ) { N startPoint = seed . getKey ( ) ; for ( D val : seed . getValue ( ) ) { setVal ( startPoint , val , valueLattice . bottomElement ( ) ) ; Pair < N , D > superGraphNode = new Pair < N , D > ( startPoint , val ) ; scheduleValueProcessing ( new ValuePropagationTask ( superGraphNode ) ) ; } } logger . debug ( "Computed the final values of the edge functions" ) ; try { executor . awaitCompletion ( ) ; } catch ( InterruptedException e ) { e . printStackTrace ( ) ; } Set < N > allNonCallStartNodes = icfg . allNonCallStartNodes ( ) ; @ SuppressWarnings ( "unchecked" ) N [ ] nonCallStartNodesArray = ( N [ ] ) new Object [ allNonCallStartNodes . size ( ) ] ; int i = 0 ; for ( N n : allNonCallStartNodes ) { nonCallStartNodesArray [ i ] = n ; i ++ ; } for ( int t = 0 ; t < numThreads ; t ++ ) { ValueComputationTask task = new ValueComputationTask ( nonCallStartNodesArray , t ) ; scheduleValueComputationTask ( task ) ; } try { executor . awaitCompletion ( ) ; } catch ( InterruptedException e ) { e . printStackTrace ( ) ; } }
computes the final values for edge functions .
