[11] RFR 8193085 Vectorize the nio Buffer equals and compareTo implementations (original) (raw)

Paul Sandoz paul.sandoz at oracle.com
Tue Dec 19 19:39:01 UTC 2017


On 19 Dec 2017, at 11:35, Alan Bateman <Alan.Bateman at oracle.com> wrote:

On 18/12/2017 20:55, Paul Sandoz wrote: : There is already an assert, perhaps i can simplify this:

1) StringCharBuffer does not require special overrides. 2) Update the mismatch method: static int mismatch(CharBuffer a, int aOff, CharBuffer b, int bOff, int length) { int i = 0; // Ensure only heap or off-heap buffer instances use the // vectorized mismatch. If either buffer is a StringCharBuffer // (order is null) then the slow path is taken if (length > 3 && a.charRegionOrder() == b.charRegionOrder() && a.charRegionOrder() != null && b.charRegionOrder() != null) { I updated the webrev in place (i also updated the test to test big vs. little endian). When I looked at it yesterday the CharBuffer version of mismatch wasn't checking both bases (or maybe I just mis-read it).

You did not misread it. Previously it strictly did not need to check both (only argument a) because the StringCharBuffer equals/compareTo did not call the mismatch method.

Anyway, it looks good now and I see the other bug updated to list clarifying the compareTo specs too.

Thanks, Paul.



More information about the core-libs-dev mailing list