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