| // asmcheck |
| |
| // Copyright 2023 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package codegen |
| |
| func combine2string(p *[2]string, a, b string) { |
| // amd64:`.*runtime[.]gcWriteBarrier4\(SB\)` |
| // arm64:`.*runtime[.]gcWriteBarrier4\(SB\)` |
| p[0] = a |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[1] = b |
| } |
| |
| func combine4string(p *[4]string, a, b, c, d string) { |
| // amd64:`.*runtime[.]gcWriteBarrier8\(SB\)` |
| // arm64:`.*runtime[.]gcWriteBarrier8\(SB\)` |
| p[0] = a |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[1] = b |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[2] = c |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[3] = d |
| } |
| |
| func combine2slice(p *[2][]byte, a, b []byte) { |
| // amd64:`.*runtime[.]gcWriteBarrier4\(SB\)` |
| // arm64:`.*runtime[.]gcWriteBarrier4\(SB\)` |
| p[0] = a |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[1] = b |
| } |
| |
| func combine4slice(p *[4][]byte, a, b, c, d []byte) { |
| // amd64:`.*runtime[.]gcWriteBarrier8\(SB\)` |
| // arm64:`.*runtime[.]gcWriteBarrier8\(SB\)` |
| p[0] = a |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[1] = b |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[2] = c |
| // amd64:-`.*runtime[.]gcWriteBarrier` |
| // arm64:-`.*runtime[.]gcWriteBarrier` |
| p[3] = d |
| } |
| |
| func trickyWriteNil(p *int, q **int) { |
| if p == nil { |
| // We change "= p" to "= 0" in the prove pass, which |
| // means we have one less pointer that needs to go |
| // into the write barrier buffer. |
| // amd64:`.*runtime[.]gcWriteBarrier1` |
| *q = p |
| } |
| } |