]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: define roles for ssa.Func, ssa.Config, and ssa.Cache
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 14 Mar 2017 23:44:48 +0000 (16:44 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Wed, 15 Mar 2017 04:27:49 +0000 (04:27 +0000)
commit43afcb5c969112332e46b4cb07bf2fd6497c3919
tree9671cd61d80d628185a92d7c0e411fd424be2a88
parent886e9e6065588d6c40567f3323883ded7ad3d946
cmd/compile: define roles for ssa.Func, ssa.Config, and ssa.Cache

The line between ssa.Func and ssa.Config has blurred.
Concurrent compilation in the backend will require more precision.
This CL lays out an (aspirational) organization.
The implementation will come in follow-up CLs,
once the organization is settled.

ssa.Config holds basic compiler configuration,
mostly arch-specific information.
It is configured once, early on, and is readonly,
so it is safe for concurrent use.

ssa.Func is a single-shot object used for
compiling a single Func. It is not concurrency-safe
and not re-usable.

ssa.Cache is a multi-use object used to avoid
expensive allocations during compilation.
Each ssa.Func is given an ssa.Cache to use.
ssa.Cache is not concurrency-safe.

Change-Id: Id02809b6f3541541cac6c27bbb598834888ce1cc
Reviewed-on: https://go-review.googlesource.com/38160
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ssa/cache.go [new file with mode: 0644]
src/cmd/compile/internal/ssa/config.go
src/cmd/compile/internal/ssa/func.go