On Sun, 1 Jun 2025 13:07:50 GMT, Erik Gahlin <egah...@openjdk.org> wrote:

>> src/jdk.jfr/share/classes/jdk/jfr/internal/EventInstrumentation.java line 
>> 256:
>> 
>>> 254:             // }
>>> 255:             getEventConfiguration(codeBuilder);
>>> 256:             codeBuilder.aload(0);
>> 
>> Can issue a dup() here if you want to avoid the second aload(0).
>
> I don't think it will work because the result of the first getField 
> (startTime) will be on the stack, when we issue the next getField (duration).

No big deal, we can look into the details later.

>> src/jdk.jfr/share/classes/jdk/jfr/internal/EventInstrumentation.java line 
>> 261:
>> 
>>> 259:             getfield(codeBuilder, eventClassDesc, 
>>> ImplicitFields.FIELD_DURATION);
>>> 260:             Bytecode.invokevirtual(codeBuilder, 
>>> TYPE_EVENT_CONFIGURATION, METHOD_THROTTLE);
>>> 261:             int result = codeBuilder.allocateLocal(TypeKind.LONG);
>> 
>> Do we really need to store the result in a local? Can't we just dup it on 
>> the expression stack and store it directly into the field after another 
>> aload, or dup? Perhaps dup twice to then issue the mask operation?
>
> We could do an aload(0) at the beginning, before 
> getEventConfiguration(codeBuilder), to have "this" for putfield(duration) 
> later, but then we would need to do a getfield(this.duration) to have it on 
> the stack for the mask.
> 
> We can't do a dup() on duration because we need "this" on the stack to store 
> it in this.duration. I thought using a local variable would be faster than 
> accessing this.duration. It also reduces the chance of the value being 
> changed by another thread.

No big deal, we can look into this later if the need arises.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25559#discussion_r2120675164
PR Review Comment: https://git.openjdk.org/jdk/pull/25559#discussion_r2120676832

Reply via email to