]> Cypherpunks repositories - gostls13.git/commit
[dev.link] cmd/link: parallelize second-stage DWARF generation
authorThan McIntosh <thanm@google.com>
Fri, 12 Jun 2020 13:04:28 +0000 (09:04 -0400)
committerThan McIntosh <thanm@google.com>
Wed, 17 Jun 2020 12:33:29 +0000 (12:33 +0000)
commitd1a186d29ce9d917dda7c66cfaee7788f88e7b9e
tree768e2a9be464a2b6b01b5879a54907de91918138
parent0fb1517b3f0b643570d554ea66d5e6884fb0343e
[dev.link] cmd/link: parallelize second-stage DWARF generation

This patch introduces parallelization of DWARF generation on a per
compilation unit basis. Each compilation unit now operates on a
separate set of symbols, so it's safe to send each compilation unit to
a goroutine to be processed in parallel.

Doing this requires some restructing to ensure that any new symbols
needed are created up front, since we can't create any new syms during
the parallel portion. Similarly, the parallel portion can't set any
symbol attributes, so the check that verifies we haven't doubly listed
any DIE syms had to be reworked, and setting of reachability has to be
delayed until after the parallel phase is complete.

Change-Id: I3042b76e9b597bb1a6a44dce19efba2d02bed76b
Reviewed-on: https://go-review.googlesource.com/c/go/+/237679
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
src/cmd/link/internal/ld/dwarf.go