RFR: 8305457: Implement java.io.IO
Rémi Forax
forax at openjdk.org
Tue May 7 05:55:55 UTC 2024
On Mon, 6 May 2024 21:45:12 GMT, Pavel Rappo <prappo at openjdk.org> wrote:
> Please review this PR which introduces the `java.io.IO` top-level class and three methods to `java.io.Console` for [Implicitly Declared Classes and Instance Main Methods (Third Preview)].
>
> This PR has been obtained as `git merge --squash` of a now obsolete [draft PR].
>
> [Implicitly Declared Classes and Instance Main Methods (Third Preview)]: https://bugs.openjdk.org/browse/JDK-8323335
> [draft PR]: https://github.com/openjdk/jdk/pull/18921
Otherwise looks good.
src/java.base/share/classes/jdk/internal/io/JdkConsoleImpl.java line 74:
> 72:
> 73: @Override
> 74: public String readln(String prompt) {
this code can be simplified using an early return (and the body of the try/catch can be reduced so it is more clear which statement can cause the IOException)
synchronized (writeLock) {
synchronized(readLock) {
if (!prompt.isEmpty()) {
pw.print(prompt);
pw.flush(); // automatic flushing does not cover print
}
char[] array;
try {
array = readline(false);
} catch (IOException x) {
throw new IOError(x);
}
if (array != null) {
return new String(array);
}
}
}
return null;
src/jdk.internal.le/share/classes/jdk/internal/org/jline/JdkConsoleProviderImpl.java line 88:
> 86: @Override
> 87: public JdkConsole println(Object obj) {
> 88: writer().println(obj);
the result of 'writer()' can be stored in a local variable (printing code are not JITed as often as the rest of the codes)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19112#issuecomment-2097502361
PR Review Comment: https://git.openjdk.org/jdk/pull/19112#discussion_r1591846059
PR Review Comment: https://git.openjdk.org/jdk/pull/19112#discussion_r1591847579
More information about the core-libs-dev
mailing list