RFR(M): 8019973: PPC64 (part 11): Fix IA64 preprocessor conditionals on AIX.

David Holmes david.holmes at oracle.com
Mon Jul 8 18:56:23 PDT 2013

Hi Goetz,

On 8/07/2013 10:45 PM, Lindenmaier, Goetz wrote:
> Hi,
> This is in preparation of the PPC AIX port.
> A header file (systemcfg.h) on Aix 7.1 defines the macro "IA64" unconditionally.

A curious thing to do ;-)

Aside: presumably this is included in turn by other standard headers, 
not directly included - otherwise we could just undef IA64 after the 

> This leads to wrong configurations of shared files on Aix where IA64 is used.
> This change replaces uses of "IA64" by "IA64 && !AIX".

Might be simpler if we just eradicate the IA64 remnants in the code. I 
think we may even have a RFE for this. AFAIK there are no remaining 
users of the IA64 code in the hotspot codebase.

> To reduce the complexity we propose to simplify two matters:
> Since the initial checkin objectMonitor.cpp and synchronizer.cpp
> define  #define ATTR __attribute__((noinline)) claiming this is needed
> to avoid a gcc build time error with - at that time - old gcc versions.
> This define depends on IA64. We remove it altogether.

Well it doesn't "depend" on IA64:

#if defined(__GNUC__) && !defined(IA64)
   // Need to inhibit inlining for older versions of GCC to avoid 
build-time failures
   #define ATTR __attribute__((noinline))
   #define ATTR

it becomes empty on IA64 (and non gcc systems). So removing it 
altogether is changing things for all the other gcc using platforms. Now 
it may be that we don't need to preclude inlining of these methods any 
more to avoid build-failures, but we may still want to avoid inlining 
them for other reasons! So this aspect needs further investigation. Or 
you can just leave it as-is - if you have IA64 always defined then you 
will get the empty #else part. Or if we go with the "eradicate IA64" 
path then you can change IA64 to AIX (though it is odd to exchange an 
architecture check with an OS check).

> prims/forte.cpp uses a lot of different mechanisms all disabling forte
> support on windows, apple and ia64. We would have to add Aix.
> Instead, we propose to use a check for the supported platforms (see webrev).
> We could also add a macro SUPPORTS_FORTE that is defined in the corresponding
> makefiles, and/or move forte.cpp into the os/solaris and os_cpu/linux_x86
> directories.

Again if we just get rid of IA64 this will be a non-issue right?


> Are there other platforms that need to be supported? I derived the platforms
> from the comment in forte.cpp.
> Please review this change. I'm happy to incorporate your comments.
> http://cr.openjdk.java.net/~goetz/webrevs/8019973-ia64_def/aixia64-hotspot.changeset
> Best regards,
>    Goetz.

More information about the hotspot-dev mailing list