Skip to content

Commit ee2c811

Browse files
committed
Improve RemoveIf for slices to not reference anymore the removed memory
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent b63f70d commit ee2c811

31 files changed

+70
-0
lines changed

internal/cmd/pdatagen/internal/templates/slice.go.tmpl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,11 @@ func (es {{ .structName }}) RemoveIf(f func({{ .elementName }}) bool) {
133133
newLen := 0
134134
for i := 0; i < len(*es.{{ .origAccessor }}); i++ {
135135
if f(es.At(i)) {
136+
{{- if eq .type "sliceOfPtrs" }}
137+
(*es.{{ .origAccessor }})[i] = nil
138+
{{- else }}
139+
(*es.{{ .origAccessor }})[i] = {{ .emptyOriginElement }}
140+
{{- end }}
136141
continue
137142
}
138143
if newLen == i {
@@ -141,6 +146,11 @@ func (es {{ .structName }}) RemoveIf(f func({{ .elementName }}) bool) {
141146
continue
142147
}
143148
(*es.{{ .origAccessor }})[newLen] = (*es.{{ .origAccessor }})[i]
149+
{{- if eq .type "sliceOfPtrs" }}
150+
(*es.{{ .origAccessor }})[i] = nil
151+
{{- else }}
152+
(*es.{{ .origAccessor }})[i] = {{ .emptyOriginElement }}
153+
{{- end }}
144154
newLen++
145155
}
146156
*es.{{ .origAccessor }} = (*es.{{ .origAccessor }})[:newLen]

pdata/plog/generated_logrecordslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/plog/generated_resourcelogsslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/plog/generated_scopelogsslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pmetric/generated_exemplarslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pmetric/generated_exponentialhistogramdatapointslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pmetric/generated_histogramdatapointslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pmetric/generated_metricslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pmetric/generated_numberdatapointslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pdata/pmetric/generated_resourcemetricsslice.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)