Server IP : 2a02:4780:3:1493:0:3736:a38e:7 / Your IP : 216.73.216.112 Web Server : LiteSpeed System : Linux sg-nme-web1393.main-hosting.eu 4.18.0-553.40.1.lve.el8.x86_64 #1 SMP Wed Feb 12 18:54:57 UTC 2025 x86_64 User : u926327694 ( 926327694) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : OFF | Python : OFF Directory (0755) : /home/../lib/../opt/golang/1.19.4/test/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
// 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 } }