Merge pull request #1044 from visualfc/wasmsizes
compiler: check wasm sizes
This commit is contained in:
@@ -153,7 +153,12 @@ func Do(args []string, conf *Config) ([]Package, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
prog := llssa.NewProgram(target)
|
prog := llssa.NewProgram(target)
|
||||||
sizes := prog.TypeSizes
|
sizes := func(sizes types.Sizes, compiler, arch string) types.Sizes {
|
||||||
|
if arch == "wasm" && os.Getenv("LLGO_WASM32") == "1" {
|
||||||
|
sizes = &types.StdSizes{4, 4}
|
||||||
|
}
|
||||||
|
return prog.TypeSizes(sizes)
|
||||||
|
}
|
||||||
dedup := packages.NewDeduper()
|
dedup := packages.NewDeduper()
|
||||||
dedup.SetPreload(func(pkg *types.Package, files []*ast.File) {
|
dedup.SetPreload(func(pkg *types.Package, files []*ast.File) {
|
||||||
if llruntime.SkipToBuild(pkg.Path()) {
|
if llruntime.SkipToBuild(pkg.Path()) {
|
||||||
|
|||||||
@@ -705,7 +705,7 @@ func refineEx(dedup Deduper, ld *loader, response *packages.DriverResponse) ([]*
|
|||||||
// return an error. Clients may need to handle such errors before
|
// return an error. Clients may need to handle such errors before
|
||||||
// proceeding with further analysis. The PrintErrors function is
|
// proceeding with further analysis. The PrintErrors function is
|
||||||
// provided for convenient display of all errors.
|
// provided for convenient display of all errors.
|
||||||
func LoadEx(dedup Deduper, sizes func(types.Sizes) types.Sizes, cfg *Config, patterns ...string) ([]*Package, error) {
|
func LoadEx(dedup Deduper, sizes func(sizes types.Sizes, compiler, arch string) types.Sizes, cfg *Config, patterns ...string) ([]*Package, error) {
|
||||||
ld := newLoader(cfg)
|
ld := newLoader(cfg)
|
||||||
response, external, err := defaultDriver(&ld.Config, patterns...)
|
response, external, err := defaultDriver(&ld.Config, patterns...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -732,7 +732,7 @@ func LoadEx(dedup Deduper, sizes func(types.Sizes) types.Sizes, cfg *Config, pat
|
|||||||
}
|
}
|
||||||
|
|
||||||
if sizes != nil {
|
if sizes != nil {
|
||||||
ld.sizes = sizes(ld.sizes)
|
ld.sizes = sizes(ld.sizes, response.Compiler, response.Arch)
|
||||||
}
|
}
|
||||||
return refineEx(dedup, ld, response)
|
return refineEx(dedup, ld, response)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user