RFR: 8331876: JFR: Move file read and write events to java.base [v3]

Erik Gahlin egahlin at openjdk.org
Thu May 9 16:12:54 UTC 2024


On Thu, 9 May 2024 15:41:42 GMT, Erik Gahlin <egahlin at openjdk.org> wrote:

>> src/java.base/share/classes/jdk/internal/event/JFRTracing.java line 51:
>> 
>>> 49:       field.setAccessible(true);
>>> 50:       field.setBoolean(null, true);
>>> 51:   }
>> 
>> Using reflection with `Field` seems expedient - a more modern way could be to use `VarHandle` but I guess it would require more setup to obtain a `Lookup` with the proper capabilities?
>
> The field is only used once and a VarHandle implementation loads three additional classes during startup and in my measurements add about 0.6 ms to startup.

A compromise between performance and readability is:

if (JFRTracing.isEnabled()) {
      ...
}

One additional class is loaded, but it's more clear where it comes from. I didn't want to do that for the ThrowableTracer class since it had a clinit.

This could potentially cause problems if JFRTracing is loaded early from Throwable or other class in the future. The static boolean flag is more safe, so probably better.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19129#discussion_r1595656857


More information about the core-libs-dev mailing list