From f887b0490140a0c80dd49d2c549ac57ac2adc2b9 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 15 Apr 2024 12:36:25 +0200 Subject: prog: don't pad data in exec encoding With leb128 ints it does not make any sense. Reduces exec sizes a bit more: - exec sizes: 10%:597 50%:1438 90%:7145 + exec sizes: 10%:584 50%:1423 90%:7076 --- prog/encodingexec.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'prog/encodingexec.go') diff --git a/prog/encodingexec.go b/prog/encodingexec.go index 2c13d452c..8e12d3491 100644 --- a/prog/encodingexec.go +++ b/prog/encodingexec.go @@ -283,7 +283,7 @@ func (w *execContext) writeArg(arg Arg) { case *DataArg: data := a.Data() if len(data) == 0 { - return + panic("writing data arg with 0 size") } w.write(execArgData) flags := uint64(len(data)) @@ -291,16 +291,11 @@ func (w *execContext) writeArg(arg Arg) { flags |= execArgDataReadable } w.write(flags) - padded := len(data) - if pad := 8 - len(data)%8; pad != 8 { - padded += pad - } - if len(w.buf) < padded { + if len(w.buf) < len(data) { w.eof = true } else { - copy(w.buf, data) - copy(w.buf[len(data):], make([]byte, 8)) - w.buf = w.buf[padded:] + n := copy(w.buf, data) + w.buf = w.buf[n:] } case *UnionArg: w.writeArg(a.Option) -- cgit mrf-deployment