From 31a5f9a5c8ddeef72e37310abedc89a2add6882f Mon Sep 17 00:00:00 2001 From: erik_gahlin Date: Wed, 9 Jul 2025 07:41:19 +0200 Subject: [PATCH 1/2] Initial --- patch.txt | 43 +++++++++++++++++++ .../classes/java/io/RandomAccessFile.java | 23 +++++++++- 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 patch.txt diff --git a/patch.txt b/patch.txt new file mode 100644 index 0000000000000..fd8fbbffdf593 --- /dev/null +++ b/patch.txt @@ -0,0 +1,43 @@ +diff --git a/src/java.base/share/classes/java/io/RandomAccessFile.java b/src/java.base/share/classes/java/io/RandomAccessFile.java +index 339030e022c..1933ad91680 100644 +--- a/src/java.base/share/classes/java/io/RandomAccessFile.java ++++ b/src/java.base/share/classes/java/io/RandomAccessFile.java +@@ -1030,17 +1030,36 @@ public final double readDouble() throws IOException { + */ + + public final String readLine() throws IOException { ++ if (jfrTracing && FileReadEvent.enabled()) { ++ return traceImplReadLine(); ++ } ++ return implReadLine(); ++ } ++ ++ private String traceImplReadLine() throws IOException { ++ long bytesRead = 0; ++ long start = FileReadEvent.timestamp(); ++ try { ++ String result = implReadLine(); ++ bytesRead = result == null ? 0 : result.length(); ++ return result; ++ } finally { ++ FileReadEvent.offer(start, path, bytesRead); ++ } ++ } ++ ++ private final String implReadLine() throws IOException { + StringBuilder input = new StringBuilder(); + int c = -1; + boolean eol = false; + + while (!eol) { +- switch (c = read()) { ++ switch (c = read0()) { + case -1, '\n' -> eol = true; + case '\r' -> { + eol = true; + long cur = getFilePointer(); +- if ((read()) != '\n') { ++ if ((read0()) != '\n') { + seek(cur); + } + } diff --git a/src/java.base/share/classes/java/io/RandomAccessFile.java b/src/java.base/share/classes/java/io/RandomAccessFile.java index 339030e022c4c..1933ad9168023 100644 --- a/src/java.base/share/classes/java/io/RandomAccessFile.java +++ b/src/java.base/share/classes/java/io/RandomAccessFile.java @@ -1030,17 +1030,36 @@ public final double readDouble() throws IOException { */ public final String readLine() throws IOException { + if (jfrTracing && FileReadEvent.enabled()) { + return traceImplReadLine(); + } + return implReadLine(); + } + + private String traceImplReadLine() throws IOException { + long bytesRead = 0; + long start = FileReadEvent.timestamp(); + try { + String result = implReadLine(); + bytesRead = result == null ? 0 : result.length(); + return result; + } finally { + FileReadEvent.offer(start, path, bytesRead); + } + } + + private final String implReadLine() throws IOException { StringBuilder input = new StringBuilder(); int c = -1; boolean eol = false; while (!eol) { - switch (c = read()) { + switch (c = read0()) { case -1, '\n' -> eol = true; case '\r' -> { eol = true; long cur = getFilePointer(); - if ((read()) != '\n') { + if ((read0()) != '\n') { seek(cur); } } From 027093ed73b98099f40809d2c53ff5685182a5e9 Mon Sep 17 00:00:00 2001 From: erik_gahlin Date: Wed, 9 Jul 2025 07:50:50 +0200 Subject: [PATCH 2/2] Remove mistakenly added file --- patch.txt | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 patch.txt diff --git a/patch.txt b/patch.txt deleted file mode 100644 index fd8fbbffdf593..0000000000000 --- a/patch.txt +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/src/java.base/share/classes/java/io/RandomAccessFile.java b/src/java.base/share/classes/java/io/RandomAccessFile.java -index 339030e022c..1933ad91680 100644 ---- a/src/java.base/share/classes/java/io/RandomAccessFile.java -+++ b/src/java.base/share/classes/java/io/RandomAccessFile.java -@@ -1030,17 +1030,36 @@ public final double readDouble() throws IOException { - */ - - public final String readLine() throws IOException { -+ if (jfrTracing && FileReadEvent.enabled()) { -+ return traceImplReadLine(); -+ } -+ return implReadLine(); -+ } -+ -+ private String traceImplReadLine() throws IOException { -+ long bytesRead = 0; -+ long start = FileReadEvent.timestamp(); -+ try { -+ String result = implReadLine(); -+ bytesRead = result == null ? 0 : result.length(); -+ return result; -+ } finally { -+ FileReadEvent.offer(start, path, bytesRead); -+ } -+ } -+ -+ private final String implReadLine() throws IOException { - StringBuilder input = new StringBuilder(); - int c = -1; - boolean eol = false; - - while (!eol) { -- switch (c = read()) { -+ switch (c = read0()) { - case -1, '\n' -> eol = true; - case '\r' -> { - eol = true; - long cur = getFilePointer(); -- if ((read()) != '\n') { -+ if ((read0()) != '\n') { - seek(cur); - } - }