aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link/internal
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2024-10-26 00:48:33 +0700
committerShulhan <m.shulhan@gmail.com>2026-02-03 18:04:30 +0700
commit011e40da85bddf83fee0ded83cb9115b7a88b3d4 (patch)
tree355cc352e66fc64ce94f17658c31e699aa798bb1 /src/cmd/link/internal
parent85232e51b20971e0d211b25fa3aa412bc7987404 (diff)
downloadgo-011e40da85bddf83fee0ded83cb9115b7a88b3d4.tar.xz
all: prealloc slice with possible minimum capabilities
Diffstat (limited to 'src/cmd/link/internal')
-rw-r--r--src/cmd/link/internal/ld/lib.go5
-rw-r--r--src/cmd/link/internal/ld/macho_combine_dwarf.go2
-rw-r--r--src/cmd/link/internal/ld/xcoff.go8
-rw-r--r--src/cmd/link/internal/loadxcoff/ldxcoff.go4
4 files changed, 10 insertions, 9 deletions
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index bcad5add4a..f04c45d18d 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -2649,8 +2649,9 @@ func ldshlibsyms(ctxt *Link, shlib string) {
Errorf("cannot read dep list from shared library %s: %v", libpath, err)
return
}
- var deps []string
- for _, dep := range strings.Split(string(depsbytes), "\n") {
+ depsSplit := strings.Split(string(depsbytes), "\n")
+ deps := make([]string, 0, len(depsSplit))
+ for _, dep := range depsSplit {
if dep == "" {
continue
}
diff --git a/src/cmd/link/internal/ld/macho_combine_dwarf.go b/src/cmd/link/internal/ld/macho_combine_dwarf.go
index 2b303cbdae..353dbd7327 100644
--- a/src/cmd/link/internal/ld/macho_combine_dwarf.go
+++ b/src/cmd/link/internal/ld/macho_combine_dwarf.go
@@ -229,7 +229,7 @@ func machoCompressSections(ctxt *Link, dwarfm *macho.File) ([]*macho.Section, []
}
dwarfseg := dwarfm.Segment("__DWARF")
- var sects []*macho.Section
+ sects := make([]*macho.Section, 0, len(dwarfm.Sections))
var buf bytes.Buffer
for _, sect := range dwarfm.Sections {
diff --git a/src/cmd/link/internal/ld/xcoff.go b/src/cmd/link/internal/ld/xcoff.go
index 8edd4ccad8..ee507ca29f 100644
--- a/src/cmd/link/internal/ld/xcoff.go
+++ b/src/cmd/link/internal/ld/xcoff.go
@@ -1353,10 +1353,10 @@ func Loaderblk(ctxt *Link, off uint64) {
}
func (f *xcoffFile) writeLdrScn(ctxt *Link, globalOff uint64) {
- var symtab []*XcoffLdSym64
- var strtab []*XcoffLdStr64
- var importtab []*XcoffLdImportFile64
- var reloctab []*XcoffLdRel64
+ symtab := make([]*XcoffLdSym64, 0, len(f.loaderSymbols))
+ strtab := make([]*XcoffLdStr64, 0, len(f.loaderSymbols))
+ importtab := make([]*XcoffLdImportFile64, 0, len(f.dynLibraries))
+ reloctab := make([]*XcoffLdRel64, 0, len(f.loaderReloc))
var dynimpreloc []*XcoffLdRel64
// As the string table is updated in any loader subsection,
diff --git a/src/cmd/link/internal/loadxcoff/ldxcoff.go b/src/cmd/link/internal/loadxcoff/ldxcoff.go
index 8c0949ec70..85333cea1d 100644
--- a/src/cmd/link/internal/loadxcoff/ldxcoff.go
+++ b/src/cmd/link/internal/loadxcoff/ldxcoff.go
@@ -46,14 +46,14 @@ func Load(l *loader.Loader, arch *sys.Arch, localSymVersion int, input *bio.Read
return nil, fmt.Errorf("loadxcoff: %v: %v", pn, fmt.Sprintf(str, args...))
}
- var ldSections []*ldSection
-
f, err := xcoff.NewFile((*xcoffBiobuf)(input))
if err != nil {
return nil, err
}
defer f.Close()
+ ldSections := make([]*ldSection, 0, len(f.Sections))
+
for _, sect := range f.Sections {
//only text, data and bss section
if sect.Type < xcoff.STYP_TEXT || sect.Type > xcoff.STYP_BSS {