ni_nitdoc: added fast copy past utility to signatures.
[nit.git] / c_src / mmloader._sep.c
1 /* This C file is generated by NIT to compile module mmloader. */
2 #include "mmloader._sep.h"
3 static const char LOCATE_mmloader___ToolContext___paths[] = "mmloader::ToolContext::paths";
4 val_t mmloader___ToolContext___paths(val_t p0){
5 struct {struct stack_frame_t me;} fra;
6 val_t REGB0;
7 val_t tmp;
8 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9 fra.me.file = LOCATE_mmloader;
10 fra.me.line = 29;
11 fra.me.meth = LOCATE_mmloader___ToolContext___paths;
12 fra.me.has_broke = 0;
13 fra.me.REG_size = 1;
14 fra.me.nitni_local_ref_head = NULL;
15 fra.me.REG[0] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 /* mmloader.nit:29 */
18 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____paths(fra.me.REG[0])!=NIT_NULL);
19 if (UNTAG_Bool(REGB0)) {
20 } else {
21 nit_abort("Uninitialized attribute %s", "_paths", LOCATE_mmloader, 29);
22 }
23 fra.me.REG[0] = ATTR_mmloader___ToolContext____paths(fra.me.REG[0]);
24 stack_frame_head = fra.me.prev;
25 return fra.me.REG[0];
26 }
27 static const char LOCATE_mmloader___ToolContext___opt_path[] = "mmloader::ToolContext::opt_path";
28 val_t mmloader___ToolContext___opt_path(val_t p0){
29 struct {struct stack_frame_t me;} fra;
30 val_t REGB0;
31 val_t tmp;
32 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
33 fra.me.file = LOCATE_mmloader;
34 fra.me.line = 35;
35 fra.me.meth = LOCATE_mmloader___ToolContext___opt_path;
36 fra.me.has_broke = 0;
37 fra.me.REG_size = 1;
38 fra.me.nitni_local_ref_head = NULL;
39 fra.me.REG[0] = NIT_NULL;
40 fra.me.REG[0] = p0;
41 /* mmloader.nit:35 */
42 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0])!=NIT_NULL);
43 if (UNTAG_Bool(REGB0)) {
44 } else {
45 nit_abort("Uninitialized attribute %s", "_opt_path", LOCATE_mmloader, 35);
46 }
47 fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]);
48 stack_frame_head = fra.me.prev;
49 return fra.me.REG[0];
50 }
51 static const char LOCATE_mmloader___ToolContext___opt_only_metamodel[] = "mmloader::ToolContext::opt_only_metamodel";
52 val_t mmloader___ToolContext___opt_only_metamodel(val_t p0){
53 struct {struct stack_frame_t me;} fra;
54 val_t REGB0;
55 val_t tmp;
56 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
57 fra.me.file = LOCATE_mmloader;
58 fra.me.line = 38;
59 fra.me.meth = LOCATE_mmloader___ToolContext___opt_only_metamodel;
60 fra.me.has_broke = 0;
61 fra.me.REG_size = 1;
62 fra.me.nitni_local_ref_head = NULL;
63 fra.me.REG[0] = NIT_NULL;
64 fra.me.REG[0] = p0;
65 /* mmloader.nit:38 */
66 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0])!=NIT_NULL);
67 if (UNTAG_Bool(REGB0)) {
68 } else {
69 nit_abort("Uninitialized attribute %s", "_opt_only_metamodel", LOCATE_mmloader, 38);
70 }
71 fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]);
72 stack_frame_head = fra.me.prev;
73 return fra.me.REG[0];
74 }
75 static const char LOCATE_mmloader___ToolContext___opt_only_parse[] = "mmloader::ToolContext::opt_only_parse";
76 val_t mmloader___ToolContext___opt_only_parse(val_t p0){
77 struct {struct stack_frame_t me;} fra;
78 val_t REGB0;
79 val_t tmp;
80 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
81 fra.me.file = LOCATE_mmloader;
82 fra.me.line = 41;
83 fra.me.meth = LOCATE_mmloader___ToolContext___opt_only_parse;
84 fra.me.has_broke = 0;
85 fra.me.REG_size = 1;
86 fra.me.nitni_local_ref_head = NULL;
87 fra.me.REG[0] = NIT_NULL;
88 fra.me.REG[0] = p0;
89 /* mmloader.nit:41 */
90 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0])!=NIT_NULL);
91 if (UNTAG_Bool(REGB0)) {
92 } else {
93 nit_abort("Uninitialized attribute %s", "_opt_only_parse", LOCATE_mmloader, 41);
94 }
95 fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]);
96 stack_frame_head = fra.me.prev;
97 return fra.me.REG[0];
98 }
99 static const char LOCATE_mmloader___ToolContext___init[] = "mmloader::ToolContext::(toolcontext::ToolContext::init)";
100 void mmloader___ToolContext___init(val_t p0, int* init_table){
101 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_toolcontext___ToolContext].i;
102 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
103 val_t REGB0;
104 val_t tmp;
105 if (init_table[itpos0]) return;
106 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
107 fra.me.file = LOCATE_mmloader;
108 fra.me.line = 44;
109 fra.me.meth = LOCATE_mmloader___ToolContext___init;
110 fra.me.has_broke = 0;
111 fra.me.REG_size = 4;
112 fra.me.nitni_local_ref_head = NULL;
113 fra.me.REG[0] = NIT_NULL;
114 fra.me.REG[1] = NIT_NULL;
115 fra.me.REG[2] = NIT_NULL;
116 fra.me.REG[3] = NIT_NULL;
117 fra.me.REG[0] = p0;
118 /* mmloader.nit:44 */
119 fra.me.REG[1] = fra.me.REG[0];
120 /* mmloader.nit:46 */
121 CALL_SUPER_mmloader___ToolContext___init(fra.me.REG[0])(fra.me.REG[0], init_table);
122 /* mmloader.nit:47 */
123 fra.me.REG[0] = CALL_toolcontext___ToolContext___option_context(fra.me.REG[1])(fra.me.REG[1]);
124 REGB0 = TAG_Int(2);
125 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
126 fra.me.REG[3] = CALL_mmloader___ToolContext___opt_path(fra.me.REG[1])(fra.me.REG[1]);
127 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
128 fra.me.REG[3] = CALL_mmloader___ToolContext___opt_only_parse(fra.me.REG[1])(fra.me.REG[1]);
129 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
130 fra.me.REG[1] = CALL_mmloader___ToolContext___opt_only_metamodel(fra.me.REG[1])(fra.me.REG[1]);
131 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
132 CALL_opts___OptionContext___add_option(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
133 stack_frame_head = fra.me.prev;
134 init_table[itpos0] = 1;
135 return;
136 }
137 static const char LOCATE_mmloader___ToolContext___process_options[] = "mmloader::ToolContext::(toolcontext::ToolContext::process_options)";
138 void mmloader___ToolContext___process_options(val_t p0){
139 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
140 val_t REGB0;
141 val_t tmp;
142 static val_t once_value_1; /* Once value */
143 static val_t once_value_2; /* Once value */
144 static val_t once_value_3; /* Once value */
145 static val_t once_value_4; /* Once value */
146 static val_t once_value_5; /* Once value */
147 static val_t once_value_6; /* Once value */
148 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
149 fra.me.file = LOCATE_mmloader;
150 fra.me.line = 50;
151 fra.me.meth = LOCATE_mmloader___ToolContext___process_options;
152 fra.me.has_broke = 0;
153 fra.me.REG_size = 4;
154 fra.me.nitni_local_ref_head = NULL;
155 fra.me.REG[0] = NIT_NULL;
156 fra.me.REG[1] = NIT_NULL;
157 fra.me.REG[2] = NIT_NULL;
158 fra.me.REG[3] = NIT_NULL;
159 fra.me.REG[0] = p0;
160 /* mmloader.nit:50 */
161 fra.me.REG[1] = fra.me.REG[0];
162 /* mmloader.nit:53 */
163 CALL_SUPER_mmloader___ToolContext___process_options(fra.me.REG[0])(fra.me.REG[0]);
164 /* mmloader.nit:56 */
165 fra.me.REG[0] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
166 fra.me.REG[2] = CALL_mmloader___ToolContext___opt_path(fra.me.REG[1])(fra.me.REG[1]);
167 fra.me.REG[2] = CALL_opts___Option___value(fra.me.REG[2])(fra.me.REG[2]);
168 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
169 /* mmloader.nit:58 */
170 if (!once_value_1) {
171 fra.me.REG[2] = BOX_NativeString("NIT_PATH");
172 REGB0 = TAG_Int(8);
173 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
174 once_value_1 = fra.me.REG[2];
175 register_static_object(&once_value_1);
176 } else fra.me.REG[2] = once_value_1;
177 fra.me.REG[2] = fra.me.REG[2];
178 fra.me.REG[2] = CALL_standard___environ___String___environ(fra.me.REG[2])(fra.me.REG[2]);
179 /* mmloader.nit:59 */
180 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
181 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
182 if (UNTAG_Bool(REGB0)) {
183 /* mmloader.nit:60 */
184 fra.me.REG[0] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
185 REGB0 = TAG_Char(':');
186 fra.me.REG[3] = CALL_standard___string_search___String___split_with(fra.me.REG[2])(fra.me.REG[2], REGB0);
187 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
188 }
189 /* mmloader.nit:63 */
190 if (!once_value_2) {
191 fra.me.REG[3] = BOX_NativeString("NIT_DIR");
192 REGB0 = TAG_Int(7);
193 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
194 once_value_2 = fra.me.REG[3];
195 register_static_object(&once_value_2);
196 } else fra.me.REG[3] = once_value_2;
197 fra.me.REG[3] = fra.me.REG[3];
198 fra.me.REG[3] = CALL_standard___environ___String___environ(fra.me.REG[3])(fra.me.REG[3]);
199 fra.me.REG[2] = fra.me.REG[3];
200 /* mmloader.nit:64 */
201 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
202 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
203 if (UNTAG_Bool(REGB0)) {
204 /* mmloader.nit:65 */
205 REGB0 = TAG_Int(3);
206 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
207 if (!once_value_3) {
208 fra.me.REG[0] = BOX_NativeString("");
209 REGB0 = TAG_Int(0);
210 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
211 once_value_3 = fra.me.REG[0];
212 register_static_object(&once_value_3);
213 } else fra.me.REG[0] = once_value_3;
214 fra.me.REG[0] = fra.me.REG[0];
215 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
216 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
217 if (!once_value_4) {
218 fra.me.REG[2] = BOX_NativeString("/lib");
219 REGB0 = TAG_Int(4);
220 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
221 once_value_4 = fra.me.REG[2];
222 register_static_object(&once_value_4);
223 } else fra.me.REG[2] = once_value_4;
224 fra.me.REG[2] = fra.me.REG[2];
225 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
226 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
227 /* mmloader.nit:66 */
228 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
229 if (UNTAG_Bool(REGB0)) {
230 fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
231 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
232 }
233 }
234 /* mmloader.nit:69 */
235 REGB0 = TAG_Int(3);
236 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
237 if (!once_value_5) {
238 fra.me.REG[2] = BOX_NativeString("");
239 REGB0 = TAG_Int(0);
240 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
241 once_value_5 = fra.me.REG[2];
242 register_static_object(&once_value_5);
243 } else fra.me.REG[2] = once_value_5;
244 fra.me.REG[2] = fra.me.REG[2];
245 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
246 fra.me.REG[2] = CALL_standard___kernel___Object___sys(fra.me.REG[1])(fra.me.REG[1]);
247 fra.me.REG[2] = CALL_standard___string___Sys___program_name(fra.me.REG[2])(fra.me.REG[2]);
248 fra.me.REG[2] = CALL_standard___file___String___dirname(fra.me.REG[2])(fra.me.REG[2]);
249 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
250 if (!once_value_6) {
251 fra.me.REG[2] = BOX_NativeString("/../lib");
252 REGB0 = TAG_Int(7);
253 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
254 once_value_6 = fra.me.REG[2];
255 register_static_object(&once_value_6);
256 } else fra.me.REG[2] = once_value_6;
257 fra.me.REG[2] = fra.me.REG[2];
258 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
259 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
260 /* mmloader.nit:70 */
261 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
262 if (UNTAG_Bool(REGB0)) {
263 fra.me.REG[1] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
264 fra.me.REG[3] = CALL_standard___file___String___simplify_path(fra.me.REG[3])(fra.me.REG[3]);
265 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
266 }
267 stack_frame_head = fra.me.prev;
268 return;
269 }
270 static const char LOCATE_mmloader___ToolContext___try_to_load[] = "mmloader::ToolContext::try_to_load";
271 val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
272 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
273 val_t REGB0;
274 val_t REGB1;
275 val_t REGB2;
276 val_t tmp;
277 static val_t once_value_4; /* Once value */
278 static val_t once_value_5; /* Once value */
279 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
280 fra.me.file = LOCATE_mmloader;
281 fra.me.line = 73;
282 fra.me.meth = LOCATE_mmloader___ToolContext___try_to_load;
283 fra.me.has_broke = 0;
284 fra.me.REG_size = 10;
285 fra.me.nitni_local_ref_head = NULL;
286 fra.me.REG[0] = NIT_NULL;
287 fra.me.REG[1] = NIT_NULL;
288 fra.me.REG[2] = NIT_NULL;
289 fra.me.REG[3] = NIT_NULL;
290 fra.me.REG[4] = NIT_NULL;
291 fra.me.REG[5] = NIT_NULL;
292 fra.me.REG[6] = NIT_NULL;
293 fra.me.REG[7] = NIT_NULL;
294 fra.me.REG[8] = NIT_NULL;
295 fra.me.REG[9] = NIT_NULL;
296 fra.me.REG[0] = p0;
297 fra.me.REG[1] = p1;
298 fra.me.REG[2] = p2;
299 /* mmloader.nit:79 */
300 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMDirectory___modules(fra.me.REG[2])(fra.me.REG[2]);
301 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[3])(fra.me.REG[3]);
302 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_mmloader___ToolContext___try_to_load_1));
303 switch ((&(fra.me))->has_broke) {
304 case 0: break;
305 case 1: (&(fra.me))->has_broke = 0; goto label3;
306 }
307 /* mmloader.nit:85 */
308 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
309 if (UNTAG_Bool(REGB0)) {
310 } else {
311 nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 85);
312 }
313 fra.me.REG[4] = ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]);
314 /* ../lib/standard/collection/array.nit:269 */
315 REGB0 = TAG_Int(0);
316 /* ../lib/standard/collection/array.nit:270 */
317 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
318 if (UNTAG_Bool(REGB1)) {
319 } else {
320 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
321 }
322 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
323 /* ../lib/standard/collection/array.nit:271 */
324 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
325 /* ../lib/standard/collection/array.nit:272 */
326 while(1) {
327 /* ../lib/standard/collection/array.nit:24 */
328 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
329 if (UNTAG_Bool(REGB1)) {
330 } else {
331 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
332 }
333 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
334 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
335 if (UNTAG_Bool(REGB2)) {
336 } else {
337 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
338 }
339 /* ../lib/standard/kernel.nit:235 */
340 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
341 /* ../lib/standard/collection/array.nit:272 */
342 if (UNTAG_Bool(REGB1)) {
343 /* ../lib/standard/collection/array.nit:273 */
344 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
345 if (UNTAG_Bool(REGB1)) {
346 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
347 }
348 /* ../lib/standard/collection/array.nit:724 */
349 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
350 /* mmloader.nit:86 */
351 fra.me.REG[7] = CALL_mmloader___ModuleLoader___try_to_load_dir(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[2]);
352 /* mmloader.nit:87 */
353 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
354 if (UNTAG_Bool(REGB1)) {
355 } else {
356 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
357 if (UNTAG_Bool(REGB2)) {
358 REGB2 = TAG_Bool(0);
359 REGB1 = REGB2;
360 } else {
361 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
362 REGB1 = REGB2;
363 }
364 }
365 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
366 if (UNTAG_Bool(REGB1)) {
367 /* mmloader.nit:88 */
368 fra.me.REG[8] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[7]);
369 /* mmloader.nit:89 */
370 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
371 if (UNTAG_Bool(REGB1)) {
372 } else {
373 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
374 if (UNTAG_Bool(REGB2)) {
375 REGB2 = TAG_Bool(0);
376 REGB1 = REGB2;
377 } else {
378 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
379 REGB1 = REGB2;
380 }
381 }
382 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
383 if (UNTAG_Bool(REGB1)) {
384 /* mmloader.nit:90 */
385 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
386 if (UNTAG_Bool(REGB1)) {
387 nit_abort("Reciever is null", NULL, LOCATE_mmloader, 90);
388 }
389 CALL_metamodel___abstractmetamodel___MMDirectory___owner__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
390 /* mmloader.nit:91 */
391 CALL_metamodel___abstractmetamodel___MMDirectory___add_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
392 /* mmloader.nit:92 */
393 fra.me.REG[3] = fra.me.REG[8];
394 goto label3;
395 }
396 }
397 /* mmloader.nit:96 */
398 REGB1 = CALL_mmloader___ModuleLoader___can_handle(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[2]);
399 if (UNTAG_Bool(REGB1)) {
400 /* mmloader.nit:97 */
401 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMDirectory___full_name_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
402 /* mmloader.nit:98 */
403 REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
404 if (UNTAG_Bool(REGB1)) {
405 } else {
406 nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 98);
407 }
408 fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
409 REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
410 if (UNTAG_Bool(REGB1)) {
411 /* mmloader.nit:100 */
412 REGB1 = TAG_Int(3);
413 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
414 if (!once_value_4) {
415 fra.me.REG[9] = BOX_NativeString("Error: Dependency loop for module ");
416 REGB1 = TAG_Int(34);
417 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
418 once_value_4 = fra.me.REG[9];
419 register_static_object(&once_value_4);
420 } else fra.me.REG[9] = once_value_4;
421 fra.me.REG[9] = fra.me.REG[9];
422 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
423 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
424 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
425 if (!once_value_5) {
426 fra.me.REG[9] = BOX_NativeString("");
427 REGB1 = TAG_Int(0);
428 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
429 once_value_5 = fra.me.REG[9];
430 register_static_object(&once_value_5);
431 } else fra.me.REG[9] = once_value_5;
432 fra.me.REG[9] = fra.me.REG[9];
433 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
434 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
435 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[7]);
436 }
437 /* mmloader.nit:102 */
438 REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
439 if (UNTAG_Bool(REGB1)) {
440 } else {
441 nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 102);
442 }
443 fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
444 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
445 /* mmloader.nit:103 */
446 fra.me.REG[6] = CALL_mmloader___ModuleLoader___load_and_process_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
447 /* mmloader.nit:104 */
448 REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
449 if (UNTAG_Bool(REGB1)) {
450 } else {
451 nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 104);
452 }
453 fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
454 CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
455 /* mmloader.nit:106 */
456 CALL_metamodel___abstractmetamodel___MMDirectory___add_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
457 /* mmloader.nit:107 */
458 fra.me.REG[3] = fra.me.REG[6];
459 goto label3;
460 }
461 /* ../lib/standard/collection/array.nit:274 */
462 REGB1 = TAG_Int(1);
463 /* ../lib/standard/kernel.nit:238 */
464 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
465 /* ../lib/standard/collection/array.nit:274 */
466 REGB0 = REGB1;
467 } else {
468 /* ../lib/standard/collection/array.nit:272 */
469 goto label6;
470 }
471 }
472 label6: while(0);
473 /* mmloader.nit:110 */
474 fra.me.REG[3] = NIT_NULL;
475 goto label3;
476 label3: while(0);
477 stack_frame_head = fra.me.prev;
478 return fra.me.REG[3];
479 }
480 void OC_mmloader___ToolContext___try_to_load_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
481 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
482 val_t REGB0;
483 val_t REGB1;
484 fun_t CREG[1];
485 val_t tmp;
486 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
487 fra.me.file = LOCATE_mmloader;
488 fra.me.line = 0;
489 fra.me.meth = LOCATE_mmloader___ToolContext___try_to_load;
490 fra.me.has_broke = 0;
491 fra.me.REG_size = 2;
492 fra.me.nitni_local_ref_head = NULL;
493 fra.me.REG[0] = NIT_NULL;
494 fra.me.REG[1] = NIT_NULL;
495 fra.me.closure_ctx = closctx_param;
496 fra.me.closure_funs = CREG;
497 fra.me.REG[0] = p0;
498 CREG[0] = clos_fun0;
499 /* mmloader.nit:80 */
500 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
501 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[1]));
502 if (UNTAG_Bool(REGB0)) {
503 } else {
504 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
505 REGB0 = REGB1;
506 }
507 if (UNTAG_Bool(REGB0)) {
508 closctx->REG[3] = fra.me.REG[0];
509 closctx->has_broke = 1;
510 goto label2;
511 }
512 label2: while(0);
513 stack_frame_head = fra.me.prev;
514 return;
515 }
516 static const char LOCATE_mmloader___ToolContext___get_module_from_filename[] = "mmloader::ToolContext::get_module_from_filename";
517 val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
518 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
519 val_t REGB0;
520 val_t REGB1;
521 val_t tmp;
522 static val_t once_value_1; /* Once value */
523 static val_t once_value_3; /* Once value */
524 static val_t once_value_4; /* Once value */
525 static val_t once_value_5; /* Once value */
526 static val_t once_value_6; /* Once value */
527 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
528 fra.me.file = LOCATE_mmloader;
529 fra.me.line = 117;
530 fra.me.meth = LOCATE_mmloader___ToolContext___get_module_from_filename;
531 fra.me.has_broke = 0;
532 fra.me.REG_size = 7;
533 fra.me.nitni_local_ref_head = NULL;
534 fra.me.REG[0] = NIT_NULL;
535 fra.me.REG[1] = NIT_NULL;
536 fra.me.REG[2] = NIT_NULL;
537 fra.me.REG[3] = NIT_NULL;
538 fra.me.REG[4] = NIT_NULL;
539 fra.me.REG[5] = NIT_NULL;
540 fra.me.REG[6] = NIT_NULL;
541 fra.me.REG[0] = p0;
542 fra.me.REG[1] = p1;
543 /* mmloader.nit:122 */
544 fra.me.REG[2] = CALL_standard___file___String___dirname(fra.me.REG[1])(fra.me.REG[1]);
545 /* mmloader.nit:123 */
546 if (!once_value_1) {
547 fra.me.REG[3] = BOX_NativeString(".nit");
548 REGB0 = TAG_Int(4);
549 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
550 once_value_1 = fra.me.REG[3];
551 register_static_object(&once_value_1);
552 } else fra.me.REG[3] = once_value_1;
553 fra.me.REG[3] = fra.me.REG[3];
554 fra.me.REG[3] = CALL_standard___file___String___basename(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
555 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
556 /* mmloader.nit:125 */
557 fra.me.REG[2] = CALL_mmloader___ToolContext___directory_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
558 /* mmloader.nit:127 */
559 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
560 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[1]));
561 if (UNTAG_Bool(REGB0)) {
562 } else {
563 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
564 REGB0 = REGB1;
565 }
566 if (UNTAG_Bool(REGB0)) {
567 /* mmloader.nit:130 */
568 fra.me.REG[4] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
569 /* mmloader.nit:131 */
570 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
571 if (UNTAG_Bool(REGB0)) {
572 } else {
573 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
574 if (UNTAG_Bool(REGB1)) {
575 REGB1 = TAG_Bool(0);
576 REGB0 = REGB1;
577 } else {
578 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
579 REGB0 = REGB1;
580 }
581 }
582 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
583 if (UNTAG_Bool(REGB0)) {
584 goto label2;
585 }
586 /* mmloader.nit:134 */
587 fra.me.REG[5] = CALL_mmloader___ToolContext___get_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], NIT_NULL);
588 fra.me.REG[4] = fra.me.REG[5];
589 goto label2;
590 }
591 /* mmloader.nit:137 */
592 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[1])(fra.me.REG[1]);
593 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
594 if (UNTAG_Bool(REGB0)) {
595 /* mmloader.nit:138 */
596 REGB0 = TAG_Int(3);
597 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
598 if (!once_value_3) {
599 fra.me.REG[6] = BOX_NativeString("Error: File ");
600 REGB0 = TAG_Int(12);
601 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
602 once_value_3 = fra.me.REG[6];
603 register_static_object(&once_value_3);
604 } else fra.me.REG[6] = once_value_3;
605 fra.me.REG[6] = fra.me.REG[6];
606 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
607 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
608 if (!once_value_4) {
609 fra.me.REG[6] = BOX_NativeString(" not found.");
610 REGB0 = TAG_Int(11);
611 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
612 once_value_4 = fra.me.REG[6];
613 register_static_object(&once_value_4);
614 } else fra.me.REG[6] = once_value_4;
615 fra.me.REG[6] = fra.me.REG[6];
616 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
617 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
618 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[5]);
619 /* mmloader.nit:139 */
620 nit_abort("Aborted", NULL, LOCATE_mmloader, 139);
621 }
622 /* mmloader.nit:143 */
623 fra.me.REG[2] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
624 /* mmloader.nit:144 */
625 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
626 if (UNTAG_Bool(REGB0)) {
627 } else {
628 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
629 if (UNTAG_Bool(REGB1)) {
630 REGB1 = TAG_Bool(0);
631 REGB0 = REGB1;
632 } else {
633 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
634 REGB0 = REGB1;
635 }
636 }
637 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
638 if (UNTAG_Bool(REGB0)) {
639 fra.me.REG[4] = fra.me.REG[2];
640 goto label2;
641 }
642 /* mmloader.nit:146 */
643 REGB0 = TAG_Int(3);
644 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
645 if (!once_value_5) {
646 fra.me.REG[3] = BOX_NativeString("Error: ");
647 REGB0 = TAG_Int(7);
648 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
649 once_value_5 = fra.me.REG[3];
650 register_static_object(&once_value_5);
651 } else fra.me.REG[3] = once_value_5;
652 fra.me.REG[3] = fra.me.REG[3];
653 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
654 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
655 if (!once_value_6) {
656 fra.me.REG[1] = BOX_NativeString(" is not a NIT source module.");
657 REGB0 = TAG_Int(28);
658 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
659 once_value_6 = fra.me.REG[1];
660 register_static_object(&once_value_6);
661 } else fra.me.REG[1] = once_value_6;
662 fra.me.REG[1] = fra.me.REG[1];
663 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
664 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
665 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[2]);
666 /* mmloader.nit:147 */
667 nit_abort("Aborted", NULL, LOCATE_mmloader, 147);
668 label2: while(0);
669 stack_frame_head = fra.me.prev;
670 return fra.me.REG[4];
671 }
672 static const char LOCATE_mmloader___ToolContext___get_module[] = "mmloader::ToolContext::get_module";
673 val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
674 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
675 val_t REGB0;
676 val_t REGB1;
677 val_t REGB2;
678 val_t tmp;
679 static val_t once_value_4; /* Once value */
680 static val_t once_value_5; /* Once value */
681 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
682 fra.me.file = LOCATE_mmloader;
683 fra.me.line = 150;
684 fra.me.meth = LOCATE_mmloader___ToolContext___get_module;
685 fra.me.has_broke = 0;
686 fra.me.REG_size = 6;
687 fra.me.nitni_local_ref_head = NULL;
688 fra.me.REG[0] = NIT_NULL;
689 fra.me.REG[1] = NIT_NULL;
690 fra.me.REG[2] = NIT_NULL;
691 fra.me.REG[3] = NIT_NULL;
692 fra.me.REG[4] = NIT_NULL;
693 fra.me.REG[5] = NIT_NULL;
694 fra.me.REG[0] = p0;
695 fra.me.REG[1] = p1;
696 fra.me.REG[2] = p2;
697 /* mmloader.nit:154 */
698 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
699 if (UNTAG_Bool(REGB0)) {
700 } else {
701 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
702 if (UNTAG_Bool(REGB1)) {
703 REGB1 = TAG_Bool(0);
704 REGB0 = REGB1;
705 } else {
706 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
707 REGB0 = REGB1;
708 }
709 }
710 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
711 if (UNTAG_Bool(REGB0)) {
712 /* mmloader.nit:155 */
713 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
714 if (UNTAG_Bool(REGB0)) {
715 nit_abort("Reciever is null", NULL, LOCATE_mmloader, 155);
716 }
717 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___directory(fra.me.REG[2])(fra.me.REG[2]);
718 /* mmloader.nit:156 */
719 while(1) {
720 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
721 if (UNTAG_Bool(REGB0)) {
722 } else {
723 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
724 if (UNTAG_Bool(REGB1)) {
725 REGB1 = TAG_Bool(0);
726 REGB0 = REGB1;
727 } else {
728 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
729 REGB0 = REGB1;
730 }
731 }
732 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
733 if (UNTAG_Bool(REGB0)) {
734 /* mmloader.nit:157 */
735 fra.me.REG[3] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
736 /* mmloader.nit:158 */
737 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
738 if (UNTAG_Bool(REGB0)) {
739 } else {
740 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
741 if (UNTAG_Bool(REGB1)) {
742 REGB1 = TAG_Bool(0);
743 REGB0 = REGB1;
744 } else {
745 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
746 REGB0 = REGB1;
747 }
748 }
749 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
750 if (UNTAG_Bool(REGB0)) {
751 goto label1;
752 }
753 /* mmloader.nit:159 */
754 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
755 if (UNTAG_Bool(REGB0)) {
756 nit_abort("Reciever is null", NULL, LOCATE_mmloader, 159);
757 }
758 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMDirectory___parent(fra.me.REG[2])(fra.me.REG[2]);
759 fra.me.REG[2] = fra.me.REG[4];
760 } else {
761 /* mmloader.nit:156 */
762 goto label2;
763 }
764 }
765 label2: while(0);
766 }
767 /* mmloader.nit:163 */
768 fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[0])(fra.me.REG[0]);
769 /* ../lib/standard/collection/array.nit:269 */
770 REGB0 = TAG_Int(0);
771 /* ../lib/standard/collection/array.nit:270 */
772 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
773 if (UNTAG_Bool(REGB1)) {
774 } else {
775 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
776 }
777 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
778 /* ../lib/standard/collection/array.nit:271 */
779 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
780 /* ../lib/standard/collection/array.nit:272 */
781 while(1) {
782 /* ../lib/standard/collection/array.nit:24 */
783 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
784 if (UNTAG_Bool(REGB1)) {
785 } else {
786 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
787 }
788 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
789 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
790 if (UNTAG_Bool(REGB2)) {
791 } else {
792 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
793 }
794 /* ../lib/standard/kernel.nit:235 */
795 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
796 /* ../lib/standard/collection/array.nit:272 */
797 if (UNTAG_Bool(REGB1)) {
798 /* ../lib/standard/collection/array.nit:273 */
799 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
800 if (UNTAG_Bool(REGB1)) {
801 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
802 }
803 /* ../lib/standard/collection/array.nit:724 */
804 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
805 /* mmloader.nit:164 */
806 fra.me.REG[5] = CALL_mmloader___ToolContext___directory_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
807 fra.me.REG[5] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
808 /* mmloader.nit:165 */
809 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
810 if (UNTAG_Bool(REGB1)) {
811 } else {
812 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
813 if (UNTAG_Bool(REGB2)) {
814 REGB2 = TAG_Bool(0);
815 REGB1 = REGB2;
816 } else {
817 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
818 REGB1 = REGB2;
819 }
820 }
821 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
822 if (UNTAG_Bool(REGB1)) {
823 fra.me.REG[3] = fra.me.REG[5];
824 goto label1;
825 }
826 /* ../lib/standard/collection/array.nit:274 */
827 REGB1 = TAG_Int(1);
828 /* ../lib/standard/kernel.nit:238 */
829 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
830 /* ../lib/standard/collection/array.nit:274 */
831 REGB0 = REGB1;
832 } else {
833 /* ../lib/standard/collection/array.nit:272 */
834 goto label3;
835 }
836 }
837 label3: while(0);
838 /* mmloader.nit:168 */
839 REGB0 = TAG_Int(3);
840 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
841 if (!once_value_4) {
842 fra.me.REG[2] = BOX_NativeString("Error: No ressource found for module ");
843 REGB0 = TAG_Int(37);
844 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
845 once_value_4 = fra.me.REG[2];
846 register_static_object(&once_value_4);
847 } else fra.me.REG[2] = once_value_4;
848 fra.me.REG[2] = fra.me.REG[2];
849 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
850 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
851 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
852 if (!once_value_5) {
853 fra.me.REG[1] = BOX_NativeString(".");
854 REGB0 = TAG_Int(1);
855 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
856 once_value_5 = fra.me.REG[1];
857 register_static_object(&once_value_5);
858 } else fra.me.REG[1] = once_value_5;
859 fra.me.REG[1] = fra.me.REG[1];
860 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
861 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
862 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[4]);
863 /* mmloader.nit:169 */
864 nit_abort("Aborted", NULL, LOCATE_mmloader, 169);
865 label1: while(0);
866 stack_frame_head = fra.me.prev;
867 return fra.me.REG[3];
868 }
869 static const char LOCATE_mmloader___ToolContext___directory_for[] = "mmloader::ToolContext::directory_for";
870 val_t mmloader___ToolContext___directory_for(val_t p0, val_t p1){
871 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
872 val_t REGB0;
873 val_t tmp;
874 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
875 fra.me.file = LOCATE_mmloader;
876 fra.me.line = 172;
877 fra.me.meth = LOCATE_mmloader___ToolContext___directory_for;
878 fra.me.has_broke = 0;
879 fra.me.REG_size = 4;
880 fra.me.nitni_local_ref_head = NULL;
881 fra.me.REG[0] = NIT_NULL;
882 fra.me.REG[1] = NIT_NULL;
883 fra.me.REG[2] = NIT_NULL;
884 fra.me.REG[3] = NIT_NULL;
885 fra.me.REG[0] = p0;
886 fra.me.REG[1] = p1;
887 /* mmloader.nit:175 */
888 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
889 if (UNTAG_Bool(REGB0)) {
890 } else {
891 nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 175);
892 }
893 fra.me.REG[2] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
894 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
895 if (UNTAG_Bool(REGB0)) {
896 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
897 if (UNTAG_Bool(REGB0)) {
898 } else {
899 nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 175);
900 }
901 fra.me.REG[2] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
902 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
903 goto label1;
904 }
905 /* mmloader.nit:176 */
906 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
907 fra.me.REG[3] = NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[3], fra.me.REG[1], NIT_NULL);
908 /* mmloader.nit:177 */
909 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
910 if (UNTAG_Bool(REGB0)) {
911 } else {
912 nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 177);
913 }
914 fra.me.REG[0] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
915 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
916 /* mmloader.nit:178 */
917 fra.me.REG[2] = fra.me.REG[3];
918 goto label1;
919 label1: while(0);
920 stack_frame_head = fra.me.prev;
921 return fra.me.REG[2];
922 }
923 static const char LOCATE_mmloader___ToolContext___register_loader[] = "mmloader::ToolContext::register_loader";
924 void mmloader___ToolContext___register_loader(val_t p0, val_t p1){
925 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
926 val_t REGB0;
927 val_t tmp;
928 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
929 fra.me.file = LOCATE_mmloader;
930 fra.me.line = 184;
931 fra.me.meth = LOCATE_mmloader___ToolContext___register_loader;
932 fra.me.has_broke = 0;
933 fra.me.REG_size = 2;
934 fra.me.nitni_local_ref_head = NULL;
935 fra.me.REG[0] = NIT_NULL;
936 fra.me.REG[1] = NIT_NULL;
937 fra.me.REG[0] = p0;
938 fra.me.REG[1] = p1;
939 /* mmloader.nit:185 */
940 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
941 if (UNTAG_Bool(REGB0)) {
942 } else {
943 nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 185);
944 }
945 fra.me.REG[0] = ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]);
946 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
947 stack_frame_head = fra.me.prev;
948 return;
949 }
950 static const char LOCATE_mmloader___ModuleLoader___file_type[] = "mmloader::ModuleLoader::file_type";
951 val_t mmloader___ModuleLoader___file_type(val_t p0){
952 struct {struct stack_frame_t me;} fra;
953 val_t tmp;
954 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
955 fra.me.file = LOCATE_mmloader;
956 fra.me.line = 193;
957 fra.me.meth = LOCATE_mmloader___ModuleLoader___file_type;
958 fra.me.has_broke = 0;
959 fra.me.REG_size = 0;
960 fra.me.nitni_local_ref_head = NULL;
961 /* mmloader.nit:193 */
962 nit_abort("Deferred method called", NULL, LOCATE_mmloader, 193);
963 stack_frame_head = fra.me.prev;
964 return NIT_NULL;
965 }
966 static const char LOCATE_mmloader___ModuleLoader___try_to_load_dir[] = "mmloader::ModuleLoader::try_to_load_dir";
967 val_t mmloader___ModuleLoader___try_to_load_dir(val_t p0, val_t p1, val_t p2){
968 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
969 val_t REGB0;
970 val_t tmp;
971 static val_t once_value_1; /* Once value */
972 static val_t once_value_2; /* Once value */
973 static val_t once_value_3; /* Once value */
974 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
975 fra.me.file = LOCATE_mmloader;
976 fra.me.line = 196;
977 fra.me.meth = LOCATE_mmloader___ModuleLoader___try_to_load_dir;
978 fra.me.has_broke = 0;
979 fra.me.REG_size = 4;
980 fra.me.nitni_local_ref_head = NULL;
981 fra.me.REG[0] = NIT_NULL;
982 fra.me.REG[1] = NIT_NULL;
983 fra.me.REG[2] = NIT_NULL;
984 fra.me.REG[3] = NIT_NULL;
985 fra.me.REG[0] = p0;
986 fra.me.REG[1] = p1;
987 fra.me.REG[2] = p2;
988 /* mmloader.nit:199 */
989 REGB0 = TAG_Int(5);
990 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
991 if (!once_value_1) {
992 fra.me.REG[3] = BOX_NativeString("");
993 REGB0 = TAG_Int(0);
994 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
995 once_value_1 = fra.me.REG[3];
996 register_static_object(&once_value_1);
997 } else fra.me.REG[3] = once_value_1;
998 fra.me.REG[3] = fra.me.REG[3];
999 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1000 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[2])(fra.me.REG[2]);
1001 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1002 if (!once_value_2) {
1003 fra.me.REG[3] = BOX_NativeString("/");
1004 REGB0 = TAG_Int(1);
1005 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1006 once_value_2 = fra.me.REG[3];
1007 register_static_object(&once_value_2);
1008 } else fra.me.REG[3] = once_value_2;
1009 fra.me.REG[3] = fra.me.REG[3];
1010 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1011 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
1012 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1013 if (!once_value_3) {
1014 fra.me.REG[3] = BOX_NativeString("");
1015 REGB0 = TAG_Int(0);
1016 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1017 once_value_3 = fra.me.REG[3];
1018 register_static_object(&once_value_3);
1019 } else fra.me.REG[3] = once_value_3;
1020 fra.me.REG[3] = fra.me.REG[3];
1021 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1022 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1023 /* mmloader.nit:200 */
1024 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[0])(fra.me.REG[0]);
1025 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1026 if (UNTAG_Bool(REGB0)) {
1027 fra.me.REG[3] = NIT_NULL;
1028 goto label4;
1029 }
1030 /* mmloader.nit:202 */
1031 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMDirectory___full_name_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1032 fra.me.REG[2] = NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
1033 /* mmloader.nit:203 */
1034 fra.me.REG[3] = fra.me.REG[2];
1035 goto label4;
1036 label4: while(0);
1037 stack_frame_head = fra.me.prev;
1038 return fra.me.REG[3];
1039 }
1040 static const char LOCATE_mmloader___ModuleLoader___can_handle[] = "mmloader::ModuleLoader::can_handle";
1041 val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
1042 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1043 val_t REGB0;
1044 val_t REGB1;
1045 val_t tmp;
1046 static val_t once_value_1; /* Once value */
1047 static val_t once_value_2; /* Once value */
1048 static val_t once_value_3; /* Once value */
1049 static val_t once_value_4; /* Once value */
1050 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1051 fra.me.file = LOCATE_mmloader;
1052 fra.me.line = 206;
1053 fra.me.meth = LOCATE_mmloader___ModuleLoader___can_handle;
1054 fra.me.has_broke = 0;
1055 fra.me.REG_size = 5;
1056 fra.me.nitni_local_ref_head = NULL;
1057 fra.me.REG[0] = NIT_NULL;
1058 fra.me.REG[1] = NIT_NULL;
1059 fra.me.REG[2] = NIT_NULL;
1060 fra.me.REG[3] = NIT_NULL;
1061 fra.me.REG[4] = NIT_NULL;
1062 fra.me.REG[0] = p0;
1063 fra.me.REG[1] = p1;
1064 fra.me.REG[2] = p2;
1065 /* mmloader.nit:210 */
1066 REGB0 = TAG_Int(7);
1067 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1068 if (!once_value_1) {
1069 fra.me.REG[4] = BOX_NativeString("");
1070 REGB0 = TAG_Int(0);
1071 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1072 once_value_1 = fra.me.REG[4];
1073 register_static_object(&once_value_1);
1074 } else fra.me.REG[4] = once_value_1;
1075 fra.me.REG[4] = fra.me.REG[4];
1076 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1077 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[2])(fra.me.REG[2]);
1078 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1079 if (!once_value_2) {
1080 fra.me.REG[2] = BOX_NativeString("/");
1081 REGB0 = TAG_Int(1);
1082 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
1083 once_value_2 = fra.me.REG[2];
1084 register_static_object(&once_value_2);
1085 } else fra.me.REG[2] = once_value_2;
1086 fra.me.REG[2] = fra.me.REG[2];
1087 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1088 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
1089 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1090 if (!once_value_3) {
1091 fra.me.REG[1] = BOX_NativeString(".");
1092 REGB0 = TAG_Int(1);
1093 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
1094 once_value_3 = fra.me.REG[1];
1095 register_static_object(&once_value_3);
1096 } else fra.me.REG[1] = once_value_3;
1097 fra.me.REG[1] = fra.me.REG[1];
1098 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1099 fra.me.REG[0] = CALL_mmloader___ModuleLoader___file_type(fra.me.REG[0])(fra.me.REG[0]);
1100 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
1101 if (!once_value_4) {
1102 fra.me.REG[0] = BOX_NativeString("");
1103 REGB0 = TAG_Int(0);
1104 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1105 once_value_4 = fra.me.REG[0];
1106 register_static_object(&once_value_4);
1107 } else fra.me.REG[0] = once_value_4;
1108 fra.me.REG[0] = fra.me.REG[0];
1109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
1110 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1111 /* mmloader.nit:211 */
1112 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
1113 if (UNTAG_Bool(REGB0)) {
1114 REGB0 = TAG_Bool(1);
1115 goto label5;
1116 }
1117 /* mmloader.nit:212 */
1118 REGB1 = TAG_Bool(0);
1119 REGB0 = REGB1;
1120 goto label5;
1121 label5: while(0);
1122 stack_frame_head = fra.me.prev;
1123 return REGB0;
1124 }
1125 static const char LOCATE_mmloader___ModuleLoader___load_and_process_module[] = "mmloader::ModuleLoader::load_and_process_module";
1126 val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_t p2, val_t p3){
1127 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1128 val_t REGB0;
1129 val_t tmp;
1130 static val_t once_value_1; /* Once value */
1131 static val_t once_value_2; /* Once value */
1132 static val_t once_value_3; /* Once value */
1133 static val_t once_value_4; /* Once value */
1134 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1135 fra.me.file = LOCATE_mmloader;
1136 fra.me.line = 215;
1137 fra.me.meth = LOCATE_mmloader___ModuleLoader___load_and_process_module;
1138 fra.me.has_broke = 0;
1139 fra.me.REG_size = 6;
1140 fra.me.nitni_local_ref_head = NULL;
1141 fra.me.REG[0] = NIT_NULL;
1142 fra.me.REG[1] = NIT_NULL;
1143 fra.me.REG[2] = NIT_NULL;
1144 fra.me.REG[3] = NIT_NULL;
1145 fra.me.REG[4] = NIT_NULL;
1146 fra.me.REG[5] = NIT_NULL;
1147 fra.me.REG[0] = p0;
1148 fra.me.REG[1] = p1;
1149 fra.me.REG[2] = p2;
1150 fra.me.REG[3] = p3;
1151 /* mmloader.nit:219 */
1152 REGB0 = TAG_Int(7);
1153 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1154 if (!once_value_1) {
1155 fra.me.REG[5] = BOX_NativeString("");
1156 REGB0 = TAG_Int(0);
1157 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1158 once_value_1 = fra.me.REG[5];
1159 register_static_object(&once_value_1);
1160 } else fra.me.REG[5] = once_value_1;
1161 fra.me.REG[5] = fra.me.REG[5];
1162 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1163 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[3])(fra.me.REG[3]);
1164 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1165 if (!once_value_2) {
1166 fra.me.REG[5] = BOX_NativeString("/");
1167 REGB0 = TAG_Int(1);
1168 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1169 once_value_2 = fra.me.REG[5];
1170 register_static_object(&once_value_2);
1171 } else fra.me.REG[5] = once_value_2;
1172 fra.me.REG[5] = fra.me.REG[5];
1173 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1174 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1175 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1176 if (!once_value_3) {
1177 fra.me.REG[5] = BOX_NativeString(".");
1178 REGB0 = TAG_Int(1);
1179 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1180 once_value_3 = fra.me.REG[5];
1181 register_static_object(&once_value_3);
1182 } else fra.me.REG[5] = once_value_3;
1183 fra.me.REG[5] = fra.me.REG[5];
1184 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1185 fra.me.REG[5] = CALL_mmloader___ModuleLoader___file_type(fra.me.REG[0])(fra.me.REG[0]);
1186 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1187 if (!once_value_4) {
1188 fra.me.REG[5] = BOX_NativeString("");
1189 REGB0 = TAG_Int(0);
1190 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1191 once_value_4 = fra.me.REG[5];
1192 register_static_object(&once_value_4);
1193 } else fra.me.REG[5] = once_value_4;
1194 fra.me.REG[5] = fra.me.REG[5];
1195 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1196 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1197 fra.me.REG[4] = CALL_standard___file___String___simplify_path(fra.me.REG[4])(fra.me.REG[4]);
1198 /* mmloader.nit:220 */
1199 fra.me.REG[4] = CALL_mmloader___ModuleLoader___load_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
1200 /* mmloader.nit:221 */
1201 fra.me.REG[3] = CALL_mmloader___ToolContext___opt_only_parse(fra.me.REG[1])(fra.me.REG[1]);
1202 fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
1203 REGB0 = TAG_Bool(!UNTAG_Bool(fra.me.REG[3]));
1204 if (UNTAG_Bool(REGB0)) {
1205 CALL_mmloader___ModuleLoader___process_metamodel(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
1206 }
1207 /* mmloader.nit:222 */
1208 goto label5;
1209 label5: while(0);
1210 stack_frame_head = fra.me.prev;
1211 return fra.me.REG[4];
1212 }
1213 static const char LOCATE_mmloader___ModuleLoader___load_module[] = "mmloader::ModuleLoader::load_module";
1214 val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
1215 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1216 val_t REGB0;
1217 val_t REGB1;
1218 val_t tmp;
1219 static val_t once_value_1; /* Once value */
1220 static val_t once_value_2; /* Once value */
1221 static val_t once_value_3; /* Once value */
1222 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1223 fra.me.file = LOCATE_mmloader;
1224 fra.me.line = 225;
1225 fra.me.meth = LOCATE_mmloader___ModuleLoader___load_module;
1226 fra.me.has_broke = 0;
1227 fra.me.REG_size = 8;
1228 fra.me.nitni_local_ref_head = NULL;
1229 fra.me.REG[0] = NIT_NULL;
1230 fra.me.REG[1] = NIT_NULL;
1231 fra.me.REG[2] = NIT_NULL;
1232 fra.me.REG[3] = NIT_NULL;
1233 fra.me.REG[4] = NIT_NULL;
1234 fra.me.REG[5] = NIT_NULL;
1235 fra.me.REG[6] = NIT_NULL;
1236 fra.me.REG[7] = NIT_NULL;
1237 fra.me.REG[0] = p0;
1238 fra.me.REG[1] = p1;
1239 fra.me.REG[2] = p2;
1240 fra.me.REG[3] = p3;
1241 fra.me.REG[4] = p4;
1242 /* mmloader.nit:229 */
1243 if (!once_value_1) {
1244 fra.me.REG[5] = BOX_NativeString("-");
1245 REGB0 = TAG_Int(1);
1246 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1247 once_value_1 = fra.me.REG[5];
1248 register_static_object(&once_value_1);
1249 } else fra.me.REG[5] = once_value_1;
1250 fra.me.REG[5] = fra.me.REG[5];
1251 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[5]));
1252 if (UNTAG_Bool(REGB0)) {
1253 } else {
1254 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1255 REGB0 = REGB1;
1256 }
1257 if (UNTAG_Bool(REGB0)) {
1258 /* mmloader.nit:230 */
1259 fra.me.REG[5] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
1260 } else {
1261 /* mmloader.nit:232 */
1262 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1263 fra.me.REG[6] = NEW_IFStream_standard___file___IFStream___open(fra.me.REG[6]);
1264 fra.me.REG[5] = fra.me.REG[6];
1265 }
1266 /* mmloader.nit:235 */
1267 REGB0 = CALL_standard___stream___IStream___eof(fra.me.REG[5])(fra.me.REG[5]);
1268 if (UNTAG_Bool(REGB0)) {
1269 /* mmloader.nit:236 */
1270 REGB0 = TAG_Int(3);
1271 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1272 if (!once_value_2) {
1273 fra.me.REG[7] = BOX_NativeString("Error: Problem in opening file ");
1274 REGB0 = TAG_Int(31);
1275 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1276 once_value_2 = fra.me.REG[7];
1277 register_static_object(&once_value_2);
1278 } else fra.me.REG[7] = once_value_2;
1279 fra.me.REG[7] = fra.me.REG[7];
1280 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1281 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
1282 if (!once_value_3) {
1283 fra.me.REG[7] = BOX_NativeString("");
1284 REGB0 = TAG_Int(0);
1285 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1286 once_value_3 = fra.me.REG[7];
1287 register_static_object(&once_value_3);
1288 } else fra.me.REG[7] = once_value_3;
1289 fra.me.REG[7] = fra.me.REG[7];
1290 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1291 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1292 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[6]);
1293 }
1294 /* mmloader.nit:238 */
1295 fra.me.REG[3] = CALL_mmloader___ModuleLoader___parse_file(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
1296 /* mmloader.nit:239 */
1297 fra.me.REG[0] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
1298 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[5],fra.me.REG[0]));
1299 if (UNTAG_Bool(REGB0)) {
1300 } else {
1301 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1302 REGB0 = REGB1;
1303 }
1304 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1305 if (UNTAG_Bool(REGB0)) {
1306 CALL_standard___stream___IOS___close(fra.me.REG[5])(fra.me.REG[5]);
1307 }
1308 /* mmloader.nit:240 */
1309 goto label4;
1310 label4: while(0);
1311 stack_frame_head = fra.me.prev;
1312 return fra.me.REG[3];
1313 }
1314 static const char LOCATE_mmloader___ModuleLoader___parse_file[] = "mmloader::ModuleLoader::parse_file";
1315 val_t mmloader___ModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
1316 struct {struct stack_frame_t me;} fra;
1317 val_t tmp;
1318 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1319 fra.me.file = LOCATE_mmloader;
1320 fra.me.line = 243;
1321 fra.me.meth = LOCATE_mmloader___ModuleLoader___parse_file;
1322 fra.me.has_broke = 0;
1323 fra.me.REG_size = 0;
1324 fra.me.nitni_local_ref_head = NULL;
1325 /* mmloader.nit:243 */
1326 nit_abort("Deferred method called", NULL, LOCATE_mmloader, 243);
1327 stack_frame_head = fra.me.prev;
1328 return NIT_NULL;
1329 }
1330 static const char LOCATE_mmloader___ModuleLoader___process_metamodel[] = "mmloader::ModuleLoader::process_metamodel";
1331 void mmloader___ModuleLoader___process_metamodel(val_t p0, val_t p1, val_t p2){
1332 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1333 val_t REGB0;
1334 val_t tmp;
1335 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1336 fra.me.file = LOCATE_mmloader;
1337 fra.me.line = 246;
1338 fra.me.meth = LOCATE_mmloader___ModuleLoader___process_metamodel;
1339 fra.me.has_broke = 0;
1340 fra.me.REG_size = 2;
1341 fra.me.nitni_local_ref_head = NULL;
1342 fra.me.REG[0] = NIT_NULL;
1343 fra.me.REG[1] = NIT_NULL;
1344 fra.me.REG[0] = p0;
1345 fra.me.REG[1] = p2;
1346 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_mmloader___ModuleLoader___MODULE(fra.me.REG[0]), VTID_mmloader___ModuleLoader___MODULE(fra.me.REG[0]))) /*cast MODULE*/;
1347 if (UNTAG_Bool(REGB0)) {
1348 } else {
1349 nit_abort("Cast failed", NULL, LOCATE_mmloader, 0);
1350 }
1351 /* mmloader.nit:246 */
1352 nit_abort("Deferred method called", NULL, LOCATE_mmloader, 246);
1353 stack_frame_head = fra.me.prev;
1354 return;
1355 }