llgo/ssa: b.NewPyModVar, b.ImportPyMod, PyObjectPtr, PyObjectPtrPtr

This commit is contained in:
xushiwei
2024-05-11 15:07:50 +08:00
parent 00222c7808
commit 97cb312386
7 changed files with 139 additions and 23 deletions

View File

@@ -120,18 +120,31 @@ func Do(args []string, conf *Config) {
cl.SetDebug(cl.DbgFlagAll)
}
var needRt bool
var rt []*packages.Package
prog := llssa.NewProgram(nil)
load := func() []*packages.Package {
if rt == nil {
var err error
rt, err = packages.Load(cfg, llssa.PkgRuntime, llssa.PkgPython)
check(err)
}
return rt
}
prog.SetRuntime(func() *types.Package {
rt, err = packages.Load(cfg, llssa.PkgRuntime)
check(err)
needRt = true
rt := load()
return rt[0].Types
})
prog.SetPython(func() *types.Package {
rt := load()
return rt[1].Types
})
pkgs := buildAllPkgs(prog, initial, mode, verbose)
var runtimeFiles []string
if rt != nil {
if needRt {
runtimeFiles = allLinkFiles(rt)
}
if mode != ModeBuild {