]> Cypherpunks repositories - gostls13.git/commit
cmd/compile,runtime: change unsafe.Slice((*T)(nil), 0) to return []T(nil)
authorMatthew Dempsky <mdempsky@google.com>
Fri, 25 Jun 2021 18:07:28 +0000 (11:07 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Mon, 28 Jun 2021 23:31:13 +0000 (23:31 +0000)
commit4bb0847b088eb3eb6122a18a87e1ca7756281dcc
tree9baa7b329f0ec4cfdc2f80a833e14070794fe76c
parent1519271a939ad27da133318dc4bde7e6a41a35b5
cmd/compile,runtime: change unsafe.Slice((*T)(nil), 0) to return []T(nil)

This CL removes the unconditional OCHECKNIL check added in
walkUnsafeSlice by instead passing it as a pointer to
runtime.unsafeslice, and hiding the check behind a `len == 0` check.

While here, this CL also implements checkptr functionality for
unsafe.Slice and disallows use of unsafe.Slice with //go:notinheap
types.

Updates #46742.

Change-Id: I743a445ac124304a4d7322a7fe089c4a21b9a655
Reviewed-on: https://go-review.googlesource.com/c/go/+/331070
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/typecheck/builtin.go
src/cmd/compile/internal/typecheck/builtin/runtime.go
src/cmd/compile/internal/typecheck/func.go
src/cmd/compile/internal/walk/builtin.go
src/runtime/checkptr.go
src/runtime/checkptr_test.go
src/runtime/slice.go
src/runtime/testdata/testprog/checkptr.go
test/unsafebuiltins.go