On 2014-11-20, at 7:45 AM, Staffan Friberg <staffan.frib...@oracle.com> wrote:

> Hi,
> 
> Anyone who can be the second Reviewer?
> 
> Thanks,
> Staffan

I can review, but I am not a Reviewer.

CRC32C.java:
  56     /**
  57      * CRC-32C Polynom
  58      */

“Polynomial”, perhaps?

You did test this on both big- and little-endian boxes, right?
It looks right to me, but this stuff is brain-hurty on mirror-image dyslexia 
and fenceposts.

It might not hurt to mention that byteTable is for byte-at-a-time calculations 
and is always
the same, whereas the other 8 tables are for bulk operations and will have 
contents
dependent on the endianness of the platform.

It would be a good idea to mention that the high-order terms of polynomials
are stored in the low-order bits of the integers in the tables.

You could get the bit reversal out of the init code if you bit-reversed 
CRC32C_POLY instead and wrote it

  78             int r = index; 
                   // High-order polynomial term stored in LSB of r.
  79             for (int i = 0; i < Byte.SIZE; i++) {
  80                 if ((r & 1) != 0) {
  81                     r = (r >>> 1) ^ REVERSED_CRC32C_POLY;
  82                 } else {
  83                     r >>>= 1;
  84                 }
  85             }
  86             byteTables[0][index] = r;

at least, it seems that way to me.

David

Reply via email to