RFR: 8286180: Enable construction of LogStreamImpl from LogMessageImpl

Johan Sjölén duke at openjdk.java.net
Tue May 17 13:03:18 UTC 2022


May I please have a review of this PR which adds non-interleaving log streams to UL?

In `LogMessageImpl` I remove templates and instead directly store a reference to `LogTagSet` and change `LogTagHandle` to be consistent (from pointer to reference) with `LogMessageImpl`.

Adding a non-interleaving log stream enables UL to replace two patterns found in HotSpot:

1. `ttyLocker` + `(x)tty`
Instead of taking the global tty lock in order to ensure non-interleaving logs we can now make a `NonInterleavingLogstream` and pass that around to various `print_on(outputStream*)` functions.

2. `stringStream` + `outputStream*`
In order to avoid taking the lock and being able to take arbitrary output streams a `stringStream` is created and finally printed through `print_raw(ss.as_string())`. This however requires a `ResourceMark`, which `NonInterleavingLogStream` does not require.

Passes tier 1.

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

Commit messages:
 - Add tests for interleaved-ness of the two logstreams
 - Make templated LogStreamImpl and add NoninterleavingStream on top
 - Make LogMessageImpl non-templated and use references for LogTagSet

Changes: https://git.openjdk.java.net/jdk/pull/8748/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8748&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8286180
  Stats: 400 lines in 6 files changed: 224 ins; 142 del; 34 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8748.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8748/head:pull/8748

PR: https://git.openjdk.java.net/jdk/pull/8748


More information about the hotspot-runtime-dev mailing list