]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: separate nowritebarrierrec from main
authorRuss Cox <rsc@golang.org>
Mon, 21 Dec 2020 06:56:46 +0000 (01:56 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 21 Dec 2020 19:23:33 +0000 (19:23 +0000)
Main knows a bit too much about nowritebarrierrec.
Abstract the API a little bit to make the package split easier.

Change-Id: I4b76bdb1fed73dfb0d44e1a6c86de8c2d29a9488
Reviewed-on: https://go-review.googlesource.com/c/go/+/279301
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/dcl.go
src/cmd/compile/internal/gc/main.go

index 20e5edc4cb4ae241331b62915df7e25d51d21cfa..64b15077cdfaac4b29a4897e7c38870182be2569 100644 (file)
@@ -15,7 +15,18 @@ import (
        "strings"
 )
 
-// Declaration stack & operations
+func EnableNoWriteBarrierRecCheck() {
+       nowritebarrierrecCheck = newNowritebarrierrecChecker()
+}
+
+func NoWriteBarrierRecCheck() {
+       // Write barriers are now known. Check the
+       // call graph.
+       nowritebarrierrecCheck.check()
+       nowritebarrierrecCheck = nil
+}
+
+var nowritebarrierrecCheck *nowritebarrierrecChecker
 
 func testdclstack() {
        if !types.IsDclstackValid() {
index afb47cf15de9d12a8f47f0ad8a80a3b214cd86e4..7f7cd63cdfdde6127df8e500468fc4ee011c8456 100644 (file)
@@ -57,8 +57,6 @@ var Target *ir.Package
 // timing data for compiler phases
 var timings Timings
 
-var nowritebarrierrecCheck *nowritebarrierrecChecker
-
 // Main parses flags and Go source files specified in the command-line
 // arguments, type-checks the parsed Go package, compiles functions to machine
 // code, and finally writes the compiled package definition to disk.
@@ -382,7 +380,7 @@ func Main(archInit func(*Arch)) {
        // We'll do the final check after write barriers are
        // inserted.
        if base.Flag.CompilingRuntime {
-               nowritebarrierrecCheck = newNowritebarrierrecChecker()
+               EnableNoWriteBarrierRecCheck()
        }
 
        // Phase 7: Transform closure bodies to properly reference captured variables.
@@ -422,11 +420,9 @@ func Main(archInit func(*Arch)) {
 
        compileFunctions()
 
-       if nowritebarrierrecCheck != nil {
-               // Write barriers are now known. Check the
-               // call graph.
-               nowritebarrierrecCheck.check()
-               nowritebarrierrecCheck = nil
+       if base.Flag.CompilingRuntime {
+               // Write barriers are now known. Check the call graph.
+               NoWriteBarrierRecCheck()
        }
 
        // Finalize DWARF inline routine DIEs, then explicitly turn off