Hi Martin,

On 7/11/2017 6:00 AM, Martin Buchholz wrote:
The notable thing this time around is the embarrassing number of rare races being fixed, all of which are second tries.  This time for sure!

There's a large number of boring changes to appease errorprone, notably
http://errorprone.info/bugpattern/RandomModInteger
http://errorprone.info/bugpattern/MixedArrayDimensions

http://cr.openjdk.java.net/~martin/webrevs/openjdk10/jsr166-integration/overview.html

8190747: ExecutorService/Invoke.java fails intermittently

Looks fine.

8179314: CountedCompleterTest.testForkHelpQuiesce fails with expected:<21> but was:<13>

Looks fine.

8189387: ConcurrentLinkedDeque linearizability continued ...

Can't really comment on linearizability changes but I found this change to be very confusing:

src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java

      final Node<E> pred(Node<E> p) {
!         Node<E> q = p.prev;
!         return (p == q) ? last() : q;
      }

      /**
       * Returns the first node, the unique node p for which:
       *     p.prev == null && p.next != p
--- 693,705 ----
       * Returns the predecessor of p, or the last node if p.prev has been
       * linked to self, which will only be true if traversing with a
       * stale pointer that is now off the list.
       */
      final Node<E> pred(Node<E> p) {
!         if (p == (p = p.prev))
!             p = last();
!         return p;
      }

The original version is quite clear, the new version is trying to be far too clever with order of evaluation and to me is far less clear.


8189764: Miscellaneous changes imported from jsr166 CVS 2017-11

All seem okay. Though I'm curious about the changes from "catch(Throwable" to "catch(Exception" ?

Thanks,
David

Reply via email to