aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link/internal
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2023-05-02 01:06:11 +0700
committerShulhan <m.shulhan@gmail.com>2024-01-25 04:01:14 +0700
commit8096b47dd09fcda8712f7a3c07dced5244123a4d (patch)
tree26339e20861f0d89cff1cf3dc763d7b99b4aaee8 /src/cmd/link/internal
parent54386c4a7e68ab281545116220600f670e8f9e14 (diff)
downloadgo-8096b47dd09fcda8712f7a3c07dced5244123a4d.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 0219beeb10..0db830e2c8 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -2528,8 +2528,9 @@ func ldshlibsyms(ctxt *Link, shlib string) {
Errorf(nil, "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 2e8bfcdbed..4fb3465fe8 100644
--- a/src/cmd/link/internal/ld/macho_combine_dwarf.go
+++ b/src/cmd/link/internal/ld/macho_combine_dwarf.go
@@ -256,7 +256,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 d915ab393b..1ddd3a630b 100644
--- a/src/cmd/link/internal/ld/xcoff.go
+++ b/src/cmd/link/internal/ld/xcoff.go
@@ -1355,10 +1355,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 29d162596a..50b472047a 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 {