RFR: 8320971: Use BufferedInputStream.buf directly when param of implTransferTo() is trusted
Alan Bateman
alanb at openjdk.org
Wed Nov 29 20:02:07 UTC 2023
On Wed, 29 Nov 2023 11:57:37 GMT, Sergey Tsypanov <stsypanov at openjdk.org> wrote:
> It looks like we can skip copying of `byte[]` in `BufferedInputStream.implTransferTo()` for `OutputStreams` residing in `java.io`.
>
> See comment by @vlsi in https://github.com/openjdk/jdk/pull/10525/files#diff-e19c508d1bb6ee78697ecca66947c395adda0d9c49a85bf696e677ecbd977af1R612
src/java.base/share/classes/java/io/BufferedInputStream.java line 647:
> 645: if (avail > 0) {
> 646: // trust all OutputStreams from java.io
> 647: if (out.getClass().getPackageName() == BufferedInputStream.class.getPackageName()) {
I don't think Class::getPackageName documents that the returned String is intern so I wonder if the == check will lead to questions and suggestions of a bug. Classes with names starting with "java." can only be defined to the boot or platform class loader (details in the ClassLoader API docs) so you could just check if the package name equals "java.io".
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16879#discussion_r1409802437
More information about the core-libs-dev
mailing list