Merge pull request #12659 from prymitive/memChunk

Short-cut common memChunk operations
This commit is contained in:
Bryan Boreham 2025-02-25 11:33:56 +00:00 committed by GitHub
commit 42d55505f9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2277,6 +2277,10 @@ type memChunk struct {
// len returns the length of memChunk list, including the element it was called on. // len returns the length of memChunk list, including the element it was called on.
func (mc *memChunk) len() (count int) { func (mc *memChunk) len() (count int) {
if mc.prev == nil {
return 1
}
elem := mc elem := mc
for elem != nil { for elem != nil {
count++ count++
@ -2288,6 +2292,9 @@ func (mc *memChunk) len() (count int) {
// oldest returns the oldest element on the list. // oldest returns the oldest element on the list.
// For single element list this will be the same memChunk oldest() was called on. // For single element list this will be the same memChunk oldest() was called on.
func (mc *memChunk) oldest() (elem *memChunk) { func (mc *memChunk) oldest() (elem *memChunk) {
if mc.prev == nil {
return mc
}
elem = mc elem = mc
for elem.prev != nil { for elem.prev != nil {
elem = elem.prev elem = elem.prev
@ -2300,6 +2307,9 @@ func (mc *memChunk) atOffset(offset int) (elem *memChunk) {
if offset == 0 { if offset == 0 {
return mc return mc
} }
if offset == 1 {
return mc.prev
}
if offset < 0 { if offset < 0 {
return nil return nil
} }
@ -2313,7 +2323,6 @@ func (mc *memChunk) atOffset(offset int) (elem *memChunk) {
break break
} }
} }
return elem return elem
} }