On Fri, 28 Jul 2023 19:59:15 GMT, Brian Burkhalter <[email protected]> wrote:
>> Limit native memory allocation and move write loop from the native layer
>> into Java. This change should make the OOME reported in the issue much less
>> likely.
>
> Brian Burkhalter has updated the pull request incrementally with one
> additional commit since the last revision:
>
> 6478546: Move buffer clamping up to Java layer; correct read behavior to
> match legacy
src/java.base/share/classes/java/io/FileInputStream.java line 257:
> 255: try {
> 256: do {
> 257: int size = Math.min(remaining, 1572864);
1.5Mb seems high, I think we really need micro that do real file I/O to help
tune this.
src/java.base/share/classes/java/io/FileOutputStream.java line 347:
> 345: pos += n;
> 346: remaining -= n;
> 347: } while (remaining > 0);
Long standing behavior is that write is a no-open with len is 0, meaning you
can do while here (no need to change it to do-while). Same thing in RAF.
src/java.base/share/native/libjava/io_util.c line 160:
> 158: }
> 159:
> 160: if (outOfBounds(env, off, len, bytes)) {
I assume the IS_NULL and outOfBounds checking in both readBytes and writeBytes
are redundant now.
src/java.base/share/native/libjava/io_util.c line 183:
> 181: if (fd == -1) {
> 182: JNU_ThrowIOException(env, "Stream Closed");
> 183: nwritten = -1;
nwritten is initialized to -1.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14981#discussion_r1278565903
PR Review Comment: https://git.openjdk.org/jdk/pull/14981#discussion_r1278565565
PR Review Comment: https://git.openjdk.org/jdk/pull/14981#discussion_r1278563940
PR Review Comment: https://git.openjdk.org/jdk/pull/14981#discussion_r1278564255