]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: redo IsRuntimePkg/IsReflectPkg predicate
authorAustin Clements <austin@google.com>
Fri, 7 Jul 2023 20:16:30 +0000 (16:16 -0400)
committerAustin Clements <austin@google.com>
Tue, 22 Aug 2023 19:18:21 +0000 (19:18 +0000)
commit596120fdc6075c5789eae3a5caaf57639e7d18a3
tree3873662c42a2ddec79cc06df58dbb22b29c48864
parent9f9bb26880388c5bead158e9eca3be4b3a9bd2af
cmd/compile: redo IsRuntimePkg/IsReflectPkg predicate

Currently, the types package has IsRuntimePkg and IsReflectPkg
predicates for testing if a Pkg is the runtime or reflect packages.
IsRuntimePkg returns "true" for any "CompilingRuntime" package, which
includes all of the packages imported by the runtime. This isn't
inherently wrong, except that all but one use of it is of the form "is
this Sym a specific runtime.X symbol?" for which we clearly only want
the package "runtime" itself. IsRuntimePkg was introduced (as
isRuntime) in CL 37538 as part of separating the real runtime package
from the compiler built-in fake runtime package. As of that CL, the
"runtime" package couldn't import any other packages, so this was
adequate at the time.

We could fix this by just changing the implementation of IsRuntimePkg,
but the meaning of this API is clearly somewhat ambiguous. Instead, we
replace it with a new RuntimeSymName function that returns the name of
a symbol if it's in package "runtime", or "" if not. This is what
every call site (except one) actually wants, which lets us simplify
the callers, and also more clearly addresses the ambiguity between
package "runtime" and the general concept of a runtime package.

IsReflectPkg doesn't have the same issue of ambiguity, but it
parallels IsRuntimePkg and is used in the same way, so we replace it
with a new ReflectSymName for consistency.

Change-Id: If3a81d7d11732a9ab2cac9488d17508415cfb597
Reviewed-on: https://go-review.googlesource.com/c/go/+/521696
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
src/cmd/compile/internal/inline/inl.go
src/cmd/compile/internal/noder/unified.go
src/cmd/compile/internal/ssagen/nowb.go
src/cmd/compile/internal/typecheck/func.go
src/cmd/compile/internal/types/type.go
src/cmd/compile/internal/walk/builtin.go
src/cmd/compile/internal/walk/expr.go
test/nowritebarrier.go