On Thu, 15 Aug 2024 14:16:11 GMT, Erik Gahlin <[email protected]> wrote:
>> src/jdk.jfr/share/classes/jdk/jfr/internal/StringPool.java line 86:
>>
>>> 84:
>>> 85: private static void unpinVirtualThread() {
>>> 86: if (Thread.currentThread().isVirtual() &&
>>> ContinuationSupport.isSupported()) {
>>
>> If you are at all concerned about overhead here then pin could return a
>> boolean to indicate if the pin happened and oyu could then unpin just by
>> checking that boolean and avoid doing the isVirtual and isSupported checks
>> again.
>
> Would it be possible to create a boolean in the EventWriter that indicates if
> it is associated with a carrier thread or a normal thread (which can never be
> virtual) and then have two methods.
>
> long l = this.carrierThread ? StringPool.addPinnedString(s) :
> StringPool.addString(s);
Thread.currentThread() has an intrinsic, and isVirtual is just a type check.
ContinuationSupport.isSupported reads a static final so will disappear once
compiled. The pattern we are using in other areas is for the pin to return a
boolean (like David suggested).
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20588#discussion_r1718489921