aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/gob/encode.go
diff options
context:
space:
mode:
authorLudi Rehak <ludi317@gmail.com>2022-08-08 14:13:52 -0700
committerRob Pike <r@golang.org>2022-08-09 21:26:45 +0000
commitd39b54171a2702d5fe6fc427b60ee03c9c45da5a (patch)
treed25f6fcd86c833b6ae5418c9a60d2fd2b595a8e6 /src/encoding/gob/encode.go
parentcd9cd925bb9ed79975f2531a6b84f69905e4fc31 (diff)
downloadgo-d39b54171a2702d5fe6fc427b60ee03c9c45da5a.tar.xz
encoding/gob: change typeInfo.encoder type to atomic.Pointer[T]
Replace loading and storing an atomic.Value of type pointer with atomic.Pointer. Change-Id: I018ac1e18eee4f203ebca65c2833daf991075371 Reviewed-on: https://go-review.googlesource.com/c/go/+/422174 Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Rob Pike <r@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Rob Pike <r@golang.org>
Diffstat (limited to 'src/encoding/gob/encode.go')
-rw-r--r--src/encoding/gob/encode.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/encoding/gob/encode.go b/src/encoding/gob/encode.go
index 548d614f52..38430342b6 100644
--- a/src/encoding/gob/encode.go
+++ b/src/encoding/gob/encode.go
@@ -577,7 +577,7 @@ func encOpFor(rt reflect.Type, inProgress map[reflect.Type]*encOp, building map[
op = func(i *encInstr, state *encoderState, sv reflect.Value) {
state.update(i)
// indirect through info to delay evaluation for recursive structs
- enc := info.encoder.Load().(*encEngine)
+ enc := info.encoder.Load()
state.enc.encodeStruct(state.b, enc, sv)
}
case reflect.Interface:
@@ -661,8 +661,8 @@ func getEncEngine(ut *userTypeInfo, building map[*typeInfo]bool) *encEngine {
if err != nil {
error_(err)
}
- enc, ok := info.encoder.Load().(*encEngine)
- if !ok {
+ enc := info.encoder.Load()
+ if enc == nil {
enc = buildEncEngine(info, ut, building)
}
return enc
@@ -675,8 +675,8 @@ func buildEncEngine(info *typeInfo, ut *userTypeInfo, building map[*typeInfo]boo
}
info.encInit.Lock()
defer info.encInit.Unlock()
- enc, ok := info.encoder.Load().(*encEngine)
- if !ok {
+ enc := info.encoder.Load()
+ if enc == nil {
if building == nil {
building = make(map[*typeInfo]bool)
}