]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: remove overflow pointer padding for nacl
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Sat, 19 Oct 2019 16:31:52 +0000 (23:31 +0700)
committerKeith Randall <khr@golang.org>
Mon, 21 Oct 2019 19:04:47 +0000 (19:04 +0000)
CL 200077 removed nacl bits in the toolchain, but it misses the code to
add pointer overflow padding, which is specific for nacl.

This CL removes that part.

Passes toolstash-check.

Updates #30439

Change-Id: I1e77cade9f31690e16cd13d3445a98b500671252
Reviewed-on: https://go-review.googlesource.com/c/go/+/202159
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/gc/reflect.go

index 9e3dca25c81e4e36e00bb7c10f11cc8dc52a2760..e34ed7311c7c4f8dae60d870f5a57513ef16d31f 100644 (file)
@@ -112,27 +112,6 @@ func bmap(t *types.Type) *types.Type {
        elems := makefield("elems", arr)
        field = append(field, elems)
 
-       // Make sure the overflow pointer is the last memory in the struct,
-       // because the runtime assumes it can use size-ptrSize as the
-       // offset of the overflow pointer. We double-check that property
-       // below once the offsets and size are computed.
-       //
-       // BUCKETSIZE is 8, so the struct is aligned to 64 bits to this point.
-       // On 32-bit systems, the max alignment is 32-bit, and the
-       // overflow pointer will add another 32-bit field, and the struct
-       // will end with no padding.
-       // On 64-bit systems, the max alignment is 64-bit, and the
-       // overflow pointer will add another 64-bit field, and the struct
-       // will end with no padding.
-       // On nacl/amd64p32, however, the max alignment is 64-bit,
-       // but the overflow pointer will add only a 32-bit field,
-       // so if the struct needs 64-bit padding (because a key or elem does)
-       // then it would end with an extra 32-bit padding field.
-       // Preempt that by emitting the padding here.
-       if int(elemtype.Align) > Widthptr || int(keytype.Align) > Widthptr {
-               field = append(field, makefield("pad", types.Types[TUINTPTR]))
-       }
-
        // If keys and elems have no pointers, the map implementation
        // can keep a list of overflow pointers on the side so that
        // buckets can be marked as having no pointers.
@@ -196,7 +175,7 @@ func bmap(t *types.Type) *types.Type {
        }
 
        // Double-check that overflow field is final memory in struct,
-       // with no padding at end. See comment above.
+       // with no padding at end.
        if overflow.Offset != bucket.Width-int64(Widthptr) {
                Fatalf("bad offset of overflow in bmap for %v", t)
        }