1 /*
2  * Copyright (c) 1994 by Xerox Corporation.  All rights reserved.
3  * Copyright (c) 1996 by Silicon Graphics.  All rights reserved.
4  * Copyright (c) 1998 by Fergus Henderson.  All rights reserved.
5  * Copyright (c) 2000-2009 by Hewlett-Packard Development Company.
6  * All rights reserved.
7  * Copyright (c) 2009-2018 Ivan Maidanski
8  *
9  * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
10  * OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
11  *
12  * Permission is hereby granted to use or copy this program
13  * for any purpose,  provided the above notices are retained on all copies.
14  * Permission to modify the code and to distribute modified code is granted,
15  * provided the above notices are retained, and a notice that the code was
16  * modified is included with the above copyright notice.
17  */
18 
19 /* This file could be used for the following purposes:          */
20 /* - get the complete GC as a single link object file (module); */
21 /* - enable more compiler optimizations.                        */
22 
23 /* Tip: to get the highest level of compiler optimizations, the typical */
24 /* compiler options (GCC) to use are:                                   */
25 /* -O3 -fno-strict-aliasing -march=native -Wall -fprofile-generate/use  */
26 
27 /* Warning: GCC for Linux (for C++ clients only): Use -fexceptions both */
28 /* for GC and the client otherwise GC_thread_exit_proc() is not         */
29 /* guaranteed to be invoked (see the comments in pthread_start.c).      */
30 
31 #ifndef __cplusplus
32   /* static is desirable here for more efficient linkage.               */
33   /* TODO: Enable this in case of the compilation as C++ code.          */
34 # define GC_INNER STATIC
35 # define GC_EXTERN GC_INNER
36                 /* STATIC is defined in gcconfig.h. */
37 #endif
38 
39 /* Small files go first... */
40 #include "../backgraph.c"
41 #include "../blacklst.c"
42 #include "../checksums.c"
43 #include "../gcj_mlc.c"
44 #include "../headers.c"
45 #include "../new_hblk.c"
46 #include "../obj_map.c"
47 #include "../ptr_chck.c"
48 
49 #include "gc_inline.h"
50 #include "../allchblk.c"
51 #include "../alloc.c"
52 #include "../dbg_mlc.c"
53 #include "../finalize.c"
54 #include "../fnlz_mlc.c"
55 #include "../malloc.c"
56 #include "../mallocx.c"
57 #include "../mark.c"
58 #include "../mark_rts.c"
59 #include "../reclaim.c"
60 #include "../typd_mlc.c"
61 
62 #include "../misc.c"
63 #include "../os_dep.c"
64 #include "../thread_local_alloc.c"
65 
66 /* Most platform-specific files go here... */
67 #include "../darwin_stop_world.c"
68 #include "../dyn_load.c"
69 #include "../gc_dlopen.c"
70 #include "../mach_dep.c"
71 #include "../pthread_stop_world.c"
72 #include "../pthread_support.c"
73 #include "../specific.c"
74 #include "../win32_threads.c"
75 
76 #ifndef GC_PTHREAD_START_STANDALONE
77 # include "../pthread_start.c"
78 #endif
79 
80 /* Restore pthread calls redirection (if altered in             */
81 /* pthread_stop_world.c, pthread_support.c or win32_threads.c). */
82 /* This is only useful if directly included from application    */
83 /* (instead of linking gc).                                     */
84 #ifndef GC_NO_THREAD_REDIRECTS
85 # define GC_PTHREAD_REDIRECTS_ONLY
86 # include "gc_pthread_redirects.h"
87 #endif
88 
89 /* The files from "extra" folder are not included. */
90