This reverts commit
7365fac2dbd01960268ee051ed03d961258d4ef4.
Reason for revert: breaks the build on some architectures, reading unmapped pages?
Change-Id: I3a8c02dc0b649269faacea79ecd8213defa97c54
Reviewed-on: https://go-review.googlesource.com/97995
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
int x;
};
-const char *cstr = "abcefghijklmnopqrstuvwxyzABCEFGHIJKLMNOPQRSTUVWXYZ1234567890";
-
extern enum E myConstFunc(struct S* const ctx, int const id, struct S **const filter);
enum E myConstFunc(struct S *const ctx, int const id, struct S **const filter) { return 0; }
}
}
-var sinkString string
-
-func benchGoString(b *testing.B) {
- for i := 0; i < b.N; i++ {
- sinkString = C.GoString(C.cstr)
- }
- const want = "abcefghijklmnopqrstuvwxyzABCEFGHIJKLMNOPQRSTUVWXYZ1234567890"
- if sinkString != want {
- b.Fatalf("%q != %q", sinkString, want)
- }
-}
-
// Issue 2470.
func testUnsignedInt(t *testing.T) {
a := (int64)(C.UINT32VAL)
func Test21897(t *testing.T) { test21897(t) }
func Test22906(t *testing.T) { test22906(t) }
-func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }
-func BenchmarkGoString(b *testing.B) { benchGoString(b) }
+func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }
// strings.IndexByte is implemented in runtime/asm_$goarch.s
// but amusingly we need go:linkname to get access to it here in the runtime.
//go:linkname stringsIndexByte strings.IndexByte
-//go:noescape
func stringsIndexByte(s string, c byte) int
// panicwrap generates a panic for a call to a wrapped value method
if s == nil {
return 0
}
- ss := stringStruct{unsafe.Pointer(s), maxAlloc/2 - 1}
- t := *(*string)(unsafe.Pointer(&ss))
- return stringsIndexByte(t, 0)
+ p := (*[maxAlloc/2 - 1]byte)(unsafe.Pointer(s))
+ l := 0
+ for p[l] != 0 {
+ l++
+ }
+ return l
}
func findnullw(s *uint16) int {