On Tue, 21 Sep 2021 21:58:48 GMT, Claes Redestad <redes...@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.

src/hotspot/share/opto/c2compiler.cpp line 222:

> 220: #if !defined(X86)
> 221:     return false; // not yet implemented
> 222: #endif

It might be a little more work, but I think it's cleaner to move the decision 
whether the intrinisc is supported into the Matcher like for most other 
intrinsics and keep this code here platform independent. Otherwise we will get 
an increasing cascade of ifdefs as people start implementing this for other 
platforms.

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

PR: https://git.openjdk.java.net/jdk/pull/5621

Reply via email to