mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Don't mark all Copy* functions as go:nosplit.
This relaxes the checkescape annotation in the test slightly, but allowing stack splits should not cause issues. Fixes #7309 PiperOrigin-RevId: 436645425
This commit is contained in:
committed by
gVisor bot
parent
235e7e0fff
commit
1e5014d657
@@ -107,7 +107,6 @@ func (g *interfaceGenerator) emitMarshallableForArrayNewtype(n *ast.Ident, a *as
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyOutN implements marshal.Marshallable.CopyOutN.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func (%s *%s) CopyOutN(cc marshal.CopyContext, addr hostarch.Addr, limit int) (int, error) {\n", g.r, g.typeName())
|
||||
g.inIndent(func() {
|
||||
g.emitCastToByteSlice(g.r, "buf", fmt.Sprintf("%s.SizeBytes()", g.r))
|
||||
@@ -119,7 +118,6 @@ func (g *interfaceGenerator) emitMarshallableForArrayNewtype(n *ast.Ident, a *as
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyOut implements marshal.Marshallable.CopyOut.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func (%s *%s) CopyOut(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
g.inIndent(func() {
|
||||
g.emit("return %s.CopyOutN(cc, addr, %s.SizeBytes())\n", g.r, g.r)
|
||||
@@ -127,7 +125,6 @@ func (g *interfaceGenerator) emitMarshallableForArrayNewtype(n *ast.Ident, a *as
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyIn implements marshal.Marshallable.CopyIn.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func (%s *%s) CopyIn(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
g.inIndent(func() {
|
||||
g.emitCastToByteSlice(g.r, "buf", fmt.Sprintf("%s.SizeBytes()", g.r))
|
||||
|
||||
@@ -57,7 +57,6 @@ func (g *interfaceGenerator) emitMarshallableForDynamicType() {
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyOut implements marshal.Marshallable.CopyOut.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.recordUsedImport("marshal")
|
||||
g.recordUsedImport("hostarch")
|
||||
g.emit("func (%s *%s) CopyOut(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
@@ -67,7 +66,6 @@ func (g *interfaceGenerator) emitMarshallableForDynamicType() {
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyIn implements marshal.Marshallable.CopyIn.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.recordUsedImport("marshal")
|
||||
g.recordUsedImport("hostarch")
|
||||
g.emit("func (%s *%s) CopyIn(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
|
||||
@@ -167,7 +167,6 @@ func (g *interfaceGenerator) emitMarshallableForPrimitiveNewtype(nt *ast.Ident)
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyOutN implements marshal.Marshallable.CopyOutN.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func (%s *%s) CopyOutN(cc marshal.CopyContext, addr hostarch.Addr, limit int) (int, error) {\n", g.r, g.typeName())
|
||||
g.inIndent(func() {
|
||||
g.emitCastToByteSlice(g.r, "buf", fmt.Sprintf("%s.SizeBytes()", g.r))
|
||||
@@ -179,7 +178,6 @@ func (g *interfaceGenerator) emitMarshallableForPrimitiveNewtype(nt *ast.Ident)
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyOut implements marshal.Marshallable.CopyOut.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func (%s *%s) CopyOut(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
g.inIndent(func() {
|
||||
g.emit("return %s.CopyOutN(cc, addr, %s.SizeBytes())\n", g.r, g.r)
|
||||
@@ -187,7 +185,6 @@ func (g *interfaceGenerator) emitMarshallableForPrimitiveNewtype(nt *ast.Ident)
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyIn implements marshal.Marshallable.CopyIn.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func (%s *%s) CopyIn(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
g.inIndent(func() {
|
||||
g.emitCastToByteSlice(g.r, "buf", fmt.Sprintf("%s.SizeBytes()", g.r))
|
||||
@@ -254,7 +251,6 @@ func (g *interfaceGenerator) emitMarshallableSliceForPrimitiveNewtype(nt *ast.Id
|
||||
}
|
||||
|
||||
g.emit("// Copy%sIn copies in a slice of %s objects from the task's memory.\n", slice.ident, eltType)
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func Copy%sIn(cc marshal.CopyContext, addr hostarch.Addr, dst []%s) (int, error) {\n", slice.ident, eltType)
|
||||
g.inIndent(func() {
|
||||
g.emit("count := len(dst)\n")
|
||||
@@ -274,7 +270,6 @@ func (g *interfaceGenerator) emitMarshallableSliceForPrimitiveNewtype(nt *ast.Id
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// Copy%sOut copies a slice of %s objects to the task's memory.\n", slice.ident, eltType)
|
||||
g.emit("//go:nosplit\n")
|
||||
g.emit("func Copy%sOut(cc marshal.CopyContext, addr hostarch.Addr, src []%s) (int, error) {\n", slice.ident, eltType)
|
||||
g.inIndent(func() {
|
||||
g.emit("count := len(src)\n")
|
||||
|
||||
@@ -324,7 +324,6 @@ func (g *interfaceGenerator) emitMarshallableForStruct(st *ast.StructType) {
|
||||
})
|
||||
g.emit("}\n\n")
|
||||
g.emit("// CopyOutN implements marshal.Marshallable.CopyOutN.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.recordUsedImport("marshal")
|
||||
g.recordUsedImport("hostarch")
|
||||
g.emit("func (%s *%s) CopyOutN(cc marshal.CopyContext, addr hostarch.Addr, limit int) (int, error) {\n", g.r, g.typeName())
|
||||
@@ -357,7 +356,6 @@ func (g *interfaceGenerator) emitMarshallableForStruct(st *ast.StructType) {
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyOut implements marshal.Marshallable.CopyOut.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.recordUsedImport("marshal")
|
||||
g.recordUsedImport("hostarch")
|
||||
g.emit("func (%s *%s) CopyOut(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
@@ -367,7 +365,6 @@ func (g *interfaceGenerator) emitMarshallableForStruct(st *ast.StructType) {
|
||||
g.emit("}\n\n")
|
||||
|
||||
g.emit("// CopyIn implements marshal.Marshallable.CopyIn.\n")
|
||||
g.emit("//go:nosplit\n")
|
||||
g.recordUsedImport("marshal")
|
||||
g.recordUsedImport("hostarch")
|
||||
g.emit("func (%s *%s) CopyIn(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {\n", g.r, g.typeName())
|
||||
|
||||
@@ -49,14 +49,14 @@ func (t *dummyCopyContext) MarshalUnsafe(addr hostarch.Addr, marshallable marsha
|
||||
t.CopyOutBytes(addr, buf)
|
||||
}
|
||||
|
||||
// +checkescape:all
|
||||
// +checkescape:hard
|
||||
//go:nosplit
|
||||
func doCopyIn(t *dummyCopyContext) {
|
||||
var stat test.Stat
|
||||
stat.CopyIn(t, hostarch.Addr(0xf000ba12))
|
||||
}
|
||||
|
||||
// +checkescape:all
|
||||
// +checkescape:hard
|
||||
//go:nosplit
|
||||
func doCopyOut(t *dummyCopyContext) {
|
||||
var stat test.Stat
|
||||
|
||||
Reference in New Issue
Block a user