summaryrefslogtreecommitdiff
path: root/src/reflect/type.go
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2014-12-01 07:52:09 -0800
committerKeith Randall <khr@golang.org>2014-12-01 07:52:09 -0800
commitae637f5f9923cb1b798695597cdd0d0f4dea9464 (patch)
treeda207f9e6285ae49659c97c96e9d41c63102f13c /src/reflect/type.go
parent66be71687665f9511c060208dacf6e56adcd3bce (diff)
downloadgo-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.go4
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)