Skip to content

Commit 31d8443

Browse files
author
Noam Preil
committed
disable refcounting when not used
1 parent 6bd3861 commit 31d8443

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed

arrow/ipc/message.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ func NewMessage(meta, body *memory.Buffer) *Message {
8686
meta: meta,
8787
body: body,
8888
}
89-
m.Refcount.Buffers = []**memory.Buffer{&m.meta, &m.body}
90-
m.Derived = []unsafe.Pointer{unsafe.Pointer(&m.msg)}
89+
m.ReferenceBuffer(&m.meta, &m.body)
90+
m.ReferenceDerived(unsafe.Pointer(&m.msg))
9191
m.Retain()
9292
return m
9393
}
@@ -102,8 +102,8 @@ func newMessageFromFB(meta *flatbuf.Message, body *memory.Buffer) *Message {
102102
meta: memory.NewBufferBytes(meta.Table().Bytes),
103103
body: body,
104104
}
105-
m.Refcount.Buffers = []**memory.Buffer{&m.meta, &m.body}
106-
m.Derived = []unsafe.Pointer{unsafe.Pointer(&m.msg)}
105+
m.ReferenceBuffer(&m.meta, &m.body)
106+
m.ReferenceDerived(unsafe.Pointer(&m.msg))
107107
m.Retain()
108108
return m
109109
}

arrow/memory/refcount.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
//go:build refcounting
2+
13
package memory
24

35
import (
@@ -14,6 +16,37 @@ type Refcount struct {
1416
Derived []unsafe.Pointer
1517
}
1618

19+
func (r *Refcount) ReferenceDependency(d ...**Refcount) {
20+
if r.Dependencies == nil {
21+
r.Dependencies = d
22+
} else {
23+
for _, d := range d {
24+
r.Dependencies = append(r.Dependencies, d)
25+
}
26+
}
27+
}
28+
29+
func (r *Refcount) ReferenceBuffer(b...**Buffer) {
30+
if r.Buffers == nil {
31+
r.Buffers = b
32+
} else {
33+
for _, b := range b {
34+
r.Buffers = append(r.Buffers, b)
35+
}
36+
}
37+
}
38+
39+
40+
func (r *Refcount) ReferenceDerived(p ...unsafe.Pointer) {
41+
if r.Derived == nil {
42+
r.Derived = p
43+
} else {
44+
for _, p := range p {
45+
r.Derived = append(r.Derived, p)
46+
}
47+
}
48+
}
49+
1750
func (r *Refcount) Retain() {
1851
r.count.Add(1)
1952
}

arrow/memory/refcount_disabled.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//go:build !refcounting
2+
3+
package memory
4+
5+
type Refcount struct{}
6+
7+
func (r *Refcount) ReferenceDependency(d ...any) {}
8+
func (r *Refcount) ReferenceBuffer(b ...any) {}
9+
func (r *Refcount) ReferenceDerived(p ...any) {}
10+
func (r *Refcount) Retain() {}
11+
func (r *Refcount) Release() {}

0 commit comments

Comments
 (0)