RFR: 8268435: (ch) ChannelInputStream could override readAllBytes

delvh github.com+51889757+delvh at openjdk.java.net
Thu Sep 23 22:22:53 UTC 2021


On Thu, 23 Sep 2021 01:52:31 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:

> This change would override `readAllBytes()` and `readNBytes(int)` in `ChannelInputStream` thereby improving performance for all but smaller streams.

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 115:

> 113:     @Override
> 114:     public byte[] readAllBytes() throws IOException {
> 115:         if (!(ch instanceof SeekableByteChannel))

I think Pattern matching can be used here to make `117` obsolete. So:
Suggestion:

        if (!(ch instanceof SeekableByteChannel sbc))

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 117:

> 115:         if (!(ch instanceof SeekableByteChannel))
> 116:             return super.readAllBytes();
> 117:         SeekableByteChannel sbc = (SeekableByteChannel)ch;

Suggestion:

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 126:

> 124:             return super.readAllBytes();
> 125: 
> 126:         if (size > (long) Integer.MAX_VALUE) {

Suggestion:

        else if (size > (long) Integer.MAX_VALUE) {

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 138:

> 136:         int nread = 0;
> 137:         int n;
> 138:         for (;;) {

Suggestion:

        while (true) {

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 164:

> 162:         if (len < 0)
> 163:             throw new IllegalArgumentException("len < 0");
> 164:         if (len == 0)

Suggestion:

        else if (len == 0)

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 167:

> 165:             return new byte[0];
> 166: 
> 167:         if (!(ch instanceof SeekableByteChannel))

Suggestion:

        else if (!(ch instanceof SeekableByteChannel sbc))

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 169:

> 167:         if (!(ch instanceof SeekableByteChannel))
> 168:             return super.readAllBytes();
> 169:         SeekableByteChannel sbc = (SeekableByteChannel)ch;

Suggestion:

src/java.base/share/classes/sun/nio/ch/ChannelInputStream.java line 186:

> 184:         do {
> 185:             n = read(buf, nread, remaining);
> 186:             if (n > 0 ) {

Formatting?
Suggestion:

            if (n > 0) {

-------------

PR: https://git.openjdk.java.net/jdk/pull/5645


More information about the nio-dev mailing list