aboutsummaryrefslogtreecommitdiffstats
path: root/prog/size.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-12-31 14:58:00 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-01-06 17:40:36 +0100
commit8e6b9eeb2711705b01229614891c4150c7df261a (patch)
treed25c322d2013b2e5d88fea4c83fff5fe60334cf8 /prog/size.go
parentbb0359b914863d1c662a775b4159834e0fa697ce (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.go24
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 {