]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile, cmd/link, reflect, runtime: remove type.zero field
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Fri, 21 Aug 2015 03:23:57 +0000 (15:23 +1200)
committerIan Lance Taylor <iant@golang.org>
Wed, 26 Aug 2015 00:28:17 +0000 (00:28 +0000)
No longer used after previous hashmap change.

Change-Id: I558470f872281e84a78406132df4e391d077b833
Reviewed-on: https://go-review.googlesource.com/13785
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/compile/internal/gc/reflect.go
src/cmd/link/internal/ld/decodesym.go
src/reflect/type.go
src/runtime/type.go

index 16f0c5b7222fefbbf3231f8f82b3914d249ec7d5..9463379300f5accc2fcbd69d5d817e00a373adf7 100644 (file)
@@ -796,11 +796,6 @@ func dcommontype(s *Sym, ot int, t *Type) int {
 
        gcsym, useGCProg, ptrdata := dgcsym(t)
 
-       // We use size 0 here so we get the pointer to the zero value,
-       // but don't allocate space for the zero value unless we need it.
-       // TODO: how do we get this symbol into bss?  We really want
-       // a read-only bss, but I don't think such a thing exists.
-
        // ../../pkg/reflect/type.go:/^type.commonType
        // actual type structure
        //      type commonType struct {
@@ -816,7 +811,6 @@ func dcommontype(s *Sym, ot int, t *Type) int {
        //              string        *string
        //              *extraType
        //              ptrToThis     *Type
-       //              zero          unsafe.Pointer
        //      }
        ot = duintptr(s, ot, uint64(t.Width))
        ot = duintptr(s, ot, uint64(ptrdata))
@@ -869,7 +863,6 @@ func dcommontype(s *Sym, ot int, t *Type) int {
        ot += Widthptr
 
        ot = dsymptr(s, ot, sptr, 0) // ptrto type
-       ot = duintptr(s, ot, 0)      // ptr to zero value (unused)
        return ot
 }
 
@@ -1052,7 +1045,7 @@ ok:
        switch t.Etype {
        default:
                ot = dcommontype(s, ot, t)
-               xt = ot - 3*Widthptr
+               xt = ot - 2*Widthptr
 
        case TARRAY:
                if t.Bound >= 0 {
@@ -1064,7 +1057,7 @@ ok:
                        t2.Bound = -1 // slice
                        s2 := dtypesym(t2)
                        ot = dcommontype(s, ot, t)
-                       xt = ot - 3*Widthptr
+                       xt = ot - 2*Widthptr
                        ot = dsymptr(s, ot, s1, 0)
                        ot = dsymptr(s, ot, s2, 0)
                        ot = duintptr(s, ot, uint64(t.Bound))
@@ -1073,7 +1066,7 @@ ok:
                        s1 := dtypesym(t.Type)
 
                        ot = dcommontype(s, ot, t)
-                       xt = ot - 3*Widthptr
+                       xt = ot - 2*Widthptr
                        ot = dsymptr(s, ot, s1, 0)
                }
 
@@ -1082,7 +1075,7 @@ ok:
                s1 := dtypesym(t.Type)
 
                ot = dcommontype(s, ot, t)
-               xt = ot - 3*Widthptr
+               xt = ot - 2*Widthptr
                ot = dsymptr(s, ot, s1, 0)
                ot = duintptr(s, ot, uint64(t.Chan))
 
@@ -1101,7 +1094,7 @@ ok:
                }
 
                ot = dcommontype(s, ot, t)
-               xt = ot - 3*Widthptr
+               xt = ot - 2*Widthptr
                ot = duint8(s, ot, uint8(obj.Bool2int(isddd)))
 
                // two slice headers: in and out.
@@ -1140,7 +1133,7 @@ ok:
                // ../../runtime/type.go:/InterfaceType
                ot = dcommontype(s, ot, t)
 
-               xt = ot - 3*Widthptr
+               xt = ot - 2*Widthptr
                ot = dsymptr(s, ot, s, ot+Widthptr+2*Widthint)
                ot = duintxx(s, ot, uint64(n), Widthint)
                ot = duintxx(s, ot, uint64(n), Widthint)
@@ -1160,7 +1153,7 @@ ok:
                s3 := dtypesym(mapbucket(t))
                s4 := dtypesym(hmap(t))
                ot = dcommontype(s, ot, t)
-               xt = ot - 3*Widthptr
+               xt = ot - 2*Widthptr
                ot = dsymptr(s, ot, s1, 0)
                ot = dsymptr(s, ot, s2, 0)
                ot = dsymptr(s, ot, s3, 0)
@@ -1196,7 +1189,7 @@ ok:
                s1 := dtypesym(t.Type)
 
                ot = dcommontype(s, ot, t)
-               xt = ot - 3*Widthptr
+               xt = ot - 2*Widthptr
                ot = dsymptr(s, ot, s1, 0)
 
                // ../../runtime/type.go:/StructType
@@ -1210,7 +1203,7 @@ ok:
                }
 
                ot = dcommontype(s, ot, t)
-               xt = ot - 3*Widthptr
+               xt = ot - 2*Widthptr
                ot = dsymptr(s, ot, s, ot+Widthptr+2*Widthint)
                ot = duintxx(s, ot, uint64(n), Widthint)
                ot = duintxx(s, ot, uint64(n), Widthint)
index c1cf4d7181253062f71aca47aaf340943d98dbcb..6081ecc5c4621399a7160ba198012cb4d5c81bd0 100644 (file)
@@ -47,7 +47,7 @@ func decode_inuxi(p []byte, sz int) uint64 {
 // commonsize returns the size of the common prefix for all type
 // structures (runtime._type).
 func commonsize() int {
-       return 8*Thearch.Ptrsize + 8
+       return 7*Thearch.Ptrsize + 8
 }
 
 // Type.commonType.kind
index d10c2169b0090c5c18e2343512c0b1159382b546..95eaf2c228c621ab55fdc916edb6fac088b49af2 100644 (file)
@@ -247,17 +247,16 @@ const (
 type rtype struct {
        size          uintptr
        ptrdata       uintptr
-       hash          uint32         // hash of type; avoids computation in hash tables
-       _             uint8          // unused/padding
-       align         uint8          // alignment of variable with this type
-       fieldAlign    uint8          // alignment of struct field with this type
-       kind          uint8          // enumeration for C
-       alg           *typeAlg       // algorithm table
-       gcdata        *byte          // garbage collection data
-       string        *string        // string form; unnecessary but undeniably useful
-       *uncommonType                // (relatively) uncommon fields
-       ptrToThis     *rtype         // type for pointer to this type, if used in binary or has methods
-       zero          unsafe.Pointer // unused
+       hash          uint32   // hash of type; avoids computation in hash tables
+       _             uint8    // unused/padding
+       align         uint8    // alignment of variable with this type
+       fieldAlign    uint8    // alignment of struct field with this type
+       kind          uint8    // enumeration for C
+       alg           *typeAlg // algorithm table
+       gcdata        *byte    // garbage collection data
+       string        *string  // string form; unnecessary but undeniably useful
+       *uncommonType          // (relatively) uncommon fields
+       ptrToThis     *rtype   // type for pointer to this type, if used in binary or has methods
 }
 
 // a copy of runtime.typeAlg
index 4b5631aab47586d7946f1b5f7340d441c32d90dc..1321af8d1de94d121ef2a0e7bda47aadbd3732bb 100644 (file)
@@ -8,8 +8,8 @@ package runtime
 
 import "unsafe"
 
-// Needs to be in sync with ../cmd/internal/ld/decodesym.go:/^func.commonsize,
-// ../cmd/internal/gc/reflect.go:/^func.dcommontype and
+// Needs to be in sync with ../cmd/compile/internal/ld/decodesym.go:/^func.commonsize,
+// ../cmd/compile/internal/gc/reflect.go:/^func.dcommontype and
 // ../reflect/type.go:/^type.rtype.
 type _type struct {
        size       uintptr
@@ -27,7 +27,6 @@ type _type struct {
        _string *string
        x       *uncommontype
        ptrto   *_type
-       zero    *byte // unused
 }
 
 type method struct {