RFR JDK-8141491: Unaligned memory access in Bits.c
Mikael Vidstedt
mikael.vidstedt at oracle.com
Wed Feb 3 16:13:38 UTC 2016
On 2016-02-03 01:43, Andrew Haley wrote:
> On 02/02/16 19:25, Mikael Vidstedt wrote:
>> Please review this change which introduces a Copy::conjoint_swap and an
>> Unsafe.copySwapMemory method to call it from Java, along with the
>> necessary changes to have java.nio.Bits call it instead of the Bits.c code.
> There doesn't seem to be any way to use a byte-swap instruction
> in the swapping code. This will make it unnecessarily slow.
To be clear, this isn't trying to provide the absolutely most optimal
copy+swap implementation. It's trying to fix the Bits.c unaligned bug
and pave the way for further improvements. Further performance
improvements here are certainly possible, but at this point I'm happy as
long as the performance is on par (or better) with the Bits.c
implementation it's replacing.
That said, at least gcc seems to recognize the byte swapping pattern and
does emit a bswap on linux-x64. I'm not sure about the other platforms
though.
Cheers,
Mikael
More information about the nio-dev
mailing list