1 #include "nitc__nith.main.0.h"
2 struct nitni_global_ref_list_t
*nitni_global_ref_list
;
3 void initialize_nitni_global_refs() {
4 nitni_global_ref_list
= (struct nitni_global_ref_list_t
*)nit_alloc(sizeof(struct nitni_global_ref_list_t
));
5 nitni_global_ref_list
->head
= NULL
;
6 nitni_global_ref_list
->tail
= NULL
;
9 void nitni_global_ref_add( struct nitni_ref
*ref
) {
10 if ( nitni_global_ref_list
->head
== NULL
) {
11 nitni_global_ref_list
->head
= ref
;
14 nitni_global_ref_list
->tail
->next
= ref
;
15 ref
->prev
= nitni_global_ref_list
->tail
;
17 nitni_global_ref_list
->tail
= ref
;
22 void nitni_global_ref_remove( struct nitni_ref
*ref
) {
23 if ( ref
->prev
== NULL
) {
24 nitni_global_ref_list
->head
= ref
->next
;
26 ref
->prev
->next
= ref
->next
;
29 if ( ref
->next
== NULL
) {
30 nitni_global_ref_list
->tail
= ref
->prev
;
32 ref
->next
->prev
= ref
->prev
;
36 extern void nitni_global_ref_incr( struct nitni_ref
*ref
) {
37 if ( ref
->count
== 0 ) /* not registered */
40 nitni_global_ref_add( ref
);
46 extern void nitni_global_ref_decr( struct nitni_ref
*ref
) {
47 if ( ref
->count
== 1 ) /* was last reference */
49 /* remove from list */
50 nitni_global_ref_remove( ref
);
58 #define UNW_LOCAL_ONLY
59 #include <libunwind.h>
60 #include "c_functions_hash.h"
65 static void show_backtrace(void) {
67 char* opt
= getenv("NIT_NO_STACK");
72 char* procname
= malloc(sizeof(char) * 100);
74 unw_init_local(&cursor
, &uc
);
75 PRINT_ERROR("-------------------------------------------------\n");
76 PRINT_ERROR("-- Stack Trace ------------------------------\n");
77 PRINT_ERROR("-------------------------------------------------\n");
78 while (unw_step(&cursor
) > 0) {
79 unw_get_proc_name(&cursor
, procname
, 100, &ip
);
80 const char* recv
= get_nit_name(procname
, strlen(procname
));
82 PRINT_ERROR("` %s\n", recv
);
84 PRINT_ERROR("` %s\n", procname
);
87 PRINT_ERROR("-------------------------------------------------\n");
90 #endif /* NO_STACKTRACE */
92 void sig_handler(int signo
){
93 PRINT_ERROR("Caught signal : %s\n", strsignal(signo
));
95 signal(signo
, SIG_DFL
);
96 kill(getpid(), signo
);
98 void fatal_exit(int status
) {
102 int main(int argc
, char** argv
) {
103 val
* var
/* : Sys */;
105 signal(SIGABRT
, sig_handler
);
106 signal(SIGFPE
, sig_handler
);
107 signal(SIGILL
, sig_handler
);
108 signal(SIGINT
, sig_handler
);
109 signal(SIGTERM
, sig_handler
);
110 signal(SIGSEGV
, sig_handler
);
112 signal(SIGPIPE
, SIG_IGN
);
113 glob_argc
= argc
; glob_argv
= argv
;
114 initialize_gc_option();
115 initialize_nitni_global_refs();
116 var
= NEW_core__Sys(&type_core__Sys
);
119 ((void(*)(val
* self
))(var
->class->vft
[COLOR_core__kernel__Object__init
]))(var
); /* init on <var:Sys>*/
122 ((void(*)(val
* self
))(var
->class->vft
[COLOR_core__kernel__Sys__run
]))(var
); /* run on <var:Sys>*/
126 const char FILE_nitc__nith
[] = "nith.nit";
127 const char FILE_nitc__modelize
[] = "./modelize/modelize.nit";
128 const char FILE_nitc__modelize_property
[] = "./modelize/modelize_property.nit";
129 const char FILE_nitc__modelize_class
[] = "./modelize/modelize_class.nit";
130 const char FILE_nitc__modelbuilder
[] = "./modelbuilder.nit";
131 const char FILE_nitc__loader
[] = "./loader.nit";
132 const char FILE_nitc__modelbuilder_base
[] = "./modelbuilder_base.nit";
133 const char FILE_nitc__model
[] = "./model/model.nit";
134 const char FILE_nitc__mmodule
[] = "./model/mmodule.nit";
135 const char FILE_nitc__location
[] = "./location.nit";
136 const char FILE_core
[] = "../lib/core/core.nit";
137 const char FILE_core__posix
[] = "../lib/core/posix.nit";
138 const char FILE_core__text
[] = "../lib/core/text/text.nit";
139 const char FILE_core__ropes
[] = "../lib/core/text/ropes.nit";
140 const char FILE_core__flat
[] = "../lib/core/text/flat.nit";
141 const char FILE_core__abstract_text
[] = "../lib/core/text/abstract_text.nit";
142 const char FILE_core__native
[] = "../lib/core/text/native.nit";
143 const char FILE_core__kernel
[] = "../lib/core/kernel.nit";
144 const char FILE_core__math
[] = "../lib/core/math.nit";
145 const char FILE_core__collection
[] = "../lib/core/collection/collection.nit";
146 const char FILE_core__range
[] = "../lib/core/collection/range.nit";
147 const char FILE_core__abstract_collection
[] = "../lib/core/collection/abstract_collection.nit";
148 const char FILE_core__list
[] = "../lib/core/collection/list.nit";
149 const char FILE_core__array
[] = "../lib/core/collection/array.nit";
150 const char FILE_core__circular_array
[] = "../lib/core/collection/circular_array.nit";
151 const char FILE_core__sorter
[] = "../lib/core/collection/sorter.nit";
152 const char FILE_core__hash_collection
[] = "../lib/core/collection/hash_collection.nit";
153 const char FILE_core__union_find
[] = "../lib/core/collection/union_find.nit";
154 const char FILE_core__string_search
[] = "../lib/core/text/string_search.nit";
155 const char FILE_core__environ
[] = "../lib/core/environ.nit";
156 const char FILE_core__file
[] = "../lib/core/file.nit";
157 const char FILE_core__stream
[] = "../lib/core/stream.nit";
158 const char FILE_core__error
[] = "../lib/core/error.nit";
159 const char FILE_core__bytes
[] = "../lib/core/bytes.nit";
160 const char FILE_core__codecs
[] = "../lib/core/codecs/codecs.nit";
161 const char FILE_core__codec_base
[] = "../lib/core/codecs/codec_base.nit";
162 const char FILE_core__utf8
[] = "../lib/core/codecs/utf8.nit";
163 const char FILE_core__time
[] = "../lib/core/time.nit";
164 const char FILE_core__gc
[] = "../lib/core/gc.nit";
165 const char FILE_core__exec
[] = "../lib/core/exec.nit";
166 const char FILE_core__bitset
[] = "../lib/core/bitset.nit";
167 const char FILE_core__queue
[] = "../lib/core/queue.nit";
168 const char FILE_core__numeric
[] = "../lib/core/numeric.nit";
169 const char FILE_core__re
[] = "../lib/core/re.nit";
170 const char FILE_core__fixed_ints
[] = "../lib/core/fixed_ints.nit";
171 const char FILE_nitc__mpackage
[] = "./model/mpackage.nit";
172 const char FILE_nitc__model_base
[] = "./model/model_base.nit";
173 const char FILE_more_collections
[] = "../lib/more_collections.nit";
174 const char FILE_serialization
[] = "../lib/serialization/serialization.nit";
175 const char FILE_poset
[] = "../lib/poset.nit";
176 const char FILE_nitc__mdoc
[] = "./model/mdoc.nit";
177 const char FILE_ordered_tree
[] = "../lib/ordered_tree.nit";
178 const char FILE_nitc__toolcontext
[] = "./toolcontext.nit";
179 const char FILE_opts
[] = "../lib/opts.nit";
180 const char FILE_nitc__version
[] = "./version.nit";
181 const char FILE_template
[] = "../lib/template/template.nit";
182 const char FILE_nitc__parser
[] = "./parser/parser.nit";
183 const char FILE_nitc__parser_prod
[] = "./parser/parser_prod.nit";
184 const char FILE_nitc__lexer
[] = "./parser/lexer.nit";
185 const char FILE_nitc__parser_nodes
[] = "./parser/parser_nodes.nit";
186 const char FILE_nitc__lexer_work
[] = "./parser/lexer_work.nit";
187 const char FILE_nitc__tables
[] = "./parser/tables.nit";
188 const char FILE_nitc__parser_work
[] = "./parser/parser_work.nit";
189 const char FILE_ini
[] = "../lib/ini.nit";
190 const char FILE_nitc__phase
[] = "./phase.nit";
191 const char FILE_nitc__annotation
[] = "./annotation.nit";
192 const char FILE_nitc__literal
[] = "./literal.nit";
193 const char FILE_nitc__mmodule_data
[] = "./model/mmodule_data.nit";
194 const char FILE_nitc__transform
[] = "./transform.nit";
195 const char FILE_nitc__astbuilder
[] = "./astbuilder.nit";
196 const char FILE_nitc__typing
[] = "./semantize/typing.nit";
197 const char FILE_nitc__local_var_init
[] = "./semantize/local_var_init.nit";
198 const char FILE_nitc__flow
[] = "./semantize/flow.nit";
199 const char FILE_nitc__scope
[] = "./semantize/scope.nit";
200 const char FILE_nitc__astvalidation
[] = "./astvalidation.nit";
201 const char FILE_nitc__semantize
[] = "./semantize/semantize.nit";
202 const char FILE_nitc__auto_super_init
[] = "./semantize/auto_super_init.nit";
203 const char FILE_nitc__rapid_type_analysis
[] = "./rapid_type_analysis.nit";
204 const char FILE_csv
[] = "../lib/csv/csv.nit";
205 const char FILE_nitc__separate_erasure_compiler
[] = "./compiler/separate_erasure_compiler.nit";
206 const char FILE_nitc__separate_compiler
[] = "./compiler/separate_compiler.nit";
207 const char FILE_nitc__abstract_compiler
[] = "./compiler/abstract_compiler.nit";
208 const char FILE_nitc__platform
[] = "./platform/platform.nit";
209 const char FILE_nitc__parser_util
[] = "./parser_util.nit";
210 const char FILE_nitc__c_tools
[] = "./c_tools.nit";
211 const char FILE_nitc__mixin
[] = "./mixin.nit";
212 const char FILE_counter
[] = "../lib/counter.nit";
213 const char FILE_nitc__coloring
[] = "./compiler/coloring.nit";
214 const char FILE_nitc__light_only
[] = "./compiler/compiler_ffi/light_only.nit";
215 const char FILE_nitc__light
[] = "./compiler/compiler_ffi/light.nit";
216 const char FILE_nitc__light_ffi
[] = "./ffi/light_ffi.nit";
217 const char FILE_nitc__nitni_utilities
[] = "./nitni/nitni_utilities.nit";
218 const char FILE_nitc__nitni_base
[] = "./nitni/nitni_base.nit";
219 const char FILE_nitc__light_ffi_base
[] = "./ffi/light_ffi_base.nit";
220 const char FILE_nitc__extern_classes
[] = "./ffi/extern_classes.nit";
221 const char FILE_nitc__light_c
[] = "./ffi/light_c.nit";
222 void gc_finalize (void *obj
, void *client_data
) {
223 val
* var
/* : Finalizable */;
226 ((void(*)(val
* self
))(var
->class->vft
[COLOR_core__gc__Finalizable__finalize
]))(var
); /* finalize on <var:Finalizable>*/