RFR: 8335843: C2 hits assert(_print_inlining_stream->size() > 0) failed: missing inlining msg
Roland Westrelin
roland at openjdk.org
Thu Jul 18 11:33:32 UTC 2024
On Thu, 18 Jul 2024 11:20:05 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:
>> This is similar to 8327741 but for method handle calls. When a method
>> handle call can be resolved late so it can't be inlined but the target
>> of the call is changed, no new inlining message is produced. The fix I
>> propose is similar to the fix for 8327741. I also made a small change
>> to the fix for 8327741 so `PrintInlining` now reports the resolved
>> method. With:
>>
>>
>> static class A {
>> void m() {
>>
>> }
>> }
>>
>> static class B extends A {
>> void m() {
>>
>> }
>> }
>>
>>
>> If the virtual call to `A.m()` is resolved to a call to
>> `B.m()`. Before this change, the `PrintInlining` output reports a call
>> to `A.m()` and now it reports the actual target `B.m()`.
>
> test/hotspot/jtreg/compiler/print/TestPrintInliningLateVirtualCall.java line 49:
>
>> 47: a = fieldB;
>> 48: } else if (i > 10) {
>> 49: a = fieldA;
>
> Why do you need these changes?
It was so I could verify the change I made to the late virtual call message. Otherwise, the change in the c2 code doesn't cause any difference in the `PrintInlining` output.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20230#discussion_r1682683073
More information about the hotspot-compiler-dev
mailing list