Beispiel #1
0
  // we used to have 'public void invalidate_cache(NodeTable nt)', but that turned out to be FAR
  // solver
  // seince the bounde-checking on t_var could not be moved out of loop (or something like that?)...
  public void invalidate_cache(NodeTable nt, int size) {

    if (possible_bins_count == 0) {
      return;
    }
    numpartial_clears++;

    int ok = 0;
    if (members == 1) {
      for (int i = 0; i < size; i++) {
        if (!entries[i].invalid()) {
          if (!nt.isValid(entries[i].op1) || nt.isValid(entries[i].ret)) {
            entries[i].clear();
          } else {
            ok++;
          }
        }
      }
    } else {
      for (int i = 0; i < size; i++) {
        if (!entries[i].invalid()) {
          if (!nt.isValid(entries[i].op1)
              || !nt.isValid(entries[i].op2)
              || !nt.isValid(entries[i].ret)) {
            entries[i].clear();
          } else {
            ok++;
          }
        }
      }
    }
    if (ok == 0) {
      possible_bins_count = 0;
    }
  }