]> Cypherpunks repositories - gostls13.git/commit
internal/unsafeheader: consolidate stringHeader and sliceHeader declarations into...
authorBryan C. Mills <bcmills@google.com>
Thu, 30 Apr 2020 21:05:59 +0000 (17:05 -0400)
committerBryan C. Mills <bcmills@google.com>
Fri, 1 May 2020 02:31:29 +0000 (02:31 +0000)
commitda382a3978d3db2380c7e9a69207545562dfd727
treed8105be3c7281e8bdf1c475f7c7866fe21aac806
parent4c78d54fdd9ffc81c15ffc3c4a2946f89d4fca22
internal/unsafeheader: consolidate stringHeader and sliceHeader declarations into an internal package

The new package "internal/unsafeheader" depends only on "unsafe", and
provides declarations equivalent to reflect.StringHeader and
reflect.SliceHeader but with Data fields of the proper unsafe.Pointer
type (instead of uintptr).

Unlike the types it replaces, the "internal/unsafeheader" package has
a regression test to ensure that its header types remain equivalent to
the declarations provided by the "reflect" package.

Since "internal/unsafeheader" has almost no dependencies, it can be
used in other low-level packages such as "syscall" and "reflect".

This change is based on the corresponding x/sys change in CL 231177.

Fixes #37805
Updates #19367

Change-Id: I7a6d93ef8dd6e235bcab94e7c47270aad047af31
Reviewed-on: https://go-review.googlesource.com/c/go/+/231223
Reviewed-by: Ian Lance Taylor <iant@golang.org>
13 files changed:
src/cmd/dist/buildtool.go
src/cmd/internal/goobj2/objfile.go
src/cmd/oldlink/internal/objfile/objfile.go
src/go/build/deps_test.go
src/internal/reflectlite/swapper.go
src/internal/reflectlite/type.go
src/internal/reflectlite/value.go
src/internal/unsafeheader/unsafeheader.go [new file with mode: 0644]
src/internal/unsafeheader/unsafeheader_test.go [new file with mode: 0644]
src/reflect/swapper.go
src/reflect/type.go
src/reflect/value.go
src/syscall/syscall_unix.go