]> Cypherpunks repositories - gostls13.git/commitdiff
use unsafe.Sizeof
authorRob Pike <r@golang.org>
Sun, 8 Feb 2009 18:16:32 +0000 (10:16 -0800)
committerRob Pike <r@golang.org>
Sun, 8 Feb 2009 18:16:32 +0000 (10:16 -0800)
R=rsc
DELTA=9  (3 added, 3 deleted, 3 changed)
OCL=24640
CL=24653

src/lib/reflect/type.go

index 1dc95104d15c4f2b8e928a861e8c6907cefe3222..b02ad32d7aaed345c765e34d9794f2b357de20d2 100644 (file)
@@ -10,6 +10,7 @@ package reflect
 import (
        "utf8";
        "sync";
+       "unsafe";
 )
 
 type Type interface
@@ -47,9 +48,11 @@ const (
        UintptrKind;
 )
 
-// Int is guaranteed large enough to store a size.
-var ptrsize int
-var interfacesize int
+var tmp_interface interface{}  // used just to compute sizes of these constants
+const (
+       ptrsize = unsafe.Sizeof(&tmp_interface);
+       interfacesize = unsafe.Sizeof(tmp_interface);
+)
 
 var missingString = "$missing$"        // syntactic name for undefined type names
 var dotDotDotString = "..."
@@ -401,9 +404,6 @@ func unlock() {
 }
 
 func init() {
-       ptrsize = 8;    // TODO: compute this
-       interfacesize = 2*ptrsize;      // TODO: compute this
-
        lock(); // not necessary because of init ordering but be safe.
 
        types = make(map[string] Type);