aboutsummaryrefslogtreecommitdiff
path: root/node_modules/pako/lib/zlib/adler32.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/pako/lib/zlib/adler32.js')
-rw-r--r--node_modules/pako/lib/zlib/adler32.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/node_modules/pako/lib/zlib/adler32.js b/node_modules/pako/lib/zlib/adler32.js
new file mode 100644
index 000000000..dcefe9379
--- /dev/null
+++ b/node_modules/pako/lib/zlib/adler32.js
@@ -0,0 +1,32 @@
+'use strict';
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It doesn't worth to make additional optimizationa as in original.
+// Small size is preferable.
+
+function adler32(adler, buf, len, pos) {
+ var s1 = (adler & 0xffff) |0,
+ s2 = ((adler >>> 16) & 0xffff) |0,
+ n = 0;
+
+ while (len !== 0) {
+ // Set limit ~ twice less than 5552, to keep
+ // s2 in 31-bits, because we force signed ints.
+ // in other case %= will fail.
+ n = len > 2000 ? 2000 : len;
+ len -= n;
+
+ do {
+ s1 = (s1 + buf[pos++]) |0;
+ s2 = (s2 + s1) |0;
+ } while (--n);
+
+ s1 %= 65521;
+ s2 %= 65521;
+ }
+
+ return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;