On Tue, 11 Jun 2024 08:03:48 GMT, Ferenc Rakoczi <d...@openjdk.org> wrote:
>> Well, the intrinsic function treats the input and state as long arrays >> anyways, and so it only works on little endian architectures, where the >> conversion is a no-op. There is no additional array copy, this b2lLittle() >> call used to be in the keccak() method (along with the conversion back to >> byte array), the point of this whole change is that only one of these >> conversions should be done with every keccak() call (an additional benefit >> is that the xor and the corresponding loads+store is done on longs, not on >> bytes). > > Oh, and about the length: buffer is allocated in the constructor of the > parent class (DigestBase) like this: > buffer = new byte[blockSize]; > Here blockSize is one of { 72, 104, 136, 144, 168 }, so divisible by 8. > buffer.length was used before probably because blockSize was declared private > in DigestBase. I made it protected, because in my opinion it is easier to > read the code this way. Thank you for explanation. An other question. Is any other use of `longBuf` array after `implCompress0()` call which load values from it? Because Intrinsic code will not update it. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19632#discussion_r1635128980