I would like a review of an update to the GCM code.  A recent report showed 
that GCM memory usage for TLS was very large.  This was a result of in-place 
buffers, which TLS uses, and how the code handled the combined intrinsic method 
during decryption.  A temporary buffer was used because the combined intrinsic 
does gctr before ghash which results in a bad tag.  The fix is to not use the 
combined intrinsic during in-place decryption and depend on the individual 
GHASH and CounterMode intrinsics.  Direct ByteBuffers are not affected as they 
are not used by the intrinsics directly.

The reduction in the memory usage boosted performance back to where it was 
before despite using slower intrinsics (gctr & ghash individually).  The extra 
memory allocation for the temporary buffer out-weighted the faster intrinsic.


    JDK 17:   122913.554 ops/sec
    JDK 19:    94885.008 ops/sec
    Post fix: 122735.804 ops/sec 

There is no regression test because this is a memory change and test coverage 
already existing.

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

Commit messages:
 - comment cleanup & finesse ByteBuffer implGCMCrypt better
 - comment cleanup
 - include byte[] methods as part of the heapBB change
 - split len is not trigger
 - initial

Changes: https://git.openjdk.org/jdk/pull/11121/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11121&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8296507
  Stats: 102 lines in 1 file changed: 67 ins; 1 del; 34 mod
  Patch: https://git.openjdk.org/jdk/pull/11121.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11121/head:pull/11121

PR: https://git.openjdk.org/jdk/pull/11121

Reply via email to