llgo/ssa: refactor python related names (PyXXX)
This commit is contained in:
@@ -226,5 +226,5 @@ func TestErrVarOf(t *testing.T) {
|
||||
}
|
||||
ssaPkg := &ssa.Package{Pkg: pkgTypes}
|
||||
g := &ssa.Global{Pkg: ssaPkg}
|
||||
ctx.varOf(g)
|
||||
ctx.varOf(nil, g)
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ func (p *context) compileBlock(b llssa.Builder, block *ssa.BasicBlock, n int, do
|
||||
b.SetBlockEx(ret, llssa.AfterInit)
|
||||
for _, modName := range modNames {
|
||||
objs := mods[modName]
|
||||
b.LoadPyModSyms(modName, objs...)
|
||||
b.PyLoadModSyms(modName, objs...)
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -395,13 +395,13 @@ func (p *context) compileBlock(b llssa.Builder, block *ssa.BasicBlock, n int, do
|
||||
jumpTo := p.jumpTo(jump)
|
||||
modPath := p.pyMod
|
||||
modName := pysymPrefix + modPath
|
||||
modPtr := pkg.NewPyModVar(modName, true).Expr
|
||||
modPtr := pkg.PyNewModVar(modName, true).Expr
|
||||
mod := b.Load(modPtr)
|
||||
cond := b.BinOp(token.NEQ, mod, prog.Null(mod.Type))
|
||||
newBlk := p.fn.MakeBlock()
|
||||
b.If(cond, jumpTo, newBlk)
|
||||
b.SetBlock(newBlk)
|
||||
b.Store(modPtr, b.ImportPyMod(modPath))
|
||||
b.Store(modPtr, b.PyImportMod(modPath))
|
||||
b.Jump(jumpTo)
|
||||
}
|
||||
return ret
|
||||
@@ -831,7 +831,7 @@ func (p *context) compileValue(b llssa.Builder, v ssa.Value) llssa.Expr {
|
||||
}
|
||||
return pyFn.Expr
|
||||
case *ssa.Global:
|
||||
return p.varOf(v)
|
||||
return p.varOf(b, v)
|
||||
case *ssa.Const:
|
||||
t := types.Default(v.Type())
|
||||
return b.Const(v.Value, p.prog.Type(t, llssa.InGo))
|
||||
|
||||
@@ -373,12 +373,15 @@ func (p *context) varName(pkg *types.Package, v *ssa.Global) (vName string, vtyp
|
||||
return name, goVar
|
||||
}
|
||||
|
||||
func (p *context) varOf(v *ssa.Global) llssa.Expr {
|
||||
func (p *context) varOf(b llssa.Builder, v *ssa.Global) llssa.Expr {
|
||||
pkgTypes := p.ensureLoaded(v.Pkg.Pkg)
|
||||
pkg := p.pkg
|
||||
name, vtype := p.varName(pkgTypes, v)
|
||||
if vtype == pyVar {
|
||||
panic("todo")
|
||||
if kind, mod := pkgKindByScope(pkgTypes.Scope()); kind == PkgPyModule {
|
||||
return b.PyLoadVar(pysymPrefix+mod, name)
|
||||
}
|
||||
panic("unreachable")
|
||||
}
|
||||
ret := pkg.VarOf(name)
|
||||
if ret == nil {
|
||||
|
||||
Reference in New Issue
Block a user