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