From: Russ Cox Date: Mon, 21 Dec 2020 06:56:46 +0000 (-0500) Subject: [dev.regabi] cmd/compile: separate nowritebarrierrec from main X-Git-Tag: go1.17beta1~1539^2~285 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1a523c8ab0;p=gostls13.git [dev.regabi] cmd/compile: separate nowritebarrierrec from main 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 Run-TryBot: Russ Cox TryBot-Result: Go Bot Reviewed-by: Matthew Dempsky --- diff --git a/src/cmd/compile/internal/gc/dcl.go b/src/cmd/compile/internal/gc/dcl.go index 20e5edc4cb..64b15077cd 100644 --- a/src/cmd/compile/internal/gc/dcl.go +++ b/src/cmd/compile/internal/gc/dcl.go @@ -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() { diff --git a/src/cmd/compile/internal/gc/main.go b/src/cmd/compile/internal/gc/main.go index afb47cf15d..7f7cd63cdf 100644 --- a/src/cmd/compile/internal/gc/main.go +++ b/src/cmd/compile/internal/gc/main.go @@ -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