TypeSizes: goProgram
This commit is contained in:
@@ -89,7 +89,7 @@ const (
|
||||
|
||||
func Do(args []string, conf *Config) {
|
||||
prog := llssa.NewProgram(nil)
|
||||
sizes := prog.TypeSizes()
|
||||
sizes := prog.TypeSizes
|
||||
|
||||
flags, patterns, verbose := ParseArgs(args, buildFlags)
|
||||
cfg := &packages.Config{
|
||||
|
||||
@@ -43,7 +43,7 @@ func initRtAndPy(prog llssa.Program, cfg *packages.Config) {
|
||||
load := func() []*packages.Package {
|
||||
if pkgRtAndPy == nil {
|
||||
var err error
|
||||
pkgRtAndPy, err = packages.LoadEx(prog.TypeSizes(), cfg, llssa.PkgRuntime, llssa.PkgPython)
|
||||
pkgRtAndPy, err = packages.LoadEx(prog.TypeSizes, cfg, llssa.PkgRuntime, llssa.PkgPython)
|
||||
check(err)
|
||||
}
|
||||
return pkgRtAndPy
|
||||
@@ -65,7 +65,7 @@ func GenFrom(fileOrPkg string) string {
|
||||
cfg := &packages.Config{
|
||||
Mode: loadSyntax | packages.NeedDeps,
|
||||
}
|
||||
initial, err := packages.LoadEx(prog.TypeSizes(), cfg, fileOrPkg)
|
||||
initial, err := packages.LoadEx(prog.TypeSizes, cfg, fileOrPkg)
|
||||
check(err)
|
||||
|
||||
_, pkgs := ssautil.AllPackages(initial, ssa.SanityCheckFunctions)
|
||||
|
||||
@@ -101,17 +101,14 @@ func refine(ld *loader, response *packages.DriverResponse) ([]*Package, error)
|
||||
// return an error. Clients may need to handle such errors before
|
||||
// proceeding with further analysis. The PrintErrors function is
|
||||
// provided for convenient display of all errors.
|
||||
func LoadEx(sizes types.Sizes, cfg *Config, patterns ...string) ([]*Package, error) {
|
||||
func LoadEx(sizes func(types.Sizes) types.Sizes, cfg *Config, patterns ...string) ([]*Package, error) {
|
||||
ld := newLoader(cfg)
|
||||
response, external, err := defaultDriver(&ld.Config, patterns...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if sizes == nil {
|
||||
sizes = types.SizesFor(response.Compiler, response.Arch)
|
||||
}
|
||||
ld.sizes = sizes
|
||||
ld.sizes = types.SizesFor(response.Compiler, response.Arch)
|
||||
if ld.sizes == nil && ld.Config.Mode&(NeedTypes|NeedTypesSizes|NeedTypesInfo) != 0 {
|
||||
// Type size information is needed but unavailable.
|
||||
if external {
|
||||
@@ -130,6 +127,9 @@ func LoadEx(sizes types.Sizes, cfg *Config, patterns ...string) ([]*Package, err
|
||||
}
|
||||
}
|
||||
|
||||
if sizes != nil {
|
||||
ld.sizes = sizes(ld.sizes)
|
||||
}
|
||||
return refine(ld, response)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user