aboutsummaryrefslogtreecommitdiff
path: root/src/compress
diff options
context:
space:
mode:
authorNigel Tao <nigeltao@golang.org>2019-09-12 17:56:57 +1000
committerNigel Tao <nigeltao@golang.org>2019-09-14 02:23:31 +0000
commit4e215554aa0e76e534327b9e6721971b9e82c113 (patch)
tree342b0e2056220935c2c8ae423a4a9817ff9bce5d /src/compress
parent8cc57c0ccc882a06352e6ad73cb7c281d34be3ef (diff)
downloadgo-4e215554aa0e76e534327b9e6721971b9e82c113.tar.gz
go-4e215554aa0e76e534327b9e6721971b9e82c113.zip
compress/lzw: clarify code invariants
This follows on from https://go-review.googlesource.com/c/go/+/191358 which was submitted as a comment-only change. Benchmarks don't show any significant change: compress/lzw name old speed new speed delta Decoder/1e4-56 92.8MB/s ± 1% 92.7MB/s ± 1% ~ (p=1.000 n=5+5) Decoder/1e5-56 100MB/s ± 1% 100MB/s ± 1% ~ (p=0.746 n=5+5) Decoder/1e6-56 101MB/s ± 1% 101MB/s ± 1% ~ (p=0.381 n=5+5) image/gif name old speed new speed delta Decode-56 63.2MB/s ± 1% 63.2MB/s ± 1% ~ (p=0.690 n=5+5) Change-Id: Ic36b5410cb06ca258da32e40da1f1ff6c44cff86 Reviewed-on: https://go-review.googlesource.com/c/go/+/194938 Reviewed-by: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/compress')
-rw-r--r--src/compress/lzw/reader.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compress/lzw/reader.go b/src/compress/lzw/reader.go
index 912b7d3f40..f08021190c 100644
--- a/src/compress/lzw/reader.go
+++ b/src/compress/lzw/reader.go
@@ -199,6 +199,9 @@ loop:
}
d.last, d.hi = code, d.hi+1
if d.hi >= d.overflow {
+ if d.hi > d.overflow {
+ panic("unreachable")
+ }
if d.width == maxWidth {
d.last = decoderInvalidCode
// Undo the d.hi++ a few lines above, so that (1) we maintain
@@ -207,7 +210,7 @@ loop:
d.hi--
} else {
d.width++
- d.overflow <<= 1
+ d.overflow = 1 << d.width
}
}
if d.o >= flushBuffer {