RFR(M): 8019973: PPC64 (part 11): Fix IA64 preprocessor conditionals on AIX.
david.holmes at oracle.com
Tue Jul 9 05:08:03 PDT 2013
On 9/07/2013 7:56 PM, Lindenmaier, Goetz wrote:
> Hi David,
>> A curious thing to do ;-)
> Yes, I agree.
>> Aside: presumably this is included in turn by other standard headers,
>> not directly included - otherwise we could just undef IA64 after the
> Yes, that's the case.
>> 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.
> Yes, there is a remaining user. We have Java 4-7 VMs on linux, hp & win
> Ia64. 8 in development, all soon based on hs25. We also contributed to
> the change cleaning up the IA64 defines. There are only such left
> we need in our code.
I'm somewhat perplexed. The IA64 uses you still see in the hotspot
sources are ancient remnants of the IA64 support. Most of it has been
stripped out completely. So how anyone could be using any of this is, as
I said, perplexing ???
>> #if defined(__GNUC__) && !defined(IA64)
> You are right, I could just leave it as is, except if __GNUC__ is define on AIX,
> who knows ;). If we don't remove it, I need to add !PPC64 so that it's
> inlined in our port on linux.
>> more to avoid build-failures, but we may still want to avoid inlining
>> them for other reasons! So this aspect needs further investigation. Or
> I think it's a good idea to clean it up. The build problem
> is documented. There may be 'other reasons', but unexpected issues
> can be there with any change.
But the aim is to avoid making gratuitous changes to code that is not
part of the ppc64/AIX port. If you start inlining these functions you
don't know what the impact will be. So why change them when it is not
>>> prims/forte.cpp uses a lot of different mechanisms all disabling forte
>> Again if we just get rid of IA64 this will be a non-issue right?
> Here I would add !AIX.
> But have a look at the file, there are also several other platforms
> where this is excluded, and the exclusion is implemented differently
> on each platform. Not that nice ...
> Anyways, I'm fine with adding !AIX/!PPC64 everywhere -- it's nothing
> Best regards,
> -----Original Message-----
> From: David Holmes [mailto:david.holmes at oracle.com]
> Sent: Dienstag, 9. Juli 2013 03:56
> To: Lindenmaier, Goetz
> Cc: ppc-aix-port-dev at openjdk.java.net; 'hotspot-dev at openjdk.java.net'; Vladimir Kozlov
> Subject: Re: RFR(M): 8019973: PPC64 (part 11): Fix IA64 preprocessor conditionals on AIX.
> Hi Goetz,
> On 8/07/2013 10:45 PM, Lindenmaier, Goetz wrote:
>> 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
> 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.
>> Best regards,
More information about the hotspot-dev