RFR (M): 7177003 C1: LogCompilation support

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Fri Sep 28 10:02:02 PDT 2012


Thanks you, Chris. Yes, I tested these changes.

Best regards,
Vladimir Ivanov

On 09/28/12 19:55, Christian Thalinger wrote:
> That looks good.  I guess you tested a debug build with PrintCompilation and LogCompilation?
>
> -- Chris
>
> On Sep 28, 2012, at 5:08 AM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
>
>> Chris,
>>
>> Nice code cleanup!
>> How about that? [1]
>>
>> Best regards,
>> Vladimir Ivanov
>>
>> [1] http://cr.openjdk.java.net/~vlivanov/7177003/webrev.02
>>
>> On 09/28/12 02:15, Christian Thalinger wrote:
>>>
>>> On Sep 26, 2012, at 8:13 AM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
>>>
>>>> Thank you, Vladimir and Chris.
>>>>
>>>> Here are updated changes [1]:
>>>>     - merged with the latest changes in hotspot-comp
>>>>     - removed intx->int conversion as you suggested
>>>>     - removed "receiver is statically known" message from PrintInlining
>>>> output, but left in it the log
>>>
>>> Looking at this code:
>>>
>>> void GraphBuilder::print_inlining(ciMethod* callee, const char* msg, bool success) {
>>>
>>> +  CompileLog* log = compilation()->log();
>>> +  if (log != NULL) {
>>> +    if (success) {
>>> +      if (strcmp(msg,"") != 0)
>>> +        log->inline_success(msg);
>>> +      else
>>> +        log->inline_success("receiver is statically known");
>>> +    } else {
>>> +      log->inline_fail(msg);
>>> +    }
>>> +  }
>>> +
>>>
>>>    if (!PrintInlining)  return;
>>>    assert(msg != NULL, "must be");
>>>    CompileTask::print_inlining(callee, scope()->level(), bci(), msg);
>>>    if (success && CIPrintMethodCodes) {
>>>      callee->print_codes();
>>>
>>> I noticed that we now can pass in NULL as msg since CompileTask::print_inlining takes care of that (the code before I moved it to CompileTask probably didn't and that's why the assert is there).
>>>
>>> I suggest to remove the above assert, default GraphBuilder::print_inlining's msg argument to NULL and change:
>>>
>>> -    print_inlining(callee, "");
>>> +    print_inlining(callee);
>>>
>>> Then we can get rid of the strcmp as well.
>>>
>>> -- Chris
>>>
>>>>
>>>> Best regards,
>>>> Vladimir Ivanov
>>>>
>>>> [1] http://cr.openjdk.java.net/~vlivanov/7177003/webrev.01/
>>>>
>>>> On 09/26/12 02:47, Vladimir Kozlov wrote:
>>>>> Good changes!
>>>>>
>>>>> Small thing: in method.cpp and deoptimization.cpp remove (int) cast from
>>>>> os::current_thread_id() if you want tou use UINTX format (it reads 64bit
>>>>> in 64b VM).
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> Vladimir Ivanov wrote:
>>>>>> 7177003: C1: LogCompilation support
>>>>>> http://cr.openjdk.java.net/~vlivanov/7177003/
>>>>>>
>>>>>> LogCompilation support in C1 - both client [1] and tiered [2] modes.
>>>>>>
>>>>>> These changes are only for Hotspot. LogCompilation tool changes will
>>>>>> be sent separately.
>>>>>>
>>>>>> Also:
>>>>>>    - print code cache state (after each nmethod installation)
>>>>>>      Example:
>>>>>>     <code_cache
>>>>>>        total_blobs='258'
>>>>>>        nmethods='50'
>>>>>>        adapters='133'
>>>>>>        free_code_cache='98839808'
>>>>>>        largest_free_block='98832512'/>
>>>>>>
>>>>>>    - consistent nmethod numbering between ordinary and OSR compilations
>>>>>>    - correct printing of thread id's
>>>>>>    - added missed tty locks where necessary
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> Best regards,
>>>>>> Vladimir Ivanov
>>>>>>
>>>>>> PS: actually, if it simplifies review, I can send cleanup/small
>>>>>> enhancements as a separate change.
>>>>>> PPS: phew! Finally deciphered how deoptimization in C1 works =)
>>>>>>
>>>>>> [1]
>>>>>> http://cr.openjdk.java.net/~vlivanov/7177003/webrev.00/compilation.client.log
>>>>>>
>>>>>> [2]
>>>>>> http://cr.openjdk.java.net/~vlivanov/7177003/webrev.00/compilation.tiered.log
>>>


More information about the hotspot-compiler-dev mailing list