RFR (M): 8023033: PPC64 (part 13): basic changes for AIX

Stefan Karlsson stefan.karlsson at oracle.com
Thu Aug 15 22:58:57 PDT 2013


On 8/16/13 2:48 AM, David Holmes wrote:
> Hi Goetz,
>
> On 15/08/2013 10:10 PM, Lindenmaier, Goetz wrote:
>> I prepared a webrev for
>> 8023033: PPC64 (part 13): basic changes for AIX
>> http://cr.openjdk.java.net/~goetz/webrevs/8023033-aixShared/
>>
>> This contains the basic shared changes needed for the AIX port,
>> as there are
>> - #includes
>
> Aside: Seeing this I'm now firmly convinced that the platform-include 
> mechanism is worse than the old includeDB mechanism that it replaced. 
> We really need a way to #include these based on the value of the 
> platform variable :(

Dave,

You were always firmly convinced of that. :)

Do you have a solution to the platform include problem that doesn't 
involve listing _all_ includes in separate list files?

In the short term, we could at least hide os_<>.inline.hpp in a dispatch 
file. Just like we did for:
  8003935: Simplify the needed includes for using Thread::current()
  http://hg.openjdk.java.net/hsx/hotspot-gc/hotspot/rev/3852

Here's a list of the added includes from the AIX patch:
   18 +# include "os_aix.inline.hpp"
    4 +# include "orderAccess_aix_ppc.inline.hpp"
    3 +# include "jvm_aix.h"
    2 +# include "c2_globals_aix.hpp"
    2 +# include "c1_globals_aix.hpp"
    1 +# include "vmStructs_aix_ppc.hpp"
    1 +# include "utilities/globalDefinitions_xlc.hpp"
    1 +# include "thread_aix_ppc.hpp"
    1 +# include "thread_aix.inline.hpp"
    1 +# include "threadLS_aix_ppc.hpp"
    1 +# include "os_aix_ppc.hpp"
    1 +# include "os_aix.hpp"
    1 +# include "osThread_aix.hpp"
    1 +# include "interfaceSupport_aix.hpp"
    1 +# include "globals_aix_ppc.hpp"
    1 +# include "globals_aix.hpp"
    1 +# include "c2_globals_ppc.hpp"
    1 +# include "atomic_aix_ppc.inline.hpp"

StefanK

>
>> - Fixes to get the code compiling with xlC/on AIX
>
> Are there makefile changes for xlC support as well?
>
>> - Basic adaptions as in vm_version.cpp.
>>
>> It also determines the placement and naming of the aix files,
>> which will go to os/aix and os_cpu/aix_ppc, as you can see in
>> http://hg.openjdk.java.net/ppc-aix-port/jdk8/hotspot/file/9677ba28c6d8/src/os/aix/vm/ 
>>
>>
>> Some details about the compilation problems:
>>
>> relocInfo.hpp:
>> xlC wants initialization in inline implementation.
>>
>> vmreg.hpp:
>> BAD is defined in AIX system header sys/param.h. Renamed.
>>
>> allocation.hpp
>> xlC complains:
>> runtime/mutexLocker.hpp", line 192.3: 1540-0300 (S) The "private" 
>> member "StackObj::operator delete(void *)" cannot be accessed.
>
> Hmmm. So the whole point of these being private was so that they could 
> not be called but we had to override the use of the global operators. 
> The concrete implementations then give fatal errors if you do manage 
> to use them (impossible?). So making them public is undesirable.
>
> Is there some other way to resolve this? A pragma to tell xlC to 
> ignore the perceived problem?
>
>> sharedRuntimeTrig.cpp
>> Aix defines hz to be 100, see sys/m_param.h. Renamed.
>
> It #defines a lowercase constant! Ouch! :)
>
>> debug.hpp
>> With other include order we get a lot of
>> memory/metaspace.hpp", line 281.66: 1540-0130 (S) "PRIuPTR" is not 
>> declared.
>
> Curious. BTW have you tested with and without precompiled headers 
> enabled?
>
>>
>> Please review and test this change. Comments are welcome.
>
> Typo in src/share/vm/memory/universe.cpp: preserverd
>
> src/share/vm/utilities/resourceHash.hpp:
>
> Is this recognized as a compiler bug?
>
> Thanks,
> David
>
>> Thanks and best regards,
>>    Goetz.
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/attachments/20130816/fa8dcd94/attachment-0001.html 


More information about the ppc-aix-port-dev mailing list