From afe402d20af0d54d4e0baeb9e70e668e2a26f188 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 5 May 2018 10:25:45 +0200 Subject: prog: make c.Ret optional No reason to allocate return value if there is no return type. c.Ret == nil is the reasonable indication that this is a "void" call. --- prog/encoding.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'prog/encoding.go') diff --git a/prog/encoding.go b/prog/encoding.go index 86577cd12..f0d96da95 100644 --- a/prog/encoding.go +++ b/prog/encoding.go @@ -33,7 +33,7 @@ func (p *Prog) Serialize() []byte { vars := make(map[*ResultArg]int) varSeq := 0 for _, c := range p.Calls { - if len(c.Ret.uses) != 0 { + if c.Ret != nil && len(c.Ret.uses) != 0 { fmt.Fprintf(buf, "r%v = ", varSeq) vars[c.Ret] = varSeq varSeq++ @@ -206,7 +206,7 @@ func (target *Target) Deserialize(data []byte) (prog *Prog, err error) { if len(c.Args) != len(meta.Args) { return nil, fmt.Errorf("wrong call arg count: %v, want %v", len(c.Args), len(meta.Args)) } - if r != "" { + if r != "" && c.Ret != nil { vars[r] = c.Ret } } -- cgit mrf-deployment