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

Tobias Hartmann tobias.hartmann at oracle.com
Tue Jul 12 12:34:00 UTC 2016

Hi Goetz,

On 06.07.2016 00:47, 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.

webrev.03 looks good to me. I did the necessary closed changes (review is pending) and also adapted some of the public code.

Incremental webrev:

Full webrev:

I removed the PPC code because since 8u33, SE Embedded releases no longer include 32-bit PPC platforms (see [1], [2]) and moved the ARM specific code into the closed sources. I adapted the copyright dates and refactored some related code.

Also, 'fnoreg->encoding()' fails because RegisterImpl::encoding() checks for is_valid() which is false for fnoreg. We should check for 'as_FloatRegister(reg2) != fnoreg'.

Tests are running.

Best regards,

[1] http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html
[2] http://www.oracle.com/technetwork/java/javase/certconfig-2095354.html

> 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-compiler-dev mailing list