]> Cypherpunks.ru repositories - gostls13.git/commitdiff
hash: convert haveCastagnoli to atomic type
authorcuiweixie <cuiweixie@gmail.com>
Sat, 27 Aug 2022 03:11:08 +0000 (11:11 +0800)
committerGopher Robot <gobot@golang.org>
Fri, 2 Sep 2022 06:06:53 +0000 (06:06 +0000)
Change-Id: I313fff5684d89ee737572d11b1b697c5575866a8
Reviewed-on: https://go-review.googlesource.com/c/go/+/426083
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
src/hash/crc32/crc32.go

index 1a24d980cc8b2830f77eef11b2183f33f05e4017..4fcb168e6e9b387fa8db552d4d1e7cda66a55c44 100644 (file)
@@ -78,7 +78,7 @@ var castagnoliTable *Table
 var castagnoliTable8 *slicing8Table
 var updateCastagnoli func(crc uint32, p []byte) uint32
 var castagnoliOnce sync.Once
-var haveCastagnoli uint32
+var haveCastagnoli atomic.Bool
 
 func castagnoliInit() {
        castagnoliTable = simpleMakeTable(Castagnoli)
@@ -94,7 +94,7 @@ func castagnoliInit() {
                }
        }
 
-       atomic.StoreUint32(&haveCastagnoli, 1)
+       haveCastagnoli.Store(true)
 }
 
 // IEEETable is the table for the IEEE polynomial.
@@ -208,7 +208,7 @@ func readUint32(b []byte) uint32 {
 // Update returns the result of adding the bytes in p to the crc.
 func Update(crc uint32, tab *Table, p []byte) uint32 {
        switch {
-       case atomic.LoadUint32(&haveCastagnoli) != 0 && tab == castagnoliTable:
+       case haveCastagnoli.Load() && tab == castagnoliTable:
                return updateCastagnoli(crc, p)
        case tab == IEEETable:
                // Unfortunately, because IEEETable is exported, IEEE may be used without a
@@ -222,7 +222,7 @@ func Update(crc uint32, tab *Table, p []byte) uint32 {
 
 func (d *digest) Write(p []byte) (n int, err error) {
        switch {
-       case atomic.LoadUint32(&haveCastagnoli) != 0 && d.tab == castagnoliTable:
+       case haveCastagnoli.Load() && d.tab == castagnoliTable:
                d.crc = updateCastagnoli(d.crc, p)
        case d.tab == IEEETable:
                // We only create digest objects through New() which takes care of