mirror of
https://github.com/golang/go
synced 2025-05-22 05:48:03 +00:00
unique.Make always copies strings passed into it, so it's safe to not copy byte slices converted to strings either. Handle this just like map accesses with string(b) as keys. This CL only handles unique.Make(string(b)), not nested cases like unique.Make([2]string{string(b1), string(b2)}); this could be done in a followup CL but the map lookup code in walk is sufficiently different than the call handling code that I didn't attempt it. (SSA is much easier). Fixes #71926 Change-Id: Ic2f82f2f91963d563b4ddb1282bd49fc40da8b85 Reviewed-on: https://go-review.googlesource.com/c/go/+/672135 Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
25 lines
531 B
Go
25 lines
531 B
Go
// asmcheck
|
|
|
|
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package codegen
|
|
|
|
import "unique"
|
|
|
|
func BytesToHandle(b []byte) unique.Handle[string] {
|
|
// amd64:-`.*runtime\.slicebytetostring\(`
|
|
return unique.Make(string(b))
|
|
}
|
|
|
|
type Pair struct {
|
|
S1 string
|
|
S2 string
|
|
}
|
|
|
|
func BytesPairToHandle(b1, b2 []byte) unique.Handle[Pair] {
|
|
// TODO: should not copy b1 and b2.
|
|
return unique.Make(Pair{string(b1), string(b2)})
|
|
}
|