cl: remove checkInstanceNamed

This commit is contained in:
visualfc
2024-09-09 11:36:39 +08:00
parent 3bdb921ee5
commit b7088510c5

View File

@@ -94,8 +94,6 @@ type context struct {
bvals map[ssa.Value]llssa.Expr // block values bvals map[ssa.Value]llssa.Expr // block values
vargs map[*ssa.Alloc][]llssa.Expr // varargs vargs map[*ssa.Alloc][]llssa.Expr // varargs
instNamed map[*types.Named]none // makeInterface named
patches Patches patches Patches
blkInfos []blocks.Info blkInfos []blocks.Info
@@ -547,7 +545,6 @@ func (p *context) compileInstrOrValue(b llssa.Builder, iv instrOrValue, asValue
} }
} }
prog := p.prog prog := p.prog
p.checkInstanceNamed(v.X.Type())
t := prog.Type(v.Type(), llssa.InGo) t := prog.Type(v.Type(), llssa.InGo)
x := p.compileValue(b, v.X) x := p.compileValue(b, v.X)
ret = b.MakeInterface(t, x) ret = b.MakeInterface(t, x)
@@ -618,22 +615,6 @@ func (p *context) compileInstrOrValue(b llssa.Builder, iv instrOrValue, asValue
return ret return ret
} }
func (p *context) checkInstanceNamed(typ types.Type) {
if pt, ok := typ.(*types.Pointer); ok {
typ = pt.Elem()
}
named, ok := typ.(*types.Named)
if !ok || named.TypeArgs() == nil {
return
}
if _, ok := p.instNamed[named]; ok {
return
}
p.instNamed[named] = none{}
p.compileMethods(p.pkg, typ)
p.compileMethods(p.pkg, types.NewPointer(typ))
}
func (p *context) jumpTo(v *ssa.Jump) llssa.BasicBlock { func (p *context) jumpTo(v *ssa.Jump) llssa.BasicBlock {
fn := p.fn fn := p.fn
succs := v.Block().Succs succs := v.Block().Succs
@@ -831,7 +812,6 @@ func NewPackageEx(prog llssa.Program, patches Patches, pkg *ssa.Package, files [
loaded: map[*types.Package]*pkgInfo{ loaded: map[*types.Package]*pkgInfo{
types.Unsafe: {kind: PkgDeclOnly}, // TODO(xsw): PkgNoInit or PkgDeclOnly? types.Unsafe: {kind: PkgDeclOnly}, // TODO(xsw): PkgNoInit or PkgDeclOnly?
}, },
instNamed: make(map[*types.Named]none),
} }
ctx.initPyModule() ctx.initPyModule()
ctx.initFiles(pkgPath, files) ctx.initFiles(pkgPath, files)