aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/go-string-to-int-array.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2016-10-12 18:17:52 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2016-10-12 18:17:52 +0000
commit1ad16c52842e0513b96a0e02d2a431dc0f338c5d (patch)
treef6eaddf65fba9d031ed9b3008a3c3ba4ff0ebd0b /libgo/runtime/go-string-to-int-array.c
parent2ec69f566076547b618447ba5531260c25abed3e (diff)
downloadgcc-1ad16c52842e0513b96a0e02d2a431dc0f338c5d.zip
gcc-1ad16c52842e0513b96a0e02d2a431dc0f338c5d.tar.gz
gcc-1ad16c52842e0513b96a0e02d2a431dc0f338c5d.tar.bz2
compiler, runtime: copy string code from Go 1.7
Add compiler support for turning concatenating strings into a call to a runtime function that takes the appropriate number of arguments. Rename some local variables in mgc0.c to avoid macros that the new rune.go causes to appear in runtime.inc. Reviewed-on: https://go-review.googlesource.com/30827 From-SVN: r241074
Diffstat (limited to 'libgo/runtime/go-string-to-int-array.c')
-rw-r--r--libgo/runtime/go-string-to-int-array.c56
1 files changed, 0 insertions, 56 deletions
diff --git a/libgo/runtime/go-string-to-int-array.c b/libgo/runtime/go-string-to-int-array.c
deleted file mode 100644
index 5546889..0000000
--- a/libgo/runtime/go-string-to-int-array.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* go-string-to-int-array.c -- convert a string to an array of ints in Go.
-
- 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 "runtime.h"
-#include "go-alloc.h"
-#include "go-string.h"
-#include "array.h"
-#include "arch.h"
-#include "malloc.h"
-
-struct __go_open_array
-__go_string_to_int_array (String str)
-{
- size_t c;
- const unsigned char *p;
- const unsigned char *pend;
- uintptr mem;
- uint32_t *data;
- uint32_t *pd;
- struct __go_open_array ret;
-
- c = 0;
- p = str.str;
- pend = p + str.len;
- while (p < pend)
- {
- int rune;
-
- ++c;
- p += __go_get_rune (p, pend - p, &rune);
- }
-
- if (c > MaxMem / sizeof (uint32_t))
- runtime_throw ("out of memory");
-
- mem = runtime_roundupsize (c * sizeof (uint32_t));
- data = (uint32_t *) runtime_mallocgc (mem, 0, FlagNoScan | FlagNoZero);
- p = str.str;
- pd = data;
- while (p < pend)
- {
- int rune;
-
- p += __go_get_rune (p, pend - p, &rune);
- *pd++ = rune;
- }
- if (mem > (uintptr) c * sizeof (uint32_t))
- __builtin_memset (data + c, 0, mem - (uintptr) c * sizeof (uint32_t));
- ret.__values = (void *) data;
- ret.__count = c;
- ret.__capacity = (intgo) (mem / sizeof (uint32_t));
- return ret;
-}