Commit 52cf91a5 authored by Austin Clements's avatar Austin Clements

cmd/compile,runtime: update instrumentation comments

The compiler's instrumentation pass has some out-of-date comments
about the write barrier and some confusing comments about
typedslicecopy. Update these comments and add a comment to
typedslicecopy explaining why it's manually instrumented while none of
the other operations are.

Change-Id: I024e5361d53f1c3c122db0c85155368a30cabd6b
Reviewed-on: https://go-review.googlesource.com/74430Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
Reviewed-by: default avatarKeith Randall <khr@golang.org>
parent 5536180a
......@@ -170,10 +170,14 @@ func instrumentnode(np **Node, init *Nodes, wr int, skip int) {
case OCALLINTER:
instrumentnode(&n.Left, init, 0, 0)
// Instrument dst argument of runtime.writebarrier* calls
// as we do not instrument runtime code.
// typedslicecopy is instrumented in runtime.
case OCALLFUNC:
// Note that runtime.typedslicecopy is the only
// assignment-like function call in the AST at this
// point (between walk and SSA); since we don't
// instrument it here, typedslicecopy is manually
// instrumented in runtime. Calls to the write barrier
// and typedmemmove are created later by SSA, so those
// still appear as OAS nodes at this point.
instrumentnode(&n.Left, init, 0, 0)
case ONOT,
......
......@@ -326,6 +326,10 @@ func typedslicecopy(typ *_type, dst, src slice) int {
dstp := dst.array
srcp := src.array
// The compiler emits calls to typedslicecopy before
// instrumentation runs, so unlike the other copying and
// assignment operations, it's not instrumented in the calling
// code and needs its own instrumentation.
if raceenabled {
callerpc := getcallerpc()
pc := funcPC(slicecopy)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment