On Fri, 11 Nov 2022 20:46:57 GMT, Volodymyr Paprotski <d...@openjdk.org> wrote:

>> It's not specific to `andq`: there's a huge `#ifdef` block around the 
>> definitions in `assembler_x86.hpp` (lines 12201 - 13773; and there's even a 
>> nested `#ifdef _LP64` (lines 13515-13585)!) , but declarations aren't 
>> guarded by `#ifdef _LP64`.
>
> Yeah, just got to about the same conclusion by looking at the preprocessor 
> `-E` output.. its declared in the header, but not defined in the 'cpp' file.. 
> One would think that that's a compile error, but its been more then a decade 
> since I looked at the C++ spec; 'C++ compiler is always right'.

Don't know that there is anything else for me to do here? `assembler_x86.hpp` 
`#ifdef _LP64` macros were there before (and it not 'that wrong' or if a 
better/clean fix exists). `macroAssembler_x86.hpp` has to mirror that with 
`andq`.

(Just going through all the comments, making sure they have been addressed.) 

PS: In general I get worried about having macros changing object layout, but 
that's 'water under the bridge' and 64-bit seems big enough reason to have 
different layout. But its always 'entertaining debugging session' when offset 
of `a.f` is different in `a.o` and `b.o`, because somebody forgot to define 
same macros for `b.c` compile command as for `a.c`..

-------------

PR: https://git.openjdk.org/jdk/pull/10582

Reply via email to