diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2022-01-06 15:07:49 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2022-01-11 16:30:08 +0100 |
| commit | 16e21d13ea26a631e9b3a30c94635b1d565fd78f (patch) | |
| tree | 94bf8af878bd28fd7e43c3850952b53c5ca4c28a /pkg/compiler/gen.go | |
| parent | 993f2038a54bae8d42ae20fc24ecee845b8b9c5d (diff) | |
pkg/compiler: refactor code
Slightly refactor code in preparation for future changes.
No functional changes intended.
Diffstat (limited to 'pkg/compiler/gen.go')
| -rw-r--r-- | pkg/compiler/gen.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/pkg/compiler/gen.go b/pkg/compiler/gen.go index bd487432a..b4ee50a9b 100644 --- a/pkg/compiler/gen.go +++ b/pkg/compiler/gen.go @@ -360,6 +360,10 @@ func (comp *compiler) layoutStructFields(t *prog.StructType, varlen, packed bool byteOffset += f.Size() } } + t.Fields = comp.finalizeStructFields(t, newFields, varlen, structAlign, byteOffset, bitOffset) +} + +func (comp *compiler) finalizeStructFields(t *prog.StructType, fields []prog.Field, varlen bool, structAlign, byteOffset, bitOffset uint64) []prog.Field { if bitOffset != 0 { pad := roundup(bitOffset, 8) / 8 byteOffset += pad @@ -367,7 +371,7 @@ func (comp *compiler) layoutStructFields(t *prog.StructType, varlen, packed bool if i != 0 && t.Fields[i-1].IsBitfield() { setBitfieldTypeSize(t.Fields[i-1].Type, pad) } else { - newFields = append(newFields, genPad(pad)) + fields = append(fields, genPad(pad)) } } @@ -376,9 +380,9 @@ func (comp *compiler) layoutStructFields(t *prog.StructType, varlen, packed bool } if !varlen && structAlign != 0 && byteOffset%structAlign != 0 { pad := structAlign - byteOffset%structAlign - newFields = append(newFields, genPad(pad)) + fields = append(fields, genPad(pad)) } - t.Fields = newFields + return fields } func roundup(v, a uint64) uint64 { |
