]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/noder: fill in SectionName
authorMark Freeman <mark@golang.org>
Thu, 29 May 2025 19:43:47 +0000 (15:43 -0400)
committerGopher Robot <gobot@golang.org>
Mon, 2 Jun 2025 18:51:59 +0000 (11:51 -0700)
Change-Id: Ib99d40a546cb095c1b6c2d33e0735f3b5c681539
Reviewed-on: https://go-review.googlesource.com/c/go/+/677237
Reviewed-by: Robert Griesemer <gri@google.com>
Auto-Submit: Mark Freeman <mark@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/compile/internal/noder/doc.go

index baf7c674638d2b217d46e568f0287fe36c1561bb..05fcddadc5198b43249f5c4cf5cc0b565dc03ad5 100644 (file)
@@ -25,7 +25,7 @@ determines its index in the series.
                   SectionMeta
                   SectionPosBase
                   SectionPkg
-                  SectionName    // TODO(markfreeman) Define.
+                  SectionName
                   SectionType    // TODO(markfreeman) Define.
                   SectionObj     // TODO(markfreeman) Define.
                   SectionObjExt  // TODO(markfreeman) Define.
@@ -35,9 +35,11 @@ determines its index in the series.
 
 # Sections
 A section is a series of elements of a type determined by the section's
-kind. Go constructs are mapped onto (potentially multiple) elements.
-Elements are accessed using an index relative to the start of the
-section.
+kind. Go constructs are mapped onto one or more elements with possibly
+different types; in that case, the elements are in different sections.
+
+Elements are accessed using an element index relative to the start of
+the section.
 
     RelElemIdx = Uint64 .
 
@@ -135,6 +137,28 @@ Note, a PkgRef is *not* equivalent to Ref[Pkg] due to an extra marker.
                  Ref[Pkg]
                  .
 
+## Object Sections
+Information about an object (e.g. variable, function, type name, etc.)
+is split into multiple elements in different sections. Those elements
+have the same section-relative element index.
+
+### Name Section
+The name section holds a series of names.
+
+    SectionName = { Name } .
+
+Names are elements holding qualified identifiers and type information
+for objects.
+
+    Name        = RefTable
+                  [ Sync ]
+                  [ Sync ]
+                  PkgRef    // the object's package
+                  StringRef // the object's package-local name
+                  [ Sync ]
+                  Uint64    // the object's type (e.g. Var, Func, etc.)
+                  .
+
 # References
 A reference table precedes every element. Each entry in the table
 contains a (section, index) pair denoting the location of the