8248188: Add IntrinsicCandidate and API for Base64 decoding

8248188: Add IntrinsicCandidate and API for Base64 decoding, add Power64LE intrinsic implementation.

This patch set encompasses the following commits:

Adds a new intrinsic candidate to the java.lang.Base64 class - decodeBlock(), and provides a flexible API for the intrinsic. The API is similar to the existing encodeBlock intrinsic.

Adds the code in HotSpot to check and martial the new intrinsic's arguments to the arch-specific intrinsic implementation.

Adds a Power64LE-specific implementation of the decodeBlock intrinsic.

Adds a JMH microbenchmark for both Base64 encoding and encoding.

Enhances the JTReg hotspot intrinsic "TestBase64.java" regression test to more fully test both decoding and encoding.

Reviewed-by: rriggs, mdoerr, kvn
This commit is contained in:
Corey Ashford 2020-11-11 21:31:07 +00:00 committed by Martin Doerr
parent 59965c17b4
commit ccb48b7203
25 changed files with 1901 additions and 27 deletions

View file

@ -448,6 +448,12 @@ class methodHandle;
do_name(encodeBlock_name, "encodeBlock") \
do_signature(encodeBlock_signature, "([BII[BIZ)V") \
\
/* support for java.util.Base64.Decoder*/ \
do_class(java_util_Base64_Decoder, "java/util/Base64$Decoder") \
do_intrinsic(_base64_decodeBlock, java_util_Base64_Decoder, decodeBlock_name, decodeBlock_signature, F_R) \
do_name(decodeBlock_name, "decodeBlock") \
do_signature(decodeBlock_signature, "([BII[BIZ)I") \
\
/* support for com.sun.crypto.provider.GHASH */ \
do_class(com_sun_crypto_provider_ghash, "com/sun/crypto/provider/GHASH") \
do_intrinsic(_ghash_processBlocks, com_sun_crypto_provider_ghash, processBlocks_name, ghash_processBlocks_signature, F_S) \