From 44a82746a18dad2ebbbaceeabe098ea1d436dd41 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Wed, 5 Nov 2008 11:02:55 -0800 Subject: [PATCH] minor tweak to still non-portable alignment calculation R=rsc DELTA=4 (1 added, 1 deleted, 2 changed) OCL=18528 CL=18533 --- src/lib/reflect/type.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/reflect/type.go b/src/lib/reflect/type.go index 899b02f155..2c05901767 100644 --- a/src/lib/reflect/type.go +++ b/src/lib/reflect/type.go @@ -289,12 +289,13 @@ func (t *StructTypeStruct) Size() int { return t.size } size := 0; + structalignmask := 7; // BUG: we know structs are 8-aligned for i := 0; i < len(t.field); i++ { elemsize := t.field[i].typ.Get().Size(); // pad until at (elemsize mod 8) boundary align := elemsize - 1; - if align > 7 { // BUG: we know structs are 8-aligned - align = 7 + if align > structalignmask { + align = structalignmask } if align > 0 { size = (size + align) & ^align; @@ -302,7 +303,6 @@ func (t *StructTypeStruct) Size() int { t.field[i].offset = size; size += elemsize; } - structalignmask := 7; // TODO: knows that size fits in int32 (also can't use const here) size = (size + structalignmask) & ^(structalignmask); t.size = size; return size; -- 2.50.0