[cvs] / jsr166 / src / main / java / util / PriorityQueue.java Repository:
ViewVC logotype

Diff of /jsr166/src/main/java/util/PriorityQueue.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.114, Wed Nov 30 18:12:52 2016 UTC revision 1.115, Fri Dec 2 07:11:36 2016 UTC
# Line 823  Line 823 
823      }      }
824    
825      final class PriorityQueueSpliterator implements Spliterator<E> {      final class PriorityQueueSpliterator implements Spliterator<E> {
         /*  
          * This is very similar to ArrayList Spliterator, except for  
          * extra null checks.  
          */  
826          private int index;            // current index, modified on advance/split          private int index;            // current index, modified on advance/split
827          private int fence;            // -1 until first use          private int fence;            // -1 until first use
828          private int expectedModCount; // initialized when fence set          private int expectedModCount; // initialized when fence set
# Line 855  Line 851 
851    
852          @SuppressWarnings("unchecked")          @SuppressWarnings("unchecked")
853          public void forEachRemaining(Consumer<? super E> action) {          public void forEachRemaining(Consumer<? super E> action) {
             int i, hi, mc; // hoist accesses and checks from loop  
             final Object[] a;  
854              if (action == null)              if (action == null)
855                  throw new NullPointerException();                  throw new NullPointerException();
856              if ((a = queue) != null) {              if (fence < 0) { fence = size; expectedModCount = modCount; }
857                  if ((hi = fence) < 0) {              final Object[] a = queue;
858                      mc = modCount;              int i, hi; E e;
859                      hi = size;              for (i = index, index = hi = fence; i < hi; i++) {
860                  }                  if ((e = (E) a[i]) == null)
861                  else                      break;      // must be CME
                     mc = expectedModCount;  
                 if ((i = index) >= 0 && (index = hi) <= a.length) {  
                     for (E e;; ++i) {  
                         if (i < hi) {  
                             if ((e = (E) a[i]) == null) // must be CME  
                                 break;  
862                              action.accept(e);                              action.accept(e);
863                          }                          }
864                          else if (modCount != mc)              if (modCount != expectedModCount)
                             break;  
                         else  
                             return;  
                     }  
                 }  
             }  
865              throw new ConcurrentModificationException();              throw new ConcurrentModificationException();
866          }          }
867    
868            @SuppressWarnings("unchecked")
869          public boolean tryAdvance(Consumer<? super E> action) {          public boolean tryAdvance(Consumer<? super E> action) {
870              if (action == null)              if (action == null)
871                  throw new NullPointerException();                  throw new NullPointerException();
872              int hi = getFence(), lo = index;              if (fence < 0) { fence = size; expectedModCount = modCount; }
873              if (lo >= 0 && lo < hi) {              int i;
874                  index = lo + 1;              if ((i = index) < fence) {
875                  @SuppressWarnings("unchecked") E e = (E)queue[lo];                  index = i + 1;
876                  if (e == null)                  E e;
877                    if ((e = (E) queue[i]) == null
878                        || modCount != expectedModCount)
879                      throw new ConcurrentModificationException();                      throw new ConcurrentModificationException();
880                  action.accept(e);                  action.accept(e);
                 if (modCount != expectedModCount)  
                     throw new ConcurrentModificationException();  
881                  return true;                  return true;
882              }              }
883              return false;              return false;

Legend:
Removed from v.1.114  
changed lines
  Added in v.1.115

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8