src/java.base/share/classes/sun/security/provider/SHA.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8076112 Cdiff src/java.base/share/classes/sun/security/provider/SHA.java

src/java.base/share/classes/sun/security/provider/SHA.java

Print this page
rev 12262 : 8076112: Add @HotSpotIntrinsicCandidate annotation to indicate methods for which Java Runtime has intrinsics
Summary: Annotate possibly intrinsified methods with @HotSpotIntrinsicCandidate. Add checks omitted by intrinsics to the library code. Add CheckIntrinsics flags to check consistency of intrinsics.
Reviewed-by: jrose, kvn, thartmann, vlivanov, abuckley, darcy, ascarpino, briangoetz, alanb, aph, dnsimon

*** 23,33 **** --- 23,36 ---- * questions. */ package sun.security.provider; + import java.util.Objects; + import static sun.security.provider.ByteArrayAccess.*; + import jdk.internal.HotSpotIntrinsicCandidate; /** * This class implements the Secure Hash Algorithm (SHA) developed by * the National Institute of Standards and Technology along with the * National Security Agency. This is the updated version of SHA
*** 112,123 **** --- 115,145 ---- * This is in the same vein as Peter Gutmann's algorithm listed in * the back of Applied Cryptography, Compact implementation of * "old" NIST Secure Hash Algorithm. */ void implCompress(byte[] buf, int ofs) { + implCompressCheck(buf, ofs); + implCompress0(buf, ofs); + } + + private void implCompressCheck(byte[] buf, int ofs) { + Objects.requireNonNull(buf); + + // The checks performed by the method 'b2iBig64' + // are sufficient for the case when the method + // 'implCompressImpl' is replaced with a compiler + // intrinsic. b2iBig64(buf, ofs, W); + } + // The method 'implCompressImpl seems not to use its parameters. + // The method can, however, be replaced with a compiler intrinsic + // that operates directly on the array 'buf' (starting from + // offset 'ofs') and not on array 'W', therefore 'buf' and 'ofs' + // must be passed as parameter to the method. + @HotSpotIntrinsicCandidate + private void implCompress0(byte[] buf, int ofs) { // The first 16 ints have the byte stream, compute the rest of // the buffer for (int t = 16; t <= 79; t++) { int temp = W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]; W[t] = (temp << 1) | (temp >>> 31);
src/java.base/share/classes/sun/security/provider/SHA.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File