main
Raw Download raw file
 1// Note: we can't get significant speed boost here.
 2// So write code to minimize size - no pregenerated tables
 3// and array tools dependencies.
 4
 5
 6// Use ordinary array, since untyped makes no boost here
 7export default function makeTable() {
 8  var c, table = [];
 9
10  for (var n = 0; n < 256; n++) {
11    c = n;
12    for (var k = 0; k < 8; k++) {
13      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
14    }
15    table[n] = c;
16  }
17
18  return table;
19}
20
21// Create table on load. Just 255 signed longs. Not a problem.
22var crcTable = makeTable();
23
24
25function crc32(crc, buf, len, pos) {
26  var t = crcTable,
27      end = pos + len;
28
29  crc ^= -1;
30
31  for (var i = pos; i < end; i++) {
32    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
33  }
34
35  return (crc ^ (-1)); // >>> 0;
36}