RFR (M): 7177003 C1: LogCompilation support
Christian Thalinger
christian.thalinger at oracle.com
Fri Sep 28 08:55:58 PDT 2012
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