diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-12-31 14:58:00 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-01-06 17:40:36 +0100 |
| commit | 8e6b9eeb2711705b01229614891c4150c7df261a (patch) | |
| tree | d25c322d2013b2e5d88fea4c83fff5fe60334cf8 /prog/size.go | |
| parent | bb0359b914863d1c662a775b4159834e0fa697ce (diff) | |
pkg/compiler: add bitsize type
This is need for few crypto/xfrm descriptions.
Diffstat (limited to 'prog/size.go')
| -rw-r--r-- | prog/size.go | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/prog/size.go b/prog/size.go index 5dd1310b4..36928a8bc 100644 --- a/prog/size.go +++ b/prog/size.go @@ -13,23 +13,23 @@ func (target *Target) generateSize(arg Arg, lenType *LenType) uint64 { return 0 } - byteSize := lenType.ByteSize - if byteSize == 0 { - byteSize = 1 + bitSize := lenType.BitSize + if bitSize == 0 { + bitSize = 8 } switch arg.Type().(type) { case *VmaType: a := arg.(*PointerArg) - return a.PagesNum * target.PageSize / byteSize + return a.PagesNum * target.PageSize * 8 / bitSize case *ArrayType: a := arg.(*GroupArg) - if lenType.ByteSize != 0 { - return a.Size() / byteSize + if lenType.BitSize != 0 { + return a.Size() * 8 / bitSize } else { return uint64(len(a.Inner)) } default: - return arg.Size() / byteSize + return arg.Size() * 8 / bitSize } } @@ -59,8 +59,8 @@ func (target *Target) assignSizes(args []Arg, parentsMap map[Arg]Arg) { if typ.Buf == "parent" { a.Val = parentsMap[arg].Size() - if typ.ByteSize != 0 { - a.Val /= typ.ByteSize + if typ.BitSize != 0 { + a.Val = a.Val * 8 / typ.BitSize } continue } @@ -69,8 +69,8 @@ func (target *Target) assignSizes(args []Arg, parentsMap map[Arg]Arg) { for parent := parentsMap[arg]; parent != nil; parent = parentsMap[parent] { if typ.Buf == parent.Type().Name() { a.Val = parent.Size() - if typ.ByteSize != 0 { - a.Val /= typ.ByteSize + if typ.BitSize != 0 { + a.Val = a.Val * 8 / typ.BitSize } sizeAssigned = true break @@ -109,7 +109,7 @@ func (target *Target) assignSizesCall(c *Call) { func (r *randGen) mutateSize(arg *ConstArg, parent []Arg) bool { typ := arg.Type().(*LenType) - elemSize := typ.ByteSize + elemSize := typ.BitSize / 8 if elemSize == 0 { elemSize = 1 for _, field := range parent { |
