1
0
mirror of https://github.com/golang/go synced 2024-11-23 18:20:04 -07:00

cmd/compile, cmd/link, reflect, runtime: remove type.zero field

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>
This commit is contained in:
Michael Hudson-Doyle 2015-08-21 15:23:57 +12:00 committed by Ian Lance Taylor
parent dc110f245d
commit af78482d6b
4 changed files with 22 additions and 31 deletions

View File

@ -796,11 +796,6 @@ func dcommontype(s *Sym, ot int, t *Type) int {
gcsym, useGCProg, ptrdata := dgcsym(t) 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 // ../../pkg/reflect/type.go:/^type.commonType
// actual type structure // actual type structure
// type commonType struct { // type commonType struct {
@ -816,7 +811,6 @@ func dcommontype(s *Sym, ot int, t *Type) int {
// string *string // string *string
// *extraType // *extraType
// ptrToThis *Type // ptrToThis *Type
// zero unsafe.Pointer
// } // }
ot = duintptr(s, ot, uint64(t.Width)) ot = duintptr(s, ot, uint64(t.Width))
ot = duintptr(s, ot, uint64(ptrdata)) ot = duintptr(s, ot, uint64(ptrdata))
@ -869,7 +863,6 @@ func dcommontype(s *Sym, ot int, t *Type) int {
ot += Widthptr ot += Widthptr
ot = dsymptr(s, ot, sptr, 0) // ptrto type ot = dsymptr(s, ot, sptr, 0) // ptrto type
ot = duintptr(s, ot, 0) // ptr to zero value (unused)
return ot return ot
} }
@ -1052,7 +1045,7 @@ ok:
switch t.Etype { switch t.Etype {
default: default:
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
case TARRAY: case TARRAY:
if t.Bound >= 0 { if t.Bound >= 0 {
@ -1064,7 +1057,7 @@ ok:
t2.Bound = -1 // slice t2.Bound = -1 // slice
s2 := dtypesym(t2) s2 := dtypesym(t2)
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = dsymptr(s, ot, s1, 0) ot = dsymptr(s, ot, s1, 0)
ot = dsymptr(s, ot, s2, 0) ot = dsymptr(s, ot, s2, 0)
ot = duintptr(s, ot, uint64(t.Bound)) ot = duintptr(s, ot, uint64(t.Bound))
@ -1073,7 +1066,7 @@ ok:
s1 := dtypesym(t.Type) s1 := dtypesym(t.Type)
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = dsymptr(s, ot, s1, 0) ot = dsymptr(s, ot, s1, 0)
} }
@ -1082,7 +1075,7 @@ ok:
s1 := dtypesym(t.Type) s1 := dtypesym(t.Type)
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = dsymptr(s, ot, s1, 0) ot = dsymptr(s, ot, s1, 0)
ot = duintptr(s, ot, uint64(t.Chan)) ot = duintptr(s, ot, uint64(t.Chan))
@ -1101,7 +1094,7 @@ ok:
} }
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = duint8(s, ot, uint8(obj.Bool2int(isddd))) ot = duint8(s, ot, uint8(obj.Bool2int(isddd)))
// two slice headers: in and out. // two slice headers: in and out.
@ -1140,7 +1133,7 @@ ok:
// ../../runtime/type.go:/InterfaceType // ../../runtime/type.go:/InterfaceType
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = dsymptr(s, ot, s, ot+Widthptr+2*Widthint) ot = dsymptr(s, ot, s, ot+Widthptr+2*Widthint)
ot = duintxx(s, ot, uint64(n), Widthint) ot = duintxx(s, ot, uint64(n), Widthint)
ot = duintxx(s, ot, uint64(n), Widthint) ot = duintxx(s, ot, uint64(n), Widthint)
@ -1160,7 +1153,7 @@ ok:
s3 := dtypesym(mapbucket(t)) s3 := dtypesym(mapbucket(t))
s4 := dtypesym(hmap(t)) s4 := dtypesym(hmap(t))
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = dsymptr(s, ot, s1, 0) ot = dsymptr(s, ot, s1, 0)
ot = dsymptr(s, ot, s2, 0) ot = dsymptr(s, ot, s2, 0)
ot = dsymptr(s, ot, s3, 0) ot = dsymptr(s, ot, s3, 0)
@ -1196,7 +1189,7 @@ ok:
s1 := dtypesym(t.Type) s1 := dtypesym(t.Type)
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = dsymptr(s, ot, s1, 0) ot = dsymptr(s, ot, s1, 0)
// ../../runtime/type.go:/StructType // ../../runtime/type.go:/StructType
@ -1210,7 +1203,7 @@ ok:
} }
ot = dcommontype(s, ot, t) ot = dcommontype(s, ot, t)
xt = ot - 3*Widthptr xt = ot - 2*Widthptr
ot = dsymptr(s, ot, s, ot+Widthptr+2*Widthint) ot = dsymptr(s, ot, s, ot+Widthptr+2*Widthint)
ot = duintxx(s, ot, uint64(n), Widthint) ot = duintxx(s, ot, uint64(n), Widthint)
ot = duintxx(s, ot, uint64(n), Widthint) ot = duintxx(s, ot, uint64(n), Widthint)

View File

@ -47,7 +47,7 @@ func decode_inuxi(p []byte, sz int) uint64 {
// commonsize returns the size of the common prefix for all type // commonsize returns the size of the common prefix for all type
// structures (runtime._type). // structures (runtime._type).
func commonsize() int { func commonsize() int {
return 8*Thearch.Ptrsize + 8 return 7*Thearch.Ptrsize + 8
} }
// Type.commonType.kind // Type.commonType.kind

View File

@ -247,17 +247,16 @@ const (
type rtype struct { type rtype struct {
size uintptr size uintptr
ptrdata uintptr ptrdata uintptr
hash uint32 // hash of type; avoids computation in hash tables hash uint32 // hash of type; avoids computation in hash tables
_ uint8 // unused/padding _ uint8 // unused/padding
align uint8 // alignment of variable with this type align uint8 // alignment of variable with this type
fieldAlign uint8 // alignment of struct field with this type fieldAlign uint8 // alignment of struct field with this type
kind uint8 // enumeration for C kind uint8 // enumeration for C
alg *typeAlg // algorithm table alg *typeAlg // algorithm table
gcdata *byte // garbage collection data gcdata *byte // garbage collection data
string *string // string form; unnecessary but undeniably useful string *string // string form; unnecessary but undeniably useful
*uncommonType // (relatively) uncommon fields *uncommonType // (relatively) uncommon fields
ptrToThis *rtype // type for pointer to this type, if used in binary or has methods ptrToThis *rtype // type for pointer to this type, if used in binary or has methods
zero unsafe.Pointer // unused
} }
// a copy of runtime.typeAlg // a copy of runtime.typeAlg

View File

@ -8,8 +8,8 @@ package runtime
import "unsafe" import "unsafe"
// Needs to be in sync with ../cmd/internal/ld/decodesym.go:/^func.commonsize, // Needs to be in sync with ../cmd/compile/internal/ld/decodesym.go:/^func.commonsize,
// ../cmd/internal/gc/reflect.go:/^func.dcommontype and // ../cmd/compile/internal/gc/reflect.go:/^func.dcommontype and
// ../reflect/type.go:/^type.rtype. // ../reflect/type.go:/^type.rtype.
type _type struct { type _type struct {
size uintptr size uintptr
@ -27,7 +27,6 @@ type _type struct {
_string *string _string *string
x *uncommontype x *uncommontype
ptrto *_type ptrto *_type
zero *byte // unused
} }
type method struct { type method struct {