BLACKSITE
:
216.73.217.77
:
88.222.222.101 / rupeemap.com
:
Linux in-mum-web1336.main-hosting.eu 4.18.0-553.34.1.lve.el8.x86_64 #1 SMP Thu Jan 9 16:30:32 UTC 2025 x86_64
:
/
opt
/
golang
/
1.19.4
/
test
/
Upload File:
files >> //opt/golang/1.19.4/test/notinheap3.go
// errorcheck -+ -0 -l -d=wb // Copyright 2016 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. // Test write barrier elimination for notinheap. package p type t1 struct { x *nih s []nih y [1024]byte // Prevent write decomposition } type t2 struct { x *ih s []ih y [1024]byte } //go:notinheap type nih struct { x uintptr } type ih struct { // In-heap type x uintptr } var ( v1 t1 v2 t2 v1s []t1 v2s []t2 ) func f() { // Test direct writes v1.x = nil // no barrier v2.x = nil // ERROR "write barrier" v1.s = []nih(nil) // no barrier v2.s = []ih(nil) // ERROR "write barrier" } func g() { // Test aggregate writes v1 = t1{x: nil} // no barrier v2 = t2{x: nil} // ERROR "write barrier" } func h() { // Test copies and appends. copy(v1s, v1s[1:]) // no barrier copy(v2s, v2s[1:]) // ERROR "write barrier" _ = append(v1s, v1s...) // no barrier _ = append(v2s, v2s...) // ERROR "write barrier" } // Slice clearing var ( sliceIH []*ih sliceNIH []*nih ) func sliceClear() { for i := range sliceIH { sliceIH[i] = nil // ERROR "write barrier" } for i := range sliceNIH { sliceNIH[i] = nil // no barrier } }