RFR: 8284849: Add deoptimization to unified logging
Johan Sjölén
duke at openjdk.java.net
Fri May 20 19:10:59 UTC 2022
On Fri, 20 May 2022 16:38:55 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> This PR adds a new "deoptimization" tag and a new log message on the info level mimicking JFR's deoptimization event. In the future this tag will be used to add trace level information, hopefully replacing TraceDeoptimization. JFR's event also captures the stacktrace, which this does not (happy to add this if considered important).
>>
>> An example output looks like this:
>>
>>
>> [1.346s][info][deoptimization] Deoptimization start {
>> [1.346s][info][deoptimization] compileId = 407
>> [1.346s][info][deoptimization] compiler = c2
>> [1.346s][info][deoptimization] method:lineno:bci = java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(I)Z:176:26
>> [1.346s][info][deoptimization] instruction = ifne
>> [1.346s][info][deoptimization] reason = unstable_if
>> [1.346s][info][deoptimization] action = reinterpret
>> [1.346s][info][deoptimization] } Deoptimization end
>
> src/hotspot/share/runtime/deoptimization.cpp line 1935:
>
>> 1933: JFR_ONLY(post_deoptimization_event(nm, trap_method(), trap_bci, trap_bc, reason, action);)
>> 1934:
>> 1935: if(Log(deoptimization)::is_info()) {
>
> I don't see this pattern used for checking whether a log tag is enabled used elsewhere. Won't this only print when the log level is exactly `info`?
>
> The pattern I see used elsewhere is:
>
>
> LogTarget(Info, <tag>) lt;
> if (lt.is_enabled()) {
> ...
> }
This does the same thing. `is_enabled` calls `is_level` internally. I did it this way so that we have a temporary value instead of cluttering the outer scope.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8812
More information about the hotspot-dev
mailing list