RFR :7088419 : (L) Use x86 Hardware CRC32 Instruction with java.util.zip.CRC32 and java.util.zip.Adler32

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu May 23 09:24:42 PDT 2013

On 5/23/13 9:06 AM, David Chase wrote:
> So where do we stand on this?
> Can we call it a bug and eligible for inclusion?
> And are there other issues to deal with?
> I would be happy to discuss exactly what is going on in the mysterious
> intrinsic-ful code, if that is an issue for anyone (and sooner is better than
> later, else I'll forget the exciting details).

I spent some time yesterday reading through your CRC code to understand 
what we need to do to intrinsify it. I will continue work on it today. 
We would need to move whole fastcrc32 into VM together with K_struct and 
crc_table table (first 256 entries). We can not intrinsify part of 
native (C) code.


> David
> On 2013-05-21, at 5:15 PM, David Chase <david.r.chase at oracle.com> wrote:
>> http://cr.openjdk.java.net/~drchase/7088419/webrev.03/
>> Newer, slimmer webrev.  No fork/join, the related code is removed (except the
>> native init routine still returns a boolean, which is currently ignored, indicating if
>> it supports the faster crc32).
>> What remains is:
>> 1) no-JNI fast-path for short CRCs and Adlers
>> 2) reformulated faster-Adler for byte-at-a-time
>> 3) For 32/64 Linux/Solaris/MacOS x86 Sandy Bridge or better (with CLMUL and AVX),
>>      fast code for CRCs.
>> For now it uses assembly language, the C-with-intrinsics is included, and compiles
>> with current clang and gcc.  It tickles a bug in Solaris Studio 12.3 which has been reported.
>> Optimization for Windows is disabled because the assembler syntax is too different
>> The code has been tested by-hand across Linux (32), Solaris (32 and 64), MacOS (64)
>> and has also passed JPRT (which is to say, the failures were unrelated, hand examination
>> of the runs showed that the new CRCandAdler test was successful.  Anyone checking my
>> most recent run will notice that I am not very good at specifying tests to run, but there is
>> an earlier run.  I'm trying again, just to see if I can figure out how to make it behave.)
>> There is a companion webrev on the hotspot side that sets the secret property
>> that is used and reset by this code.
>> I hope this will be more easily regarded as a "bug fix" and less as an interface change.
>> David
>> On 2013-05-20, at 8:34 PM, David Holmes <david.holmes at oracle.com> wrote:
>>> On 21/05/2013 3:45 AM, Alan Bateman wrote:
>>>> On 20/05/2013 14:49, David Chase wrote:
>>>>> Suppose I split this bug (i.e., file a new bug) into the
>>>>> Intel-acceleration part and the fork-join part.
>>>>> :
>>>> This make sense.
>>> I agree.
>>> I also don't have an issue with eliding the optimization on Windows for the time being.
>>> David
>>>> -Alan.

More information about the hotspot-compiler-dev mailing list