aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/string.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-09-03 11:10:38 -0400
committerRuss Cox <rsc@golang.org>2014-09-03 11:10:38 -0400
commit0e07f1c99f7ba8f657eaab49bfe106abddbe93a9 (patch)
tree67691fdac58500e723fca4713fc06caa9d843c7f /src/pkg/runtime/string.go
parent2c780a35b986dec270640115fb3f28a9e1affeaf (diff)
downloadgo-0e07f1c99f7ba8f657eaab49bfe106abddbe93a9.tar.xz
runtime: introduce, use funcPC to convert Go func to PC
This removes the ** unsafe hack. Real bug fixed at chan.go:101. LGTM=dave, r, iant R=golang-codereviews, dave, r, iant CC=dvyukov, golang-codereviews, khr https://golang.org/cl/140870044
Diffstat (limited to 'src/pkg/runtime/string.go')
-rw-r--r--src/pkg/runtime/string.go9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/pkg/runtime/string.go b/src/pkg/runtime/string.go
index e9ea926dff..1cefad9671 100644
--- a/src/pkg/runtime/string.go
+++ b/src/pkg/runtime/string.go
@@ -61,11 +61,10 @@ func concatstring5(a [5]string) string {
func slicebytetostring(b []byte) string {
if raceenabled && len(b) > 0 {
- fn := slicebytetostring
racereadrangepc(unsafe.Pointer(&b[0]),
len(b),
getcallerpc(unsafe.Pointer(&b)),
- **(**uintptr)(unsafe.Pointer(&fn)))
+ funcPC(slicebytetostring))
}
s, c := rawstring(len(b))
copy(c, b)
@@ -82,11 +81,10 @@ func slicebytetostringtmp(b []byte) string {
// m is a string-keyed map and k is a []byte.
if raceenabled && len(b) > 0 {
- fn := slicebytetostringtmp
racereadrangepc(unsafe.Pointer(&b[0]),
len(b),
getcallerpc(unsafe.Pointer(&b)),
- **(**uintptr)(unsafe.Pointer(&fn)))
+ funcPC(slicebytetostringtmp))
}
return *(*string)(unsafe.Pointer(&b))
}
@@ -120,11 +118,10 @@ func stringtoslicerune(s string) []rune {
func slicerunetostring(a []rune) string {
if raceenabled && len(a) > 0 {
- fn := slicerunetostring
racereadrangepc(unsafe.Pointer(&a[0]),
len(a)*int(unsafe.Sizeof(a[0])),
getcallerpc(unsafe.Pointer(&a)),
- **(**uintptr)(unsafe.Pointer(&fn)))
+ funcPC(slicerunetostring))
}
var dum [4]byte
size1 := 0