RFR: 8248188: Add IntrinsicCandidate and API for Base64 decoding [v9]

CoreyAshford github.com+51754783+coreyashford at openjdk.java.net
Tue Nov 3 02:53:09 UTC 2020


> This patch set encompasses the following commits:
> 
> - Adds a new HotSpot 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.

CoreyAshford has updated the pull request incrementally with two additional commits since the last revision:

 - stubGenerator_ppc.cpp: Remove the predicted branch around the xxsel instruction to improves performance by about 9%
   
   This conditional branch around the xxsel seemed like a good idea at the
   time, because I thought the branch would be less costly than the xxsel
   instruction, but it turns out not to be the case; executing the xxsel every
   time without a conditional branch increases performance by about 9%.
   Removing that branch also removed the need for the declaration and usage of
   an array of Label's for the branch destinations inside the unrolled code.
 - stubGenerator_ppc.cpp: address issues with understanding the pack algorithm
   
    * Change the order of the bytes as listed in the tables, which makes the
      use of vpextd easier to understand.
   
    * Because the byte order of the constants used in the tables is reversed from
      the original documentation, change the constant declarations to match the order
      in the table, by using the ARRAY_TO_LXV_ORDER macro.  This makes the constant
      declarations more consistent as well.

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/293/files
  - new: https://git.openjdk.java.net/jdk/pull/293/files/8e15d971..0e291be4

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=293&range=08
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=293&range=07-08

  Stats: 106 lines in 1 file changed: 25 ins; 12 del; 69 mod
  Patch: https://git.openjdk.java.net/jdk/pull/293.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/293/head:pull/293

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


More information about the core-libs-dev mailing list