]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: allow non-pointer writes in the middle of a write barrier
authorKeith Randall <khr@golang.org>
Fri, 18 Aug 2023 19:44:37 +0000 (12:44 -0700)
committerKeith Randall <khr@golang.org>
Wed, 23 Aug 2023 00:16:06 +0000 (00:16 +0000)
commit556e9c5f3e28d0398001384508a3c51143adcff8
tree8ecb874c690d0f9e9eefba1c15a1332c43a078b4
parent0163b3b32cad2ed3331e2b197c68387f12246cd8
cmd/compile: allow non-pointer writes in the middle of a write barrier

This lets us combine more write barriers, getting rid of some of the
test+branch and gcWriteBarrier* calls.
With the new write barriers, it's easy to add a few non-pointer writes
to the set of values written.

We allow up to 2 non-pointer writes between pointer writes. This is enough
for, for example, adjacent slice fields.

Fixes #62126

Change-Id: I872d0fa9cc4eb855e270ffc0223b39fde1723c4b
Reviewed-on: https://go-review.googlesource.com/c/go/+/521498
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@google.com>
src/cmd/compile/internal/ssa/writebarrier.go
test/codegen/writebarrier.go [new file with mode: 0644]