return lsym
}
-// Deprecated: Use TypePtrAt instead.
-func TypePtr(t *types.Type) *ir.AddrExpr {
- return TypePtrAt(base.Pos, t)
-}
-
// TypePtrAt returns an expression that evaluates to the
// *runtime._type value for t.
func TypePtrAt(pos src.XPos, t *types.Type) *ir.AddrExpr {
return lsym
}
-// Deprecated: Use ITabAddrAt instead.
-func ITabAddr(typ, iface *types.Type) *ir.AddrExpr {
- return ITabAddrAt(base.Pos, typ, iface)
-}
-
// ITabAddrAt returns an expression that evaluates to the
// *runtime.itab value for concrete type typ implementing interface
// iface.
var itab *ir.AddrExpr
if typ.IsEmptyInterface() {
- itab = reflectdata.TypePtr(val.Type())
+ itab = reflectdata.TypePtrAt(base.Pos, val.Type())
} else {
- itab = reflectdata.ITabAddr(val.Type(), typ)
+ itab = reflectdata.ITabAddrAt(base.Pos, val.Type(), typ)
}
// Create a copy of l to modify while we emit data.
fn = typecheck.SubstArgTypes(fn, elemtype, elemtype)
// else { s = growslice(oldPtr, newLen, oldCap, num, T) }
- call := mkcall1(fn, s.Type(), nif.PtrInit(), oldPtr, newLen, oldCap, num, reflectdata.TypePtr(elemtype))
+ call := mkcall1(fn, s.Type(), nif.PtrInit(), oldPtr, newLen, oldCap, num, reflectdata.TypePtrAt(base.Pos, elemtype))
nif.Else = []ir.Node{ir.NewAssignStmt(base.Pos, s, call)}
nodes.Append(nif)
nn,
ir.NewUnaryExpr(base.Pos, ir.OCAP, s),
l2,
- reflectdata.TypePtr(elemtype))),
+ reflectdata.TypePtrAt(base.Pos, elemtype))),
}
nodes = append(nodes, nif)
newLen,
ir.NewUnaryExpr(base.Pos, ir.OCAP, s),
num,
- reflectdata.TypePtr(s.Type().Elem()))),
+ reflectdata.TypePtrAt(base.Pos, s.Type().Elem()))),
}
l = append(l, nif)
n.X = walkExpr(n.X, init)
// Set up interface type addresses for back end.
if !n.Type().IsInterface() && !n.X.Type().IsEmptyInterface() {
- n.ITab = reflectdata.ITabAddr(n.Type(), n.X.Type())
+ n.ITab = reflectdata.ITabAddrAt(base.Pos, n.Type(), n.X.Type())
}
return n
}