Skip to content

Commit

Permalink
Revert "runtime: use bytes.IndexByte in findnull"
Browse files Browse the repository at this point in the history
This reverts commit 7365fac.

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 <[email protected]>
  • Loading branch information
bradfitz committed Mar 1, 2018
1 parent f1fc9da commit 1fadbc1
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 20 deletions.
14 changes: 0 additions & 14 deletions misc/cgo/test/basic.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ struct S {
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; }
Expand Down Expand Up @@ -151,18 +149,6 @@ func benchCgoCall(b *testing.B) {
}
}

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)
Expand Down
3 changes: 1 addition & 2 deletions misc/cgo/test/cgo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,4 @@ func Test6907Go(t *testing.T) { test6907Go(t) }
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) }
1 change: 0 additions & 1 deletion src/runtime/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ func printany(i interface{}) {
// 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
Expand Down
9 changes: 6 additions & 3 deletions src/runtime/string.go
Original file line number Diff line number Diff line change
Expand Up @@ -407,9 +407,12 @@ func findnull(s *byte) int {
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 {
Expand Down

0 comments on commit 1fadbc1

Please sign in to comment.