RFR: 8314452: Explicitly indicate inlining success/failure in PrintInlining
Xin Liu
xliu at openjdk.org
Fri Aug 25 18:59:10 UTC 2023
On Wed, 16 Aug 2023 17:42:42 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
> This patch proposes to add a `+` or `-` to messages produced by `PrintInlining`, to indicate whether inlining succeeded or failed. This makes it easier to find inlining failures in an inlining trace, without having to rely on the message to figure out whether inlining succeeded or failed. Looking at inlining failures is often useful for diagnosing the results of benchmarks, but it can be hard to find inlining failures in lengthy traces.
>
> A sample of what this looks like:
>
>
> +@ 0 java.lang.foreign.Arena::ofConfined (10 bytes) inline (hot)
> +@ 0 java.lang.Thread::currentThread (0 bytes) (intrinsic)
> +@ 3 jdk.internal.foreign.MemorySessionImpl::createConfined (9 bytes) inline (hot)
> +@ 5 jdk.internal.foreign.ConfinedSession::<init> (18 bytes) inline (hot)
> +@ 6 jdk.internal.foreign.ConfinedSession$ConfinedResourceList::<init> (5 bytes) inline (hot)
> +@ 1 jdk.internal.foreign.MemorySessionImpl$ResourceList::<init> (5 bytes) inline (hot)
> +@ 1 java.lang.Object::<init> (1 bytes) inline (hot)
> +@ 9 jdk.internal.foreign.MemorySessionImpl::<init> (20 bytes) inline (hot)
> +@ 1 java.lang.Object::<init> (1 bytes) inline (hot)
> +@ 6 jdk.internal.foreign.MemorySessionImpl::asArena (9 bytes) inline (hot)
> +@ 5 jdk.internal.foreign.MemorySessionImpl$1::<init> (10 bytes) inline (hot)
> +@ 6 java.lang.Object::<init> (1 bytes) inline (hot)
> -@ 8 java.lang.foreign.SegmentAllocator::allocate (24 bytes) already compiled into a big method
>
>
> Using `grep`/`sls` to find inlining failures:
>
>
>> Get-Content inlining_trace.txt | sls '-@'
> -@ 8 java.lang.foreign.SegmentAllocator::allocate (24 bytes) already compiled into a big method
> -@ 34 java.lang.foreign.SegmentAllocator::allocate (24 bytes) already compiled into a big method
> -@ 19 java.lang.invoke.MethodHandle::linkToNative(JJJL)D (0 bytes) native call
> -@ 95 java.lang.foreign.Arena::close (0 bytes) virtual call
> ...
I also feel explicit message 'fail to inline' is better than +/-
Sigil here is essentially the value of a tree node. '+' denotes inline succeed. The problem is it increases the cognitive loads for java developers.
I think we can establish a general rule: a failed inline emits a message starting with "fail to inline". reason is optional. Everything else are successful inlines.
I think we still meet your goal: easily distinct inline or not inline method.
to get all successful inline, we just use invert grep: grep -v "fail to inline"
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15315#issuecomment-1693801289
More information about the hotspot-compiler-dev
mailing list