RFR : 8218136: minor hotspot adjustments for xlclang++ from xlc16 on AIX

David Holmes david.holmes at oracle.com
Fri Feb 1 12:49:22 UTC 2019


Hi Matthias,

On 1/02/2019 10:36 pm, Baesken, Matthias wrote:
> New webrev :
> 
> http://cr.openjdk.java.net/~mbaesken/webrevs/8218136.1/
> 
> - adjusted  globalDefinitions_xlc.hpp

I don't think it makes sense to keep the comment which was obviously 
copied from the gcc file:

  // On Linux NULL is defined as a special type '__null'. Assigning 
__null to
   // integer variable will cause gcc warning. Use NULL_WORD in places 
where a
   // pointer is stored as integer value.  On some platforms, 
sizeof(intptr_t) >
   // sizeof(void*), so here we want something which is integer type, 
but has the
   // same size as a pointer.

Rather something like:

// Some platform/tool-chain combinations can't assign NULL to an integer
// type so we define NULL_WORD to use in those contexts. For xlc they
// are the same.

Thanks,
David


> - fixed some copyright years
> 
> 
> Best regards, Matthias
> 
> 
> 
>> -----Original Message-----
>> From: Baesken, Matthias
>> Sent: Freitag, 1. Februar 2019 11:16
>> To: 'David Holmes' <david.holmes at oracle.com>; 'hotspot-
>> dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
>> Cc: 'build-dev at openjdk.java.net' <build-dev at openjdk.java.net>
>> Subject: RE: RFR : 8218136: minor hotspot adjustments for xlclang++ from
>> xlc16 on AIX
>>
>>>
>>> Confused. Which other xlc compilers set __GNUC_ as you are changing this
>>> for all of them? Though to be honest I don't understand this whole
>>> section anyway - we have a lengthy comment saying why you can't
>>> necessarily assign NULL to an integer type and to use NULL_WORD instead
>>> but then it's defined as NULL anyway! I wonder if we used to have some
>>> other conditions there where it was something different
>>
>> Hi  David ,  not sure  but  I guess   the  #ifdef __GNUC__    came  from
>> linux/gcc and was copied to the  aix / xlc file  when the port was done back
>> then .
>> See :
>>
>> globalDefinitions_gcc.hpp
>>
>> 118#ifdef __GNUC__
>> 119  #ifdef _LP64
>> 120    #define NULL_WORD  0L
>> 121  #else
>> 122    // Cast 0 to intptr_t rather than int32_t since they are not the same
>> type
>> 123    // on platforms such as Mac OS X.
>> 124    #define NULL_WORD  ((intptr_t)0)
>> 125  #endif
>> 126#else
>> 127  #define NULL_WORD  NULL
>> 128#endif
>>
>> The NULL_WORD  is mostly used in x86-only coding.  But also used  at some
>> (but few) places in shared coding , like :
>>
>> intptr_t*   addr;
>> *addr = NULL_WORD;
>>
>> intptr_t _callee_registers[RegisterMap::reg_count];
>>   _callee_registers[i] = src != NULL ? *src : NULL_WORD;
>>
>>
>>> In any case  having an if and else that do exactly the same thing seems
>> rather
>>> pointless to me.
>>>
>>
>> Yes I agree ,  I think I remove  the #ifdef  ... #else     and just define  #define
>> NULL_WORD  NULL   for AIX .
>>
>> Best regards, Matthias
>>
>>
>>> -----Original Message-----
>>> From: David Holmes <david.holmes at oracle.com>
>>> Sent: Freitag, 1. Februar 2019 05:24
>>> To: Baesken, Matthias <matthias.baesken at sap.com>; 'hotspot-
>>> dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
>>> Cc: 'build-dev at openjdk.java.net' <build-dev at openjdk.java.net>
>>> Subject: Re: RFR : 8218136: minor hotspot adjustments for xlclang++ from
>>> xlc16 on AIX
>>>
>>> Hi Matthias,
>>>
>>> On 1/02/2019 12:50 am, Baesken, Matthias wrote:
>>>> Please review  this small webrev  . It contains a few changes  for  building
>>> hotspot   on AIX with  xlclang++  / xlc16  .
>>>> ( most likely switching to   xlclang++  / xlc16    will be a must once  we
>>> introduce C++11/14 features )
>>>>
>>>> Some comments on the changes :
>>>>
>>>>
>>>> - porting_aix.cpp  :  workaround for demangle.h (does not work with
>>> xlclang++)
>>>
>>> Can't comment as I know nothing about it.
>>>
>>>> - arguments.cpp/hpp  :  the UNSUPPORTED_OPTON macro lead  to
>>> assigning false to  AllocateHeapAt which is a bad idea (and does not work
>>> with xlclang++)
>>>
>>> Good catch!
>>>
>>>> -   globalDefinitions_xlc.hpp   : xlclang++ sets   __GNUC__ so we must not
>>> have #error ... in this case
>>>
>>> Confused. Which other xlc compilers set __GNUC_ as you are changing this
>>> for all of them? Though to be honest I don't understand this whole
>>> section anyway - we have a lengthy comment saying why you can't
>>> necessarily assign NULL to an integer type and to use NULL_WORD instead
>>> but then it's defined as NULL anyway! I wonder if we used to have some
>>> other conditions there where it was something different? In any case
>>> having an if and else that do exactly the same thing seems rather
>>> pointless to me.
>>>
>>> Thanks,
>>> David
>>>>
>>>>
>>>>
>>>> Bug/webrev :
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8218136
>>>>
>>>> http://cr.openjdk.java.net/~mbaesken/webrevs/8218136.0/
>>>>
>>>>
>>>> Thanks, Matthias
>>>>


More information about the build-dev mailing list