build: use unsafe.Slice to reduce memory usage of overlayFiles

This commit is contained in:
xushiwei
2024-06-21 12:43:17 +08:00
parent 67014ae4f8
commit 10a47cdbbb

View File

@@ -30,6 +30,7 @@ import (
"path/filepath"
"runtime"
"strings"
"unsafe"
"golang.org/x/tools/go/ssa"
@@ -111,10 +112,6 @@ const (
loadSyntax = loadTypes | packages.NeedSyntax | packages.NeedTypesInfo
)
var overlayFiles = map[string]string{
"math/exp_amd64.go": "package math;",
}
func Do(args []string, conf *Config) {
flags, patterns, verbose := ParseArgs(args, buildFlags)
cfg := &packages.Config{
@@ -126,7 +123,8 @@ func Do(args []string, conf *Config) {
if len(overlayFiles) > 0 {
cfg.Overlay = make(map[string][]byte)
for file, src := range overlayFiles {
cfg.Overlay[filepath.Join(runtime.GOROOT(), "src", file)] = []byte(src)
overlay := unsafe.Slice(unsafe.StringData(src), len(src))
cfg.Overlay[filepath.Join(runtime.GOROOT(), "src", file)] = overlay
}
}
@@ -765,6 +763,10 @@ var hasAltPkg = map[string]none{
"runtime": {},
}
var overlayFiles = map[string]string{
"math/exp_amd64.go": "package math;",
}
func check(err error) {
if err != nil {
panic(err)