Add Go frontend, libgo library, and Go testsuite.
[platform/upstream/gcc.git] / libgo / runtime / go-unsafe-new.c
1 /* go-unsafe-new.c -- unsafe.New function for Go.
2
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.  */
6
7 #include "go-alloc.h"
8 #include "go-type.h"
9 #include "interface.h"
10
11 /* Implement unsafe.New.  */
12
13 void *New (struct __go_empty_interface type) asm ("libgo_unsafe.unsafe.New");
14
15 /* The dynamic type of the argument will be a pointer to a type
16    descriptor.  */
17
18 void *
19 New (struct __go_empty_interface type)
20 {
21   const struct __go_type_descriptor *descriptor;
22
23   /* FIXME: We should check __type_descriptor to verify that this is
24      really a type descriptor.  */
25   descriptor = (const struct __go_type_descriptor *) type.__object;
26   return __go_alloc (descriptor->__size);
27 }