diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-17 06:33:41 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-17 06:33:41 +0000 |
commit | b5343013fe2755e0ce86306e17ba316cddcc6e24 (patch) | |
tree | eaa0d2dd05a12f27cd941019fb7010fb9d5cb99a /libgo/runtime/go-copy.c | |
parent | 94c4ae321544428ae014b59e0b3ee19c1431b277 (diff) | |
download | gcc-b5343013fe2755e0ce86306e17ba316cddcc6e24.zip gcc-b5343013fe2755e0ce86306e17ba316cddcc6e24.tar.gz gcc-b5343013fe2755e0ce86306e17ba316cddcc6e24.tar.bz2 |
Avoid always splitting the stack when calling append and copy.
From-SVN: r167970
Diffstat (limited to 'libgo/runtime/go-copy.c')
-rw-r--r-- | libgo/runtime/go-copy.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libgo/runtime/go-copy.c b/libgo/runtime/go-copy.c new file mode 100644 index 0000000..998aeb9 --- /dev/null +++ b/libgo/runtime/go-copy.c @@ -0,0 +1,21 @@ +/* go-append.c -- the go builtin copy function. + + Copyright 2010 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. */ + +#include <stddef.h> + +/* We should be OK if we don't split the stack here, since we are just + calling memmove which shouldn't need much stack. If we don't do + this we will always split the stack, because of memmove. */ + +extern void +__go_copy (void *, void *, size_t) + __attribute__ ((no_split_stack)); + +void +__go_copy (void *a, void *b, size_t len) +{ + __builtin_memmove (a, b, len); +} |