RFR: 8298730: Refactor subsystem_file_line_contents and add docs and tests

Johan Sjölen jsjolen at openjdk.org
Wed Dec 14 10:40:40 UTC 2022


Hi!

Citing the ticket directly:

The function subsystem_file_line_contents does the simple job of parsing lines in a file, but does so in a fairly complex way. This function can be simplified. The function also has a surprising API, as you need to know that in one case the format string needs to take 2 specifiers, instead of 1. 

Some more context:

`subsystem_file_line_contents` either parses files that look like this:


one_value


Called as: `subsystem_file_line_contents(ctrl, fname, nullptr, "%s")`

Or like this:


key1 val1
key2 val2


Called as:  `subsystem_file_line_contents(ctrl, fname, "key1", "%s %s")`

The API for the key/value case is changed to: `subsystem_file_line_contents(ctrl, fname, "key1", "%s")`. Note: `"%s"`, not `"%s %s"`.

-------------

Commit messages:
 - Freeze stringStream to variable to avoid calling ::base()
 - Document code
 - Change callsites
 - Add tests
 - Check key is at beginning of line, rename file to file_path
 - Do manual substringing of prefix
 - Simplify file name handling and use buf_len constant
 - Split single line and multi line cases into two
 - Use nullptr, not NULL
 - Move buf and discard to usage sites
 - ... and 4 more: https://git.openjdk.org/jdk/compare/86270e30...ce308c66

Changes: https://git.openjdk.org/jdk/pull/11667/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11667&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8298730
  Stats: 229 lines in 4 files changed: 167 ins; 20 del; 42 mod
  Patch: https://git.openjdk.org/jdk/pull/11667.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11667/head:pull/11667

PR: https://git.openjdk.org/jdk/pull/11667


More information about the hotspot-runtime-dev mailing list