RFR (M) 8146410: Interpreter functions are declared and defined in the wrong files

Christian Thalinger christian.thalinger at oracle.com
Tue Jan 12 01:50:20 UTC 2016


Assuming you copied the functions verbatim this looks good.  Good improvement.

> On Jan 7, 2016, at 7:53 AM, Coleen Phillimore <coleen.phillimore at oracle.com> wrote:
> 
> 
> Hi Goetz,
> 
> I messed up when I moved math_entry_available.   I meant to leave it in class TemplateInterpreter but move it to templateInterpreterGenerator_ppc.cpp file.
> 
> But that would defeat some of the purpose of this change to make sure that functions were in the right files.  I didn't like TemplateInterpreter::math_entry_available() in abstractInterpreter_ppc.cpp either though.
> 
> So, I moved the function math_entry_available into class AbstractInterpreter which is called by AbstractInterpreter::can_be_compiled(), hence avoiding a call to a derived class which didn't seem good.  This makes the most sense to me.
> 
> Can you check out:
> 
> http://cr.openjdk.java.net/~coleenp/8146410.02/webrev/index.html
> 
> thanks,
> Coleen
> 
> On 1/7/16 3:08 AM, Lindenmaier, Goetz wrote:
>> Hi Coleen,
>> 
>> sorry I didn't answer yesterday, we had another holiday.
>> 
>> You moved PPCs math_entry_available() in your new change.
>> I think it makes no difference where it's located, as long as it's
>> called from both, interpreter and interpreterGenerator classes.
>> 
>> But if you want to move it, you need to fix all the other occurances
>> of the method, too:
>> http://cr.openjdk.java.net/~goetz/wr16/8146410-interpCleanup/move_math_entry_available.patch
>> 
>> Elsewise good.
>> 
>> Best regards,
>>   Goetz.
>> 
>>> -----Original Message-----
>>> From: hotspot-dev [mailto:hotspot-dev-bounces at openjdk.java.net] On
>>> Behalf Of Coleen Phillimore
>>> Sent: Dienstag, 5. Januar 2016 22:20
>>> To: hotspot-dev at openjdk.java.net
>>> Subject: Re: RFR (M) 8146410: Interpreter functions are declared and defined
>>> in the wrong files
>>> 
>>> 
>>> Hi,  Please see updated webrev for comments so far:
>>> 
>>> http://cr.openjdk.java.net/~coleenp/8146410.01/webrev/
>>> 
>>> Tested again with JPRT (on all Oracle supported platforms).
>>> 
>>> thanks,
>>> Coleen
>>> 
>>> On 1/5/16 4:00 PM, Coleen Phillimore wrote:
>>>> 
>>>> On 1/5/16 3:49 PM, Lindenmaier, Goetz wrote:
>>>>>> -----Original Message-----
>>>>>> From: Coleen Phillimore [mailto:coleen.phillimore at oracle.com]
>>>>>> Sent: Dienstag, 5. Januar 2016 21:01
>>>>>> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; hotspot-dev
>>>>>> developers <hotspot-dev at openjdk.java.net>
>>>>>> Subject: Re: RFR (M) 8146410: Interpreter functions are declared and
>>>>>> defined
>>>>>> in the wrong files
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On 1/5/16 2:51 PM, Lindenmaier, Goetz wrote:
>>>>>>> Hi Coleen,
>>>>>>> 
>>>>>>> I think they belong together because can_be_compiled() just returns
>>>>>>> false for functions that have a math entry which is generated by
>>>>>>> generate_math_entry().  So if you add a new math_entry, you
>>>>>>> also have to fix can_be_compiled.  We wired this dependency into
>>>>>>> math_entry_available(kind), so that both functions are guaranteed
>>>>>>> to behave similar.
>>>>>> I'm getting confused by this.  It seems like math_entry_available
>>>>>> should
>>>>>> be in templateInterpreterGenerator near generate_math_entry.
>>>>>> 
>>>>>> The reason I don't want can_be_compiled (which is misleading) is
>>>>>> because
>>>>>> all the other platforms have it too and I don't want them in the wrong
>>>>>> files.
>>>>>> 
>>>>>> what do you think?
>>>>> What I mean is can_be_compiled() should be moved to class
>>>>> templateInterpreterGenerator and placed near generate_math_entry()
>>>>> on all platforms.
>>>>> The similarity is the same on all of them.
>>>>> 
>>>>> But I must admit in compilationPolicy.cpp it reads better if the
>>>>> AbstractInterpreter is asked. Also, method_kind is member
>>>>> of AbstractInterpreter.
>>>> Yes, that's what I thought.  It's more of an Interpreter:: method. And
>>>> it's a static function and the functions in
>>>> TemplateInterpreterGenerator are not generally static functions. I
>>>> didn't want to move the others there.
>>>> 
>>>>> But method_kind is also completely over-engeneered, as it's
>>>>> only used in can_be_compiled, and there it's only used
>>>>> for math entries...
>>>>> 
>>>>> Maybe a change of it's own is needed...
>>>> I'm holding my head in pain, and my change is too big already to add
>>>> this.  I did move math_entry_available because to
>>>> templateInterpreterGenerator_ppc.cpp because there is no
>>>> templateInterpreter_ppc.cpp anymore (there would only be this one
>>>> function and the sizing).  I think this looks good and better than
>>>> having TemplateInterpreter::math_entry_available() in
>>>> abstractInterpreter_ppc.cpp.   See:
>>>> 
>>>> 
>>> http://cr.openjdk.java.net/~coleenp/8146410.01/webrev/src/cpu/ppc/vm/t
>>> emplateInterpreterGenerator_ppc.cpp.udiff.html
>>>> 
>>>> I think moving can_be_compiled and cleaning up the method_kind vs.
>>>> intrinsics is a bigger problem to solve, and should be attempted in a
>>>> further RFE.
>>>> 
>>>> Thanks,
>>>> Coleen
>>>> 
>>>>> Best regards,
>>>>>    Goetz.
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>>> Coleen
>>>>>>> The name of the function is kind of misleading to me.
>>>>>>> 
>>>>>>> But I won't insist...
>>>>>>> 
>>>>>>> Best regards,
>>>>>>>     Goetz.
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> -----Original Message-----
>>>>>>>> From: Coleen Phillimore [mailto:coleen.phillimore at oracle.com]
>>>>>>>> Sent: Tuesday, January 05, 2016 7:17 PM
>>>>>>>> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; hotspot-dev
>>>>>>>> developers <hotspot-dev at openjdk.java.net>
>>>>>>>> Subject: Re: RFR (M) 8146410: Interpreter functions are declared and
>>>>>> defined
>>>>>>>> in the wrong files
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 1/5/16 2:19 AM, Lindenmaier, Goetz wrote:
>>>>>>>>> Hi Coleen,
>>>>>>>>> 
>>>>>>>>> Could you please also move
>>>>>>>>> AbstractInterpreter::can_be_compiled(methodHandle m)
>>>>>>>>> to above
>>>>>>>>> 
>>> TemplateInterpreterGenerator::generate_math_entry(AbstractInterpreter::
>>>>>>>> MethodKind kind)?
>>>>>>>>> I think these belong together.
>>>>>>>> Really?  They're in different classes (hence the motivation for the
>>>>>>>> change) and generate_math_entry doesn't call can_be_compiled.
>>>>>>>> CompilationPolicy does but it calls it from
>>>>>>>> AbstractInterpreter::can_be_compiled() so I really can't move this
>>>>>>>> function into TemplateInterpreterGenerator.  It doesn't make sense
>>> to
>>>>>> me.
>>>>>>>>> We seem to have different BIND macros on ppc. The '__' is also in
>>>>>>>>> the
>>>>>>>>> macro. Could you please fix this small issue? It breaks the ppc
>>>>>>>>> build.
>>>>>>>>> 
>>>>>>>>> diff -r 743aa331fc90
>>>>>>>> src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp
>>>>>>>>> --- a/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp Tue
>>>>>>>> Jan 05 07:47:21 2016 +0100
>>>>>>>>> +++ b/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp Tue
>>>>>>>> Jan 05 08:06:12 2016 +0100
>>>>>>>>> @@ -416,7 +416,7 @@
>>>>>>>>>       default: ShouldNotReachHere();
>>>>>>>>>       }
>>>>>>>>> 
>>>>>>>>> -  __ BIND(done);
>>>>>>>>> +  BIND(done);
>>>>>>>>>       __ blr();
>>>>>>>>> 
>>>>>>>> Fixed.  Thanks!!
>>>>>>>>>       return entry;
>>>>>>>>> 
>>>>>>>>> Besides this, the change looks good.
>>>>>>>> Thanks,
>>>>>>>> Coleen
>>>>>>>> 
>>>>>>>>> Thanks and best regards,
>>>>>>>>>      Goetz.
>>>>>>>>> 
>>>>>>>>> PS: is it possible to share your Copyright script?
>>>>>>>>> 
>>>>>>>>>> -----Original Message-----
>>>>>>>>>> From: hotspot-dev [mailto:hotspot-dev-
>>> bounces at openjdk.java.net]
>>>>>> On
>>>>>>>>>> Behalf Of Coleen Phillimore
>>>>>>>>>> Sent: Monday, January 04, 2016 11:43 PM
>>>>>>>>>> To: hotspot-dev developers <hotspot-dev at openjdk.java.net>
>>>>>>>>>> Subject: RFR (M) 8146410: Interpreter functions are declared and
>>>>>> defined
>>>>>>>> in
>>>>>>>>>> the wrong files
>>>>>>>>>> 
>>>>>>>>>> Summary: Moved functions to the correct files.
>>>>>>>>>> 
>>>>>>>>>> See bug for more details.
>>>>>>>>>> 
>>>>>>>>>> I basically did an hg mv templateInterpreter_<cpu>.cpp
>>>>>>>>>> abstractInterpreter_<cpu>.cpp and moved the
>>> interpreter_<cpu>.cpp
>>>>>>>>>> functions there.
>>>>>>>>>> 
>>>>>>>>>> Also moved generate_slow_signature_handler to
>>>>>>>>>> TemplateInterpreterGenerator/CppInterpreterGenerator because
>>> it's
>>>>>>>> not
>>>>>>>>>> shared.
>>>>>>>>>> 
>>>>>>>>>> open webrev at http://cr.openjdk.java.net/~coleenp/8146410/
>>>>>>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-8146410
>>>>>>>>>> 
>>>>>>>>>> Tested with JPRT on Oracle supported platforms and built zero on
>>>>>>>>>> linux
>>>>>>>>>> x86.  Also fixed change that broke zero in
>>>>>>>>>> stack_zero.inline.hpp.  I
>>>>>>>>>> think this should work on PPC and AARCH64, but please let me
>>> know.
>>>>>>>>>> One question for AARCH64 platform in file:
>>>>>>>>>> 
>>>>>>>>>> 
>>> http://cr.openjdk.java.net/~coleenp/8146410/src/cpu/aarch64/vm/templat
>>>>>>>>>> eInterpreterGenerator_aarch64.cpp.udiff.html
>>>>>>>>>> 
>>>>>>>>>> thanks,
>>>>>>>>>> Coleen
> 



More information about the hotspot-dev mailing list