Making PrintEscapeAnalysis a diagnostic option on product VM?

Chris Newland cnewland at chrisnewland.com
Thu Jul 9 20:10:40 UTC 2015


Hi,

I've found a way to output EA information via LogCompilation from the
product VM including BCIs so that I can annotate bytecode but it relies on
the following block from opto/compile.cpp being entered:

void Compile::Init(int aliaslevel) {
...

  if (debug_info()->recording_non_safepoints()) {
    set_node_note_array(new(comp_arena()) GrowableArray<Node_Notes*>
                        (comp_arena(), 8, 0, NULL));
    set_default_node_notes(Node_Notes::make(this));
  }

Without this, the Note_Notes are not present in the ideal nodes and I
can't fully identify what was eliminated.

It looks like this will only execute when DebugNonSafepoints is true and
this is a diagnostic VM option.

Does anyone have an alternative method for getting BCIs for eliminated
allocs without using Note_Notes?

Thanks,

Chris




On Fri, June 19, 2015 16:09, Vladimir Kozlov wrote:
> Agree.
>
>
> Vladimir K
>
>
> On 6/19/15 5:10 AM, Vladimir Ivanov wrote:
>
>>> What do you think the next step is?
>>>
>>>
>>> I'm not a committer but I'd be happy to submit a patch/webrev that
>>> outputs LogCompilation XML for the kind of EA info I think would be
>>> useful.
>> Go for it. If you are a Contributor (signed OCA), we'll review and
>> accept your patch with gratitude. Keep in mind, that when you touch
>> LogCompilation output format, you should update logc tool
>> (src/share/tools/LogCompilation/ [1]) as well.
>>
>>
>>> I've just seen Vitaly's post and I agree a tty 1-liner for each
>>> elimination would also be nice.
>> Feel free to enhance -XX:+PrintEscapeAnalysis output as well, if you
>> find it useful.
>>
>> Best regards,
>> Vladimir Ivanov
>>
>>
>> [1]
>> http://hg.openjdk.java.net/jdk9/jdk9/hotspot/file/tip/src/share/tools/L
>> ogCompilation
>>>
>>> Thanks,
>>>
>>>
>>> Chris
>>>
>>>
>>> On Fri, June 19, 2015 12:03, Vladimir Ivanov wrote:
>>>
>>>> Chris,
>>>>
>>>>
>>>>
>>>> I'd suggest to look into enhancing LogCompilation output instead of
>>>>  parsing VM output. It doesn't require any flag changes and fits
>>>> nicely into existing LogCompilation functionality, so we can
>>>> integrate it into the product, relieving you and JITWatch users from
>>>> building a companion VM.
>>>>
>>>> Best regards,
>>>> Vladimir Ivanov
>>>>
>>>>
>>>>
>>>> On 6/19/15 1:16 PM, Chris Newland wrote:
>>>>
>>>>
>>>>> Hi, hope this is the correct list (perhaps serviceability?)
>>>>>
>>>>>
>>>>>
>>>>> I'm experimenting with some HotSpot changes that log escape
>>>>> analysis decisions so that I can visualise eliminated allocations
>>>>> at the source and bytecode levels in JITWatch[1].
>>>>>
>>>>> My plan was to build a companion VM for JITWatch based on the
>>>>> product VM
>>>>> that would allow users to inspect some of the deeper workings such
>>>>> as EA and DCE that are not present in the LogCompilation output.
>>>>>
>>>>> I mentioned this to some performance guys at Devoxx and they
>>>>> didn't like the custom VM idea and suggested I put in a request to
>>>>> consider making -XX:+PrintEscapeAnalysis available under
>>>>> -XX:+UnlockDiagnosticVMOptions on
>>>>> the product VM (it's currently a notproduct option).
>>>>>
>>>>> If this is something you would consider than could I also request
>>>>>  consideration of -XX:+PrintEliminateAllocations.
>>>>>
>>>>> All I would need is the class, method, and bci of each NoEscape
>>>>> detected.
>>>>>
>>>>> Kind regards,
>>>>>
>>>>>
>>>>>
>>>>> Chris
>>>>>
>>>>>
>>>>>
>>>>> [1] https://github.com/AdoptOpenJDK/jitwatch
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>




More information about the hotspot-compiler-dev mailing list