On Wed, 29 Nov 2023 19:59:03 GMT, Alan Bateman <al...@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". Do we only want to trust java.io or anything starting with java.*? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/16879#discussion_r1409947085