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

Coleen Phillimore coleen.phillimore at oracle.com
Tue Jan 5 21:19:33 UTC 2016


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/templateInterpreterGenerator_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