]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/gc: sync nowritebarrier checks and write barrier insertion
authorRuss Cox <rsc@golang.org>
Tue, 19 May 2015 19:15:52 +0000 (15:15 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 19 May 2015 19:20:32 +0000 (19:20 +0000)
Change-Id: I348223d0336e28d95b8e68d7653aa547acc7c9c3
Reviewed-on: https://go-review.googlesource.com/10262
Reviewed-by: Austin Clements <austin@google.com>
src/cmd/internal/gc/cgen.go
src/cmd/internal/gc/walk.go

index 002439ce36129ad677b212c1c72ece1baf9c46d4..e003ea9f4f8403b8fe0743cc0f26170175726483 100644 (file)
@@ -785,6 +785,9 @@ abop: // asymmetric binary
 var sys_wbptr *Node
 
 func cgen_wbptr(n, res *Node) {
+       if Curfn != nil && Curfn.Func.Nowritebarrier {
+               Yyerror("write barrier prohibited")
+       }
        if Debug_wb > 0 {
                Warn("write barrier")
        }
@@ -828,6 +831,9 @@ func cgen_wbptr(n, res *Node) {
 }
 
 func cgen_wbfat(n, res *Node) {
+       if Curfn != nil && Curfn.Func.Nowritebarrier {
+               Yyerror("write barrier prohibited")
+       }
        if Debug_wb > 0 {
                Warn("write barrier")
        }
index a7f5256b1905aa229ed32606130873bd8b0b1786..36e4d66b33aec8a9d7287c851289ce280195c5da 100644 (file)
@@ -2217,6 +2217,9 @@ func applywritebarrier(n *Node, init **NodeList) *Node {
                        return n
                }
                // Use slow path always for race detector.
+               if Curfn != nil && Curfn.Func.Nowritebarrier {
+                       Yyerror("write barrier prohibited")
+               }
                if Debug_wb > 0 {
                        Warnl(int(n.Lineno), "write barrier")
                }