@@ -24,7 +24,6 @@ func init() {
2424// statically assert array size
2525var _ = (kindEncoderCache {}).entries [reflect .UnsafePointer ]
2626var _ = (kindDecoderCache {}).entries [reflect .UnsafePointer ]
27- var _ = (kindEncoderReflectFreeCache {}).entries [reflect .UnsafePointer ]
2827
2928type typeEncoderCache struct {
3029 cache sync.Map // map[reflect.Type]ValueEncoder
@@ -129,39 +128,6 @@ func (c *typeDecoderCache) Clone() *typeDecoderCache {
129128// so we wrap the ValueEncoder with a kindEncoderCacheEntry to ensure the type
130129// is always the same (since different concrete types may implement the
131130// ValueEncoder interface).
132- type kindEncoderReflectFreeCacheEntry struct {
133- enc reflectFreeValueEncoder
134- }
135-
136- type kindEncoderReflectFreeCache struct {
137- entries [reflect .UnsafePointer + 1 ]atomic.Value // *kindEncoderCacheEntry
138- }
139-
140- func (c * kindEncoderReflectFreeCache ) Store (rt reflect.Kind , enc reflectFreeValueEncoder ) {
141- if enc != nil && rt < reflect .Kind (len (c .entries )) {
142- c .entries [rt ].Store (& kindEncoderReflectFreeCacheEntry {enc : enc })
143- }
144- }
145-
146- func (c * kindEncoderReflectFreeCache ) Load (rt reflect.Kind ) (reflectFreeValueEncoder , bool ) {
147- if rt < reflect .Kind (len (c .entries )) {
148- if ent , ok := c .entries [rt ].Load ().(* kindEncoderReflectFreeCacheEntry ); ok {
149- return ent .enc , ent .enc != nil
150- }
151- }
152- return nil , false
153- }
154-
155- func (c * kindEncoderReflectFreeCache ) Clone () * kindEncoderReflectFreeCache {
156- cc := new (kindEncoderReflectFreeCache )
157- for i , v := range c .entries {
158- if val := v .Load (); val != nil {
159- cc .entries [i ].Store (val )
160- }
161- }
162- return cc
163- }
164-
165131type kindEncoderCacheEntry struct {
166132 enc ValueEncoder
167133}
0 commit comments