Skip to content

Commit 2732d54

Browse files
authored
simplify code using slices package (#232)
1 parent fdebd5b commit 2732d54

File tree

5 files changed

+21
-32
lines changed

5 files changed

+21
-32
lines changed

cache/radixcache/radixcache.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package radixcache
33
import (
44
"bytes"
55
"context"
6+
"slices"
67
"strings"
78
"sync"
89

@@ -389,8 +390,7 @@ func (c *radixCache) internValue(value *indexer.Value, updateMeta, saveNew bool)
389390
// If the provided value has matching ProviderID and ContextID but
390391
// different Metadata, then update the interned value's metadata.
391392
if updateMeta && !bytes.Equal(v.MetadataBytes, value.MetadataBytes) {
392-
v.MetadataBytes = make([]byte, len(value.MetadataBytes))
393-
copy(v.MetadataBytes, value.MetadataBytes)
393+
v.MetadataBytes = slices.Clone(value.MetadataBytes)
394394
}
395395
return v
396396
}

engine/engine.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package engine
22

33
import (
44
"context"
5+
"slices"
56
"sync/atomic"
67
"time"
78

@@ -86,13 +87,13 @@ func (e *Engine) Put(value indexer.Value, mhs ...multihash.Multihash) error {
8687
mhsCount := len(mhs)
8788

8889
if e.resultCache != nil {
89-
var addToCache, mhsCopy []multihash.Multihash
90+
var addToCache []multihash.Multihash
91+
var copied bool
9092
// If using a value store, make sure give a copy of mhs to the
9193
// valuestore, as some implementations may expect to take ownership.
9294
if e.valueStore != nil {
93-
mhsCopy = make([]multihash.Multihash, len(mhs))
94-
copy(mhsCopy, mhs)
95-
mhs = mhsCopy
95+
mhs = slices.Clone(mhs)
96+
copied = true
9697
}
9798

9899
for i := 0; i < len(mhs); {
@@ -114,11 +115,10 @@ func (e *Engine) Put(value indexer.Value, mhs ...multihash.Multihash) error {
114115
// value, so do not try to put it in the value store. The
115116
// value store will handle this, but at a higher cost
116117
// requiring reading from disk.
117-
if mhsCopy == nil {
118+
if !copied {
118119
// Copy-on-write
119-
mhsCopy = make([]multihash.Multihash, len(mhs))
120-
copy(mhsCopy, mhs)
121-
mhs = mhsCopy
120+
mhs = slices.Clone(mhs)
121+
copied = true
122122
}
123123
mhs[i] = mhs[len(mhs)-1]
124124
mhs[len(mhs)-1] = nil

store/memory/memory.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,7 @@ func (s *memoryStore) internValue(value *indexer.Value, saveNew bool) *indexer.V
251251
// The provided value has matching ProviderID and ContextID but
252252
// different Metadata. Treat this as an update.
253253
if !bytes.Equal(v.MetadataBytes, value.MetadataBytes) {
254-
v.MetadataBytes = make([]byte, len(value.MetadataBytes))
255-
copy(v.MetadataBytes, value.MetadataBytes)
254+
v.MetadataBytes = bytes.Clone(value.MetadataBytes)
256255
}
257256
return v
258257
}

store/pebble/key.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package pebble
22

33
import (
4+
"bytes"
45
"errors"
56
"io"
67

@@ -224,15 +225,10 @@ func (b *blake3Keyer) multihashKey(mh multihash.Multihash) (*key, error) {
224225
// keyToMultihash extracts the multihash to which the given key is associated.
225226
// An error is returned if the given key does not have multihashKeyPrefix.
226227
func (b *blake3Keyer) keyToMultihash(k *key) (multihash.Multihash, error) {
227-
switch k.prefix() {
228-
case multihashKeyPrefix:
229-
keyData := k.buf[1:]
230-
mh := make([]byte, len(keyData))
231-
copy(mh, keyData)
232-
return mh, nil
233-
default:
228+
if k.prefix() != multihashKeyPrefix {
234229
return nil, errors.New("key prefix mismatch")
235230
}
231+
return bytes.Clone(k.buf[1:]), nil
236232
}
237233

238234
func (b *blake3Keyer) Close() error {

store/pebble/vk_merger.go

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"errors"
66
"io"
7+
"slices"
78

89
"github.com/cockroachdb/pebble"
910
)
@@ -97,9 +98,7 @@ func (v *valueKeysValueMerger) Finish(_ bool) ([]byte, io.Closer, error) {
9798
return nil, nil, nil
9899
}
99100
if v.reverse {
100-
for one, other := 0, len(v.merges)-1; one < other; one, other = one+1, other-1 {
101-
v.merges[one], v.merges[other] = v.merges[other], v.merges[one]
102-
}
101+
slices.Reverse(v.merges)
103102
}
104103
return v.c.marshalValueKeys(v.merges)
105104
}
@@ -111,21 +110,16 @@ func (v *valueKeysValueMerger) DeletableFinish(includesBase bool) ([]byte, bool,
111110

112111
// prune removes value-keys that are present in deletes from merges
113112
func (v *valueKeysValueMerger) prune() {
114-
pruned := v.merges[:0]
115-
for _, x := range v.merges {
116-
if _, ok := v.deletes[string(x)]; !ok {
117-
pruned = append(pruned, x)
118-
}
119-
}
120-
v.merges = pruned
113+
v.merges = slices.DeleteFunc(v.merges, func(vk []byte) bool {
114+
_, ok := v.deletes[string(vk)]
115+
return ok
116+
})
121117
}
122118

123119
// addToMerges checks whether the given value exists and if not adds it to the list of merges.
124120
func (v *valueKeysValueMerger) addToMerges(value []byte) {
125121
if !v.exists(value) {
126-
dst := make([]byte, len(value))
127-
copy(dst, value)
128-
v.merges = append(v.merges, dst)
122+
v.merges = append(v.merges, bytes.Clone(value))
129123
}
130124
}
131125

0 commit comments

Comments
 (0)