]> Cypherpunks.ru repositories - gostls13.git/commitdiff
unsafe: clarify that Alignof returns required alignment
authorIan Lance Taylor <iant@golang.org>
Wed, 27 Jan 2016 01:23:33 +0000 (17:23 -0800)
committerIan Lance Taylor <iant@golang.org>
Wed, 27 Jan 2016 15:19:35 +0000 (15:19 +0000)
Also document the special behavior of Alignof(s.f), and mention the
correspondence between Alignof and reflect.Type.{Align,FieldAlign}.

Change-Id: I6f81047a04c86887f1b1164473225616cae45a26
Reviewed-on: https://go-review.googlesource.com/18949
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
src/unsafe/unsafe.go

index 34ca77965b2612c68fb9f038e60443b764f23660..3c8cd34ae205f818caa7ac7c4dccdb77d2f85a34 100644 (file)
@@ -183,7 +183,12 @@ func Sizeof(x ArbitraryType) uintptr
 // number of bytes between the start of the struct and the start of the field.
 func Offsetof(x ArbitraryType) uintptr
 
-// Alignof takes an expression x of any type and returns the alignment
+// Alignof takes an expression x of any type and returns the required alignment
 // of a hypothetical variable v as if v was declared via var v = x.
-// It is the largest value m such that the address of v is zero mod m.
+// It is the largest value m such that the address of v is always zero mod m.
+// It is the same as the value returned by reflect.TypeOf(x).Align().
+// As a special case, if s has a struct type and f is a field within that
+// struct, then Alignof(s.f) will return the required alignment of a field
+// of that type within a struct.  This case is the same as the value returned
+// by reflect.TypeOf(s.f).FieldAlign().
 func Alignof(x ArbitraryType) uintptr