diff options
Diffstat (limited to 'vendor')
| -rw-r--r-- | vendor/codeberg.org/gruf/go-structr/cache.go | 14 | ||||
| -rw-r--r-- | vendor/codeberg.org/gruf/go-structr/item.go | 6 | ||||
| -rw-r--r-- | vendor/codeberg.org/gruf/go-structr/queue.go | 6 | ||||
| -rw-r--r-- | vendor/modules.txt | 2 | 
4 files changed, 26 insertions, 2 deletions
diff --git a/vendor/codeberg.org/gruf/go-structr/cache.go b/vendor/codeberg.org/gruf/go-structr/cache.go index d9bcc58d3..17c491158 100644 --- a/vendor/codeberg.org/gruf/go-structr/cache.go +++ b/vendor/codeberg.org/gruf/go-structr/cache.go @@ -556,6 +556,12 @@ func (c *Cache[T]) Cap() int {  func (c *Cache[T]) store_value(index *Index, key Key, value T) {  	// Alloc new index item.  	item := new_indexed_item() +	if cap(item.indexed) < len(c.indices) { + +		// Preallocate item indices slice to prevent Go auto +		// allocating overlying large slices we don't need. +		item.indexed = make([]*index_entry, 0, len(c.indices)) +	}  	// Create COPY of value.  	value = c.copy(value) @@ -622,6 +628,14 @@ func (c *Cache[T]) store_error(index *Index, key Key, err error) {  	// Alloc new index item.  	item := new_indexed_item() +	if cap(item.indexed) < len(c.indices) { + +		// Preallocate item indices slice to prevent Go auto +		// allocating overlying large slices we don't need. +		item.indexed = make([]*index_entry, 0, len(c.indices)) +	} + +	// Set error val.  	item.data = err  	// Append item to index. diff --git a/vendor/codeberg.org/gruf/go-structr/item.go b/vendor/codeberg.org/gruf/go-structr/item.go index 602c5b84a..9e837e157 100644 --- a/vendor/codeberg.org/gruf/go-structr/item.go +++ b/vendor/codeberg.org/gruf/go-structr/item.go @@ -51,8 +51,12 @@ func (i *indexed_item) drop_index(entry *index_entry) {  			continue  		} +		// Unset tptr value to +		// ensure GC can take it. +		i.indexed[x] = nil +  		// Move all index entries down + reslice. -		copy(i.indexed[x:], i.indexed[x+1:]) +		_ = copy(i.indexed[x:], i.indexed[x+1:])  		i.indexed = i.indexed[:len(i.indexed)-1]  		break  	} diff --git a/vendor/codeberg.org/gruf/go-structr/queue.go b/vendor/codeberg.org/gruf/go-structr/queue.go index 91092790a..d7c21daaa 100644 --- a/vendor/codeberg.org/gruf/go-structr/queue.go +++ b/vendor/codeberg.org/gruf/go-structr/queue.go @@ -276,6 +276,12 @@ func (q *Queue[T]) pop_n(n int, next func() *list_elem) []T {  func (q *Queue[T]) index(value T) *indexed_item {  	item := new_indexed_item() +	if cap(item.indexed) < len(q.indices) { + +		// Preallocate item indices slice to prevent Go auto +		// allocating overlying large slices we don't need. +		item.indexed = make([]*index_entry, 0, len(q.indices)) +	}  	// Set item value.  	item.data = value diff --git a/vendor/modules.txt b/vendor/modules.txt index 3d8b748df..3d9374a85 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -62,7 +62,7 @@ codeberg.org/gruf/go-sched  ## explicit; go 1.19  codeberg.org/gruf/go-store/v2/storage  codeberg.org/gruf/go-store/v2/util -# codeberg.org/gruf/go-structr v0.8.0 +# codeberg.org/gruf/go-structr v0.8.2  ## explicit; go 1.21  codeberg.org/gruf/go-structr  # codeberg.org/superseriousbusiness/exif-terminator v0.7.0  | 
