[ping] RFR(M): 8160245: C1: Clean up platform #defines in c1_LIR.hpp.

Coleen Phillimore coleen.phillimore at oracle.com
Wed Jul 6 19:30:40 UTC 2016



On 7/6/16 3:02 PM, Lindenmaier, Goetz wrote:
> Hi Coleen,
>
> You're right, I only need two args.  That's wrong because I edited
> it before 8159335 was merged to hs-comp which removed an
> argument.  I'll fix that.
>
> For the overloaded functions, do you want me to add
> an implementation with ShouldNotReachHere() for the
> unused versions?  And isn't that basically the same as having
> unused parameters?

I don't think it's necessary to have a ShouldNotReachHere for the unused 
versions.   If you call the one with no parameters on a platform with 
the two parameter implementation, you'll get an undefined reference at 
linktime, which is better than a crash.

With the noreg default parameter versions, you could make the mistake of 
not passing any registers or the wrong number of registers, and I guess 
the result would be a crash at runtime but that can be hard to 
understand why it happened.

So I would prefer both declarations without default arguments, and each 
platform code calls the right version and doesn't call the other.

Coleen

>
> Best regards,
>    Goetz.
>
>
>
>> -----Original Message-----
>> From: hotspot-runtime-dev [mailto:hotspot-runtime-dev-
>> bounces at openjdk.java.net] On Behalf Of Coleen Phillimore
>> Sent: Wednesday, July 06, 2016 1:24 AM
>> To: hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: [ping] RFR(M): 8160245: C1: Clean up platform #defines in
>> c1_LIR.hpp.
>>
>>
>> Why is there a third register parameter to
>> generate_stack_overflow_check() that is unused on all the platforms?
>>
>> I would almost rather have one version with no arguments overloaded with
>> one with two, than three default parameters.  It seems dangerous.
>>
>> thanks,
>> Coleen
>>
>> On 7/5/16 6:47 PM, Vladimir Kozlov wrote:
>>> CC to runtime too since it has changes in Interpreter and affects our
>>> closed code.
>>>
>>> Hi Goetz,
>>>
>>> Please, set "Fix Version".
>>>
>>> And if it is JDK 9 you need FC Extension Request since you converted
>>> it to Enhancement:
>>>
>>> http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-June/004443.html
>>>
>>> Someone from Oracle have to sponsor it and do related closed code
>>> changes and testing.
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 7/5/16 3:47 AM, Lindenmaier, Goetz wrote:
>>>> Hi,
>>>>
>>>> could someone please have a look at this issue? I recap the description
>>>> below, and I also updated the webrev which would no more apply to
>>>> hs-comp:
>>>>
>>>> c1_LIR.hpp defines a row of functions guarded by platform
>>>> defines. This is bad style and hinders new platform ports.
>>>> (I'm working on S390 aka Z :))
>>>>
>>>> This change removes the majority of these defines. It introduces
>>>> common headers, and moves implementations to c1_LIR_<cpu>.cpp files.
>>>>
>>>> It guards single_softfp() and double_softfp() by __SOFTFP__.
>>>> This is not used in any openJdk platform. I can not test this
>>>> on the closed platforms ARM32 and PPC32.
>>>>
>>>> It removes the guard around the LIR_Address constructor. There
>>>> is no point in guarding this code, verify() assures by
>>>> assertions that it can not be misused. I also introduce a new
>>>> constructor that leaves out the scale argument and introduce
>>>> some usages on X86.
>>>>
>>>> This change also moves verify() to the new platform files. In the
>>>> header, LIR_ADDRESS_PD_VERIFY was used to guard usage
>>>> of pd_verify(). Neither of these are used in openJdk. If this define
>>>> is used in the closed ports pd_verify() must be renamed to verify().
>>>>
>>>> The code that was previously guarded by ARM, ARM32 or PPC32 is
>>>> moved to a properly guarded section in c1_LIR.cpp. Actually,
>>>> it should be moved to according new files c1_LIR_<cpu>.cpp in
>>>> the closed ports. But this way the change should basically
>>>> work for the closed ports.
>>>>
>>>> I added fnoreg on x86 to note down the code similarly on all
>>>> platforms.
>>>>
>>>> I cleaned up a flag with a limited range on PPC_32.
>>>>
>>>> generate_stack_overflow_check() in templateInterpreterGenerator.hpp
>>>> is defined with different parameters for the platforms. I added default
>>>> parameters noreg so that the signature is the same for all platforms.
>>>>
>>>> Please review this change. I please need a sponsor.
>>>> https://bugs.openjdk.java.net/browse/JDK-8160245
>>>> http://cr.openjdk.java.net/~goetz/wr16/8160245-simplifyC1/webrev.02/
>>>>
>>>> I built and tested this on linuxx86_64, solaris_sparc and
>>>> the ppc platforms.
>>>>
>>>> Best regards,
>>>>    Goetz.
>>>>
>>>>



More information about the hotspot-runtime-dev mailing list