RFR: 8304745: Lazily initialize byte[] in java.io.BufferedInputStream [v2]

Daniel Fuchs dfuchs at openjdk.org
Thu Mar 23 19:43:51 UTC 2023


On Thu, 23 Mar 2023 19:27:04 GMT, Sergey Tsypanov <stsypanov at openjdk.org> wrote:

>> By default `BufferedInputStream` is constructed with internal buffer with capacity 8192. In some cases this buffer is never used, e.g. when we call `IS.readNBytes()` or `IS.readAllBytes()` (relying on `BIS.read1()`) or when `BufferedInputStream` is cascaded.
>
> Sergey Tsypanov has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Update src/java.base/share/classes/java/io/BufferedInputStream.java
>   
>   Co-authored-by: liach <7806504+liach at users.noreply.github.com>

src/java.base/share/classes/java/io/BufferedInputStream.java line 183:

> 181:         if (buffer == EMPTY) {
> 182:             buf = buffer = new byte[size];
> 183:         }

You should probably use compareAndSet here too like in fill() - to handle the case of asynchoronous close.
This patch makes me a bit nervous. I would advise to get feedback from @bplb and @AlanBateman .

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13150#discussion_r1146736923


More information about the core-libs-dev mailing list