RFR: jsr166 jdk9 integration wave 14

Martin Buchholz martinrb at google.com
Tue Jan 31 22:18:06 UTC 2017


On Tue, Jan 31, 2017 at 12:32 PM, Paul Sandoz <paul.sandoz at oracle.com>
wrote:

>
> ConcurrentLinkedDeque
>>
> 1427                 if ((e = p.item) != null)
> 1428                     ((a != null) ? a : (a = new Object[n]))[i++] = e;
>
> This is awfully hard to read. Is it really worth it to save an extra line
> or two?
>

You're right.  Better style, better bytecode:

 Index: concurrent/ConcurrentLinkedDeque.java
===================================================================
RCS file:
/export/home/jsr166/jsr166/jsr166/src/main/java/util/concurrent/ConcurrentLinkedDeque.java,v
retrieving revision 1.87
diff -u -U 1 -r1.87 ConcurrentLinkedDeque.java
--- concurrent/ConcurrentLinkedDeque.java 29 Dec 2016 23:08:16 -0000 1.87
+++ concurrent/ConcurrentLinkedDeque.java 31 Jan 2017 22:13:02 -0000
@@ -1397,4 +1397,7 @@
                 final E e;
-                if ((e = p.item) != null)
-                    ((a != null) ? a : (a = new Object[n]))[i++] = e;
+                if ((e = p.item) != null) {
+                    if (a == null)
+                        a = new Object[n];
+                    a[i++] = e;
+                }
                 if (p == (p = q))
Index: concurrent/ConcurrentLinkedQueue.java
===================================================================
RCS file:
/export/home/jsr166/jsr166/jsr166/src/main/java/util/concurrent/ConcurrentLinkedQueue.java,v
retrieving revision 1.156
diff -u -U 1 -r1.156 ConcurrentLinkedQueue.java
--- concurrent/ConcurrentLinkedQueue.java 14 Jan 2017 06:50:52 -0000 1.156
+++ concurrent/ConcurrentLinkedQueue.java 31 Jan 2017 22:13:03 -0000
@@ -843,4 +843,7 @@
                 final E e;
-                if ((e = p.item) != null)
-                    ((a != null) ? a : (a = new Object[n]))[i++] = e;
+                if ((e = p.item) != null) {
+                    if (a == null)
+                        a = new Object[n];
+                    a[i++] = e;
+                }
                 if (p == (p = q))
Index: concurrent/LinkedTransferQueue.java
===================================================================
RCS file:
/export/home/jsr166/jsr166/jsr166/src/main/java/util/concurrent/LinkedTransferQueue.java,v
retrieving revision 1.153
diff -u -U 1 -r1.153 LinkedTransferQueue.java
--- concurrent/LinkedTransferQueue.java 18 Jan 2017 23:40:58 -0000 1.153
+++ concurrent/LinkedTransferQueue.java 31 Jan 2017 22:13:03 -0000
@@ -1034,4 +1034,7 @@
                 if (p.isData) {
-                    if (item != null)
-                        ((a != null) ? a : (a = new Object[n]))[i++] =
item;
+                    if (item != null) {
+                        if (a == null)
+                            a = new Object[n];
+                        a[i++] = item;
+                    }
                 } else if (item == null) {


More information about the core-libs-dev mailing list