From e54e9781a4e043b3140b0c908ba4f4e469fd317e Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 26 Apr 2020 14:14:14 +0200 Subject: prog: remove Dir from Type Having Dir is Type is handy, but forces us to duplicate lots of types. E.g. if a struct is referenced as both in and out, then we need to have 2 copies and 2 copies of structs/types it includes. If also prevents us from having the struct type as struct identity (because we can have up to 3 of them). Revert to the old way we used to do it: propagate Dir as we walk syscall arguments. This moves lots of dir passing from pkg/compiler to prog package. Now Arg contains the dir, so once we build the tree, we can use dirs as before. Reduces size of sys/linux/gen/amd64.go from 6058336 to 5661150 (-6.6%). Update #1580 --- sys/windows/init.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'sys/windows') diff --git a/sys/windows/init.go b/sys/windows/init.go index 54d93777f..574123258 100644 --- a/sys/windows/init.go +++ b/sys/windows/init.go @@ -35,10 +35,10 @@ func (arch *arch) makeMmap() []*prog.Call { { Meta: meta, Args: []prog.Arg{ - prog.MakeVmaPointerArg(meta.Args[0], 0, size), - prog.MakeConstArg(meta.Args[1], size), - prog.MakeConstArg(meta.Args[2], arch.MEM_COMMIT|arch.MEM_RESERVE), - prog.MakeConstArg(meta.Args[3], arch.PAGE_EXECUTE_READWRITE), + prog.MakeVmaPointerArg(meta.Args[0], prog.DirIn, 0, size), + prog.MakeConstArg(meta.Args[1], prog.DirIn, size), + prog.MakeConstArg(meta.Args[2], prog.DirIn, arch.MEM_COMMIT|arch.MEM_RESERVE), + prog.MakeConstArg(meta.Args[3], prog.DirIn, arch.PAGE_EXECUTE_READWRITE), }, Ret: prog.MakeReturnArg(meta.Ret), }, -- cgit mrf-deployment