1 /* indexbyte.c -- implement bytes.IndexByte for Go.
3 Copyright 2009 The Go Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style
5 license that can be found in the LICENSE file. */
11 /* This is in C so that the compiler can optimize it appropriately.
12 We deliberately don't split the stack in case it does call the
13 library function, which shouldn't need much stack space. */
15 int IndexByte (struct __go_open_array
, char)
16 asm ("libgo_bytes.bytes.IndexByte")
17 __attribute__ ((no_split_stack
));
20 IndexByte (struct __go_open_array s
, char b
)
24 p
= __builtin_memchr (s
.__values
, b
, s
.__count
);
27 return p
- (char *) s
.__values
;