growSlow handles the cold path when buffer expansion is needed. go:noinline
(n int)
| 170 | // |
| 171 | //go:noinline |
| 172 | func (b *ByteBuffer) growSlow(n int) { |
| 173 | needed := b.writerIndex + n |
| 174 | if needed <= cap(b.data) { |
| 175 | b.data = b.data[:cap(b.data)] |
| 176 | } else { |
| 177 | newCap := 2 * needed |
| 178 | newBuf := make([]byte, newCap) |
| 179 | copy(newBuf, b.data[:b.writerIndex]) |
| 180 | b.data = newBuf |
| 181 | } |
| 182 | } |
| 183 | |
| 184 | func (b *ByteBuffer) WriteBool(value bool) { |
| 185 | b.grow(1) |