RFR (S): 8022585: JVM crashes when ran with -XX:+PrintInlining

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Sep 20 18:50:39 PDT 2013


Thank you, Christian

Vladimir

On 9/20/13 6:26 PM, Christian Thalinger wrote:
>
> On Sep 20, 2013, at 5:54 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>
>> Thank you, Christian
>>
>> On 9/20/13 4:56 PM, Christian Thalinger wrote:
>>> src/share/vm/c1/c1_GraphBuilder.cpp:
>>>
>>> !   if (!PrintInlining && !compilation()->method()->has_option("PrintInlining"))  return;
>>>
>>> Can you put the return on the next line?
>>
>> Done.
>>
>>>
>>> src/share/vm/opto/compile.hpp:
>>>
>>>      bool              print_assembly() const       { return _print_assembly; }
>>>      void          set_print_assembly(bool z)       { _print_assembly = z; }
>>> +   bool              print_inlining() const       { return _print_inlining; }
>>> +   void          set_print_inlining(bool z)       { _print_inlining = z; }
>>> +   bool              print_intrinsics() const     { return _print_intrinsics; }
>>> +   void          set_print_intrinsics(bool z)     { _print_intrinsics = z; }
>>>
>>> Although this follows our naming convention for getters and setters print_inlining is confusing because another print_inlining method does the actual printing.  Maybe we should prefix these methods with "should_"?
>>
>> I would like to keep it. It is consistent with other print flags accessors. The big difference from printing method is this one does not have arguments. So it is easy to separate them.
>
> Sure.  I was just pointing it out.
>
>>
>> thanks,
>> Vladimir
>>
>>>
>>> Otherwise this looks good.
>>>
>>> On Sep 20, 2013, at 4:37 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>>>
>>>> http://cr.openjdk.java.net/~kvn/8022585/webrev/
>>>>
>>>> We can't use +PrintInlining flag in 7u40 after 8005031 changes were backported into 7u40. These changes keep inlining info in GrowableArray and use GrowableArray::at() method to access elements. Unfortunately in jdk7u40 at() method is copy constructor vs &at() method which returns reference in jdk8 (changed for 7200776). As result in jdk7u40 all changes to inline info are done to local copy and lost.
>>>>
>>>> This problem was reported 2 times. One report (8019313) was from Andreas Schoesser who did evaluation of the problem and suggested the fix.
>>>>
>>>> I extended his fix to use adr_at() instead of at() in all places where inlining info is accessed. It will simplify the backport into 7update.
>>>> I also added ability to print inlining and intrinsic per method:
>>>>
>>>> -XX:CompileCommand=option,Test::test,PrintInlining
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8019313
>>>> https://bugs.openjdk.java.net/browse/JDK-8022585
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>


More information about the hotspot-compiler-dev mailing list