ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/ArrayDeque.java
(Generate patch)

Comparing jsr166/src/main/java/util/ArrayDeque.java (file contents):
Revision 1.81 by jsr166, Sat Oct 22 18:16:56 2016 UTC vs.
Revision 1.83 by jsr166, Sun Oct 23 00:28:41 2016 UTC

# Line 263 | Line 263 | public class ArrayDeque<E> extends Abstr
263      public void addFirst(E e) {
264          // checkInvariants();
265          Objects.requireNonNull(e);
266 <        Object[] elements;
267 <        int capacity, s = size;
268 <        while (s == (capacity = (elements = this.elements).length))
269 <            grow(1);
270 <        elements[head = dec(head, capacity)] = e;
266 >        final Object[] elements;
267 >        final int capacity, s;
268 >        if ((s = size) == (capacity = (elements = this.elements).length))
269 >            addFirstSlowPath(e);
270 >        else
271 >            elements[head = dec(head, capacity)] = e;
272          size = s + 1;
273 +        // checkInvariants();
274 +    }
275 +
276 +    private void addFirstSlowPath(E e) {
277 +        grow(1);
278 +        final Object[] elements = this.elements;
279 +        elements[head = dec(head, elements.length)] = e;
280      }
281  
282      /**
# Line 282 | Line 290 | public class ArrayDeque<E> extends Abstr
290      public void addLast(E e) {
291          // checkInvariants();
292          Objects.requireNonNull(e);
293 <        Object[] elements;
294 <        int capacity, s = size;
295 <        while (s == (capacity = (elements = this.elements).length))
296 <            grow(1);
297 <        elements[add(head, s, capacity)] = e;
293 >        final Object[] elements;
294 >        final int capacity, s;
295 >        if ((s = size) == (capacity = (elements = this.elements).length))
296 >            addLastSlowPath(e);
297 >        else
298 >            elements[add(head, s, capacity)] = e;
299          size = s + 1;
300 +        // checkInvariants();
301 +    }
302 +
303 +    private void addLastSlowPath(E e) {
304 +        grow(1);
305 +        final Object[] elements = this.elements;
306 +        elements[add(head, size, elements.length)] = e;
307      }
308  
309      /**

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines