RFR: 8274242: Implement fast-path for ASCII-compatible CharsetEncoders on x86 [v6]
thartmann at openjdk.java.net
Wed Sep 29 12:45:34 UTC 2021
On Wed, 29 Sep 2021 12:36:23 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> This patch extends the `ISO_8859_1.implEncodeISOArray` intrinsic on x86 to work also for ASCII encoding, which makes for example the `UTF_8$Encoder` perform on par with (or outperform) similarly getting charset encoded bytes from a String. The former took a small performance hit in JDK 9, and the latter improved greatly in the same release.
>> Extending the `EncodeIsoArray` intrinsics on other platforms should be possible, but I'm unfamiliar with the macro assembler in general and unlike the x86 intrinsic they don't use a simple vectorized mask to implement the latin-1 check. For example aarch64 seem to filter out the low bytes and then check if there's any bits set in the high bytes. Clever, but very different to the 0xFF80 2-byte mask that an ASCII test wants.
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
> Clean up and make TestEncodeIntrinsics fail on the particular scenario where the ISO intrinsic was used in place of the ASCII-only intrinsic
The incremental change looks good and trivial to me.
Marked as reviewed by thartmann (Reviewer).
More information about the core-libs-dev