diff options
author | Keith Randall <khr@golang.org> | 2014-12-01 07:52:09 -0800 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2014-12-01 07:52:09 -0800 |
commit | ae637f5f9923cb1b798695597cdd0d0f4dea9464 (patch) | |
tree | da207f9e6285ae49659c97c96e9d41c63102f13c /src/reflect/type.go | |
parent | 66be71687665f9511c060208dacf6e56adcd3bce (diff) | |
download | go-ae637f5f9923cb1b798695597cdd0d0f4dea9464.tar.gz |
reflect: Fix reflect.funcLayout. The GC bitmap has two bits per
pointer, not one.
Fixes issue 9179
LGTM=iant, rsc
R=golang-codereviews, iant, rsc
CC=golang-codereviews
https://codereview.appspot.com/182160043
Diffstat (limited to 'src/reflect/type.go')
-rw-r--r-- | src/reflect/type.go | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/reflect/type.go b/src/reflect/type.go index 572e611fa..c0ddfcad0 100644 --- a/src/reflect/type.go +++ b/src/reflect/type.go @@ -1894,14 +1894,14 @@ func addTypeBits(bv *bitVector, offset *uintptr, t *rtype) { switch Kind(t.kind & kindMask) { case Chan, Func, Map, Ptr, Slice, String, UnsafePointer: // 1 pointer at start of representation - for bv.n < uint32(*offset/uintptr(ptrSize)) { + for bv.n < 2*uint32(*offset/uintptr(ptrSize)) { bv.append2(bitsScalar) } bv.append2(bitsPointer) case Interface: // 2 pointers - for bv.n < uint32(*offset/uintptr(ptrSize)) { + for bv.n < 2*uint32(*offset/uintptr(ptrSize)) { bv.append2(bitsScalar) } bv.append2(bitsPointer) |