edc27af0425dcb53eb8f4be64d56ca77d02f528c
[nit.git] / c_src / metamodel___genericity._sep.c
1 /* This C file is generated by NIT to compile module metamodel___genericity. */
2 #include "metamodel___genericity._sep.h"
3 val_t metamodel___genericity___MMLocalClass___get_formal(val_t p0, val_t p1){
4 struct {struct stack_frame_t me;} fra;
5 val_t REGB0;
6 val_t REGB1;
7 val_t REGB2;
8 val_t tmp;
9 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10 fra.me.file = LOCATE_metamodel___genericity;
11 fra.me.line = 25;
12 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___get_formal;
13 fra.me.has_broke = 0;
14 fra.me.REG_size = 1;
15 fra.me.nitni_local_ref_head = NULL;
16 fra.me.REG[0] = NIT_NULL;
17 fra.me.REG[0] = p0;
18 REGB0 = p1;
19 /* ./metamodel//genericity.nit:28 */
20 fra.me.REG[0] = CALL_metamodel___genericity___MMLocalClass___formals_types(fra.me.REG[0])(fra.me.REG[0]);
21 /* ./../lib/standard//collection//array.nit:280 */
22 REGB1 = TAG_Int(0);
23 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
24 if (UNTAG_Bool(REGB2)) {
25 } else {
26 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
27 }
28 /* ./../lib/standard//kernel.nit:233 */
29 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
30 /* ./../lib/standard//collection//array.nit:280 */
31 if (UNTAG_Bool(REGB1)) {
32 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
33 if (UNTAG_Bool(REGB1)) {
34 } else {
35 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
36 }
37 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
38 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
39 if (UNTAG_Bool(REGB2)) {
40 } else {
41 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
42 }
43 /* ./../lib/standard//kernel.nit:232 */
44 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
45 } else {
46 /* ./../lib/standard//collection//array.nit:280 */
47 REGB2 = TAG_Bool(false);
48 REGB1 = REGB2;
49 }
50 if (UNTAG_Bool(REGB1)) {
51 } else {
52 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
53 }
54 /* ./../lib/standard//collection//array.nit:281 */
55 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
56 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
57 if (UNTAG_Bool(REGB1)) {
58 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
59 }
60 /* ./../lib/standard//collection//array.nit:718 */
61 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
62 /* ./../lib/standard//collection//array.nit:281 */
63 goto label1;
64 label1: while(0);
65 /* ./metamodel//genericity.nit:28 */
66 goto label2;
67 label2: while(0);
68 stack_frame_head = fra.me.prev;
69 return fra.me.REG[0];
70 }
71 void metamodel___genericity___MMLocalClass___register_formal(val_t p0, val_t p1){
72 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
73 val_t REGB0;
74 val_t REGB1;
75 val_t REGB2;
76 val_t tmp;
77 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
78 fra.me.file = LOCATE_metamodel___genericity;
79 fra.me.line = 31;
80 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___register_formal;
81 fra.me.has_broke = 0;
82 fra.me.REG_size = 3;
83 fra.me.nitni_local_ref_head = NULL;
84 fra.me.REG[0] = NIT_NULL;
85 fra.me.REG[1] = NIT_NULL;
86 fra.me.REG[2] = NIT_NULL;
87 fra.me.REG[0] = p0;
88 fra.me.REG[1] = p1;
89 /* ./metamodel//genericity.nit:35 */
90 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeFormalParameter___def_class(fra.me.REG[1])(fra.me.REG[1]);
91 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[0]));
92 if (UNTAG_Bool(REGB0)) {
93 } else {
94 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
95 REGB0 = REGB1;
96 }
97 if (UNTAG_Bool(REGB0)) {
98 } else {
99 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 35);
100 }
101 /* ./metamodel//genericity.nit:36 */
102 REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[1])(fra.me.REG[1]);
103 REGB1 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
104 if (UNTAG_Bool(REGB1)) {
105 } else {
106 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 36);
107 }
108 fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
109 /* ./../lib/standard//collection//array.nit:24 */
110 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
111 if (UNTAG_Bool(REGB1)) {
112 } else {
113 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
114 }
115 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
116 /* ./metamodel//genericity.nit:36 */
117 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
118 if (UNTAG_Bool(REGB2)) {
119 } else {
120 /* ./../lib/standard//kernel.nit:227 */
121 REGB1 = TAG_Bool((REGB0)==(REGB1));
122 /* ./metamodel//genericity.nit:36 */
123 REGB2 = REGB1;
124 }
125 if (UNTAG_Bool(REGB2)) {
126 } else {
127 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 36);
128 }
129 /* ./metamodel//genericity.nit:37 */
130 REGB2 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
131 if (UNTAG_Bool(REGB2)) {
132 } else {
133 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 37);
134 }
135 fra.me.REG[0] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
136 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
137 stack_frame_head = fra.me.prev;
138 return;
139 }
140 val_t metamodel___genericity___MMLocalClass___get_instantiate_type(val_t p0, val_t p1){
141 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
142 val_t REGB0;
143 val_t REGB1;
144 val_t REGB2;
145 val_t tmp;
146 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
147 fra.me.file = LOCATE_metamodel___genericity;
148 fra.me.line = 43;
149 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___get_instantiate_type;
150 fra.me.has_broke = 0;
151 fra.me.REG_size = 5;
152 fra.me.nitni_local_ref_head = NULL;
153 fra.me.REG[0] = NIT_NULL;
154 fra.me.REG[1] = NIT_NULL;
155 fra.me.REG[2] = NIT_NULL;
156 fra.me.REG[3] = NIT_NULL;
157 fra.me.REG[4] = NIT_NULL;
158 fra.me.REG[0] = p0;
159 fra.me.REG[1] = p1;
160 /* ./metamodel//genericity.nit:46 */
161 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
162 if (UNTAG_Bool(REGB0)) {
163 } else {
164 nit_abort("Uninitialized attribute %s", "_types", LOCATE_metamodel___genericity, 46);
165 }
166 fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]);
167 /* ./../lib/standard//collection//array.nit:269 */
168 REGB0 = TAG_Int(0);
169 /* ./../lib/standard//collection//array.nit:270 */
170 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
171 if (UNTAG_Bool(REGB1)) {
172 } else {
173 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
174 }
175 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
176 /* ./../lib/standard//collection//array.nit:271 */
177 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
178 /* ./../lib/standard//collection//array.nit:272 */
179 while(1) {
180 /* ./../lib/standard//collection//array.nit:24 */
181 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
182 if (UNTAG_Bool(REGB1)) {
183 } else {
184 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
185 }
186 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
187 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
188 if (UNTAG_Bool(REGB2)) {
189 } else {
190 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
191 }
192 /* ./../lib/standard//kernel.nit:232 */
193 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
194 /* ./../lib/standard//collection//array.nit:272 */
195 if (UNTAG_Bool(REGB1)) {
196 /* ./../lib/standard//collection//array.nit:273 */
197 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
198 if (UNTAG_Bool(REGB1)) {
199 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
200 }
201 /* ./../lib/standard//collection//array.nit:718 */
202 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
203 /* ./metamodel//genericity.nit:47 */
204 REGB1 = CALL_metamodel___genericity___MMTypeGeneric___params_equals(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
205 if (UNTAG_Bool(REGB1)) {
206 goto label1;
207 }
208 /* ./../lib/standard//collection//array.nit:274 */
209 REGB1 = TAG_Int(1);
210 /* ./../lib/standard//kernel.nit:235 */
211 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
212 /* ./../lib/standard//collection//array.nit:274 */
213 REGB0 = REGB1;
214 } else {
215 /* ./../lib/standard//collection//array.nit:272 */
216 goto label2;
217 }
218 }
219 label2: while(0);
220 /* ./metamodel//genericity.nit:49 */
221 fra.me.REG[1] = NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init(fra.me.REG[0], fra.me.REG[1]);
222 /* ./metamodel//genericity.nit:50 */
223 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
224 if (UNTAG_Bool(REGB0)) {
225 } else {
226 nit_abort("Uninitialized attribute %s", "_types", LOCATE_metamodel___genericity, 50);
227 }
228 fra.me.REG[0] = ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]);
229 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
230 /* ./metamodel//genericity.nit:51 */
231 fra.me.REG[4] = fra.me.REG[1];
232 goto label1;
233 label1: while(0);
234 stack_frame_head = fra.me.prev;
235 return fra.me.REG[4];
236 }
237 val_t metamodel___genericity___MMLocalClass___formals_types(val_t p0){
238 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
239 val_t REGB0;
240 val_t REGB1;
241 val_t REGB2;
242 val_t REGB3;
243 val_t REGB4;
244 val_t tmp;
245 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
246 fra.me.file = LOCATE_metamodel___genericity;
247 fra.me.line = 57;
248 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___formals_types;
249 fra.me.has_broke = 0;
250 fra.me.REG_size = 4;
251 fra.me.nitni_local_ref_head = NULL;
252 fra.me.REG[0] = NIT_NULL;
253 fra.me.REG[1] = NIT_NULL;
254 fra.me.REG[2] = NIT_NULL;
255 fra.me.REG[3] = NIT_NULL;
256 fra.me.REG[0] = p0;
257 /* ./metamodel//genericity.nit:61 */
258 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
259 if (UNTAG_Bool(REGB0)) {
260 } else {
261 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 61);
262 }
263 fra.me.REG[1] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
264 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
265 if (UNTAG_Bool(REGB0)) {
266 /* ./metamodel//genericity.nit:62 */
267 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
268 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
269 if (UNTAG_Bool(REGB0)) {
270 } else {
271 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 62);
272 }
273 /* ./metamodel//genericity.nit:65 */
274 REGB0 = TAG_Int(0);
275 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
276 /* ./../lib/standard//kernel.nit:352 */
277 while(1) {
278 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
279 if (UNTAG_Bool(REGB2)) {
280 } else {
281 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
282 }
283 /* ./../lib/standard//kernel.nit:232 */
284 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
285 /* ./../lib/standard//kernel.nit:352 */
286 if (UNTAG_Bool(REGB2)) {
287 /* ./metamodel//genericity.nit:65 */
288 REGB2 = REGB0;
289 /* ./metamodel//genericity.nit:66 */
290 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
291 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
292 fra.me.REG[1] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[1])(fra.me.REG[1], REGB2);
293 /* ./metamodel//genericity.nit:67 */
294 fra.me.REG[1] = CALL_metamodel___type_formal___MMTypeFormal___name(fra.me.REG[1])(fra.me.REG[1]);
295 fra.me.REG[1] = NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[1], REGB2, fra.me.REG[0]);
296 /* ./metamodel//genericity.nit:68 */
297 CALL_metamodel___genericity___MMLocalClass___register_formal(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
298 /* ./../lib/standard//kernel.nit:354 */
299 REGB2 = TAG_Int(1);
300 /* ./../lib/standard//kernel.nit:235 */
301 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
302 /* ./../lib/standard//kernel.nit:354 */
303 REGB0 = REGB2;
304 } else {
305 /* ./../lib/standard//kernel.nit:352 */
306 goto label1;
307 }
308 }
309 label1: while(0);
310 /* ./metamodel//genericity.nit:71 */
311 REGB0 = TAG_Int(0);
312 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
313 /* ./../lib/standard//kernel.nit:352 */
314 while(1) {
315 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
316 if (UNTAG_Bool(REGB2)) {
317 } else {
318 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
319 }
320 /* ./../lib/standard//kernel.nit:232 */
321 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
322 /* ./../lib/standard//kernel.nit:352 */
323 if (UNTAG_Bool(REGB2)) {
324 /* ./metamodel//genericity.nit:71 */
325 REGB2 = REGB0;
326 /* ./metamodel//genericity.nit:72 */
327 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
328 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
329 fra.me.REG[1] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[1])(fra.me.REG[1], REGB2);
330 /* ./metamodel//genericity.nit:73 */
331 REGB3 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
332 if (UNTAG_Bool(REGB3)) {
333 } else {
334 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 73);
335 }
336 fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
337 /* ./../lib/standard//collection//array.nit:280 */
338 REGB3 = TAG_Int(0);
339 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
340 if (UNTAG_Bool(REGB4)) {
341 } else {
342 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
343 }
344 /* ./../lib/standard//kernel.nit:233 */
345 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
346 /* ./../lib/standard//collection//array.nit:280 */
347 if (UNTAG_Bool(REGB3)) {
348 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
349 if (UNTAG_Bool(REGB3)) {
350 } else {
351 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
352 }
353 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
354 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
355 if (UNTAG_Bool(REGB4)) {
356 } else {
357 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
358 }
359 /* ./../lib/standard//kernel.nit:232 */
360 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
361 } else {
362 /* ./../lib/standard//collection//array.nit:280 */
363 REGB4 = TAG_Bool(false);
364 REGB3 = REGB4;
365 }
366 if (UNTAG_Bool(REGB3)) {
367 } else {
368 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
369 }
370 /* ./../lib/standard//collection//array.nit:281 */
371 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
372 REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
373 if (UNTAG_Bool(REGB3)) {
374 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
375 }
376 /* ./../lib/standard//collection//array.nit:718 */
377 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
378 /* ./../lib/standard//collection//array.nit:281 */
379 goto label2;
380 label2: while(0);
381 /* ./metamodel//genericity.nit:74 */
382 fra.me.REG[1] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[1])(fra.me.REG[1]);
383 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
384 fra.me.REG[3] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
385 CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
386 /* ./../lib/standard//kernel.nit:354 */
387 REGB2 = TAG_Int(1);
388 /* ./../lib/standard//kernel.nit:235 */
389 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
390 /* ./../lib/standard//kernel.nit:354 */
391 REGB0 = REGB2;
392 } else {
393 /* ./../lib/standard//kernel.nit:352 */
394 goto label3;
395 }
396 }
397 label3: while(0);
398 }
399 /* ./metamodel//genericity.nit:77 */
400 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
401 if (UNTAG_Bool(REGB0)) {
402 } else {
403 nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 77);
404 }
405 fra.me.REG[0] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
406 goto label4;
407 label4: while(0);
408 stack_frame_head = fra.me.prev;
409 return fra.me.REG[0];
410 }
411 val_t metamodel___genericity___MMLocalClass___get_type(val_t p0){
412 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
413 val_t REGB0;
414 val_t REGB1;
415 val_t tmp;
416 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
417 fra.me.file = LOCATE_metamodel___genericity;
418 fra.me.line = 80;
419 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___get_type;
420 fra.me.has_broke = 0;
421 fra.me.REG_size = 3;
422 fra.me.nitni_local_ref_head = NULL;
423 fra.me.REG[0] = NIT_NULL;
424 fra.me.REG[1] = NIT_NULL;
425 fra.me.REG[2] = NIT_NULL;
426 fra.me.REG[0] = p0;
427 /* ./metamodel//genericity.nit:80 */
428 fra.me.REG[1] = fra.me.REG[0];
429 /* ./metamodel//genericity.nit:82 */
430 fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]);
431 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
432 if (UNTAG_Bool(REGB0)) {
433 } else {
434 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
435 if (UNTAG_Bool(REGB1)) {
436 REGB1 = TAG_Bool(false);
437 REGB0 = REGB1;
438 } else {
439 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
440 REGB0 = REGB1;
441 }
442 }
443 if (UNTAG_Bool(REGB0)) {
444 REGB0 = CALL_metamodel___genericity___MMLocalClass___is_generic(fra.me.REG[1])(fra.me.REG[1]);
445 } else {
446 REGB1 = TAG_Bool(false);
447 REGB0 = REGB1;
448 }
449 if (UNTAG_Bool(REGB0)) {
450 /* ./metamodel//genericity.nit:83 */
451 fra.me.REG[2] = CALL_metamodel___genericity___MMLocalClass___formals_types(fra.me.REG[1])(fra.me.REG[1]);
452 fra.me.REG[2] = CALL_metamodel___genericity___MMLocalClass___get_instantiate_type(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
453 ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]) = fra.me.REG[2];
454 /* ./metamodel//genericity.nit:84 */
455 fra.me.REG[1] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]);
456 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
457 if (UNTAG_Bool(REGB0)) {
458 } else {
459 nit_abort("Cast failed", NULL, LOCATE_metamodel___genericity, 84);
460 }
461 goto label1;
462 } else {
463 /* ./metamodel//genericity.nit:86 */
464 fra.me.REG[0] = CALL_SUPER_metamodel___genericity___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
465 fra.me.REG[1] = fra.me.REG[0];
466 goto label1;
467 }
468 label1: while(0);
469 stack_frame_head = fra.me.prev;
470 return fra.me.REG[1];
471 }
472 val_t metamodel___genericity___MMLocalClass___is_generic(val_t p0){
473 struct {struct stack_frame_t me;} fra;
474 val_t REGB0;
475 val_t REGB1;
476 val_t REGB2;
477 val_t tmp;
478 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
479 fra.me.file = LOCATE_metamodel___genericity;
480 fra.me.line = 90;
481 fra.me.meth = LOCATE_metamodel___genericity___MMLocalClass___is_generic;
482 fra.me.has_broke = 0;
483 fra.me.REG_size = 1;
484 fra.me.nitni_local_ref_head = NULL;
485 fra.me.REG[0] = NIT_NULL;
486 fra.me.REG[0] = p0;
487 /* ./metamodel//genericity.nit:91 */
488 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
489 REGB1 = TAG_Int(0);
490 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
491 if (UNTAG_Bool(REGB2)) {
492 } else {
493 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
494 }
495 /* ./../lib/standard//kernel.nit:234 */
496 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
497 /* ./metamodel//genericity.nit:91 */
498 goto label1;
499 label1: while(0);
500 stack_frame_head = fra.me.prev;
501 return REGB1;
502 }
503 val_t metamodel___genericity___MMType___is_generic(val_t p0){
504 struct {struct stack_frame_t me;} fra;
505 val_t tmp;
506 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
507 fra.me.file = LOCATE_metamodel___genericity;
508 fra.me.line = 95;
509 fra.me.meth = LOCATE_metamodel___genericity___MMType___is_generic;
510 fra.me.has_broke = 0;
511 fra.me.REG_size = 0;
512 fra.me.nitni_local_ref_head = NULL;
513 /* ./metamodel//genericity.nit:95 */
514 nit_abort("Deferred method called", NULL, LOCATE_metamodel___genericity, 95);
515 stack_frame_head = fra.me.prev;
516 return NIT_NULL;
517 }
518 val_t metamodel___genericity___MMTypeFormal___is_generic(val_t p0){
519 struct {struct stack_frame_t me;} fra;
520 val_t REGB0;
521 val_t tmp;
522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
523 fra.me.file = LOCATE_metamodel___genericity;
524 fra.me.line = 100;
525 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormal___is_generic;
526 fra.me.has_broke = 0;
527 fra.me.REG_size = 1;
528 fra.me.nitni_local_ref_head = NULL;
529 fra.me.REG[0] = NIT_NULL;
530 fra.me.REG[0] = p0;
531 /* ./metamodel//genericity.nit:100 */
532 fra.me.REG[0] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]);
533 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
534 if (UNTAG_Bool(REGB0)) {
535 nit_abort("Reciever is null", NULL, LOCATE_metamodel___genericity, 100);
536 }
537 REGB0 = CALL_metamodel___genericity___MMType___is_generic(fra.me.REG[0])(fra.me.REG[0]);
538 goto label1;
539 label1: while(0);
540 stack_frame_head = fra.me.prev;
541 return REGB0;
542 }
543 val_t metamodel___genericity___MMTypeSimpleClass___is_generic(val_t p0){
544 struct {struct stack_frame_t me;} fra;
545 val_t REGB0;
546 val_t tmp;
547 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
548 fra.me.file = LOCATE_metamodel___genericity;
549 fra.me.line = 104;
550 fra.me.meth = LOCATE_metamodel___genericity___MMTypeSimpleClass___is_generic;
551 fra.me.has_broke = 0;
552 fra.me.REG_size = 1;
553 fra.me.nitni_local_ref_head = NULL;
554 fra.me.REG[0] = NIT_NULL;
555 fra.me.REG[0] = p0;
556 /* ./metamodel//genericity.nit:104 */
557 REGB0 = TAG_Bool(false);
558 goto label1;
559 label1: while(0);
560 stack_frame_head = fra.me.prev;
561 return REGB0;
562 }
563 val_t metamodel___genericity___MMTypeGeneric___params(val_t p0){
564 struct {struct stack_frame_t me;} fra;
565 val_t REGB0;
566 val_t tmp;
567 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
568 fra.me.file = LOCATE_metamodel___genericity;
569 fra.me.line = 109;
570 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___params;
571 fra.me.has_broke = 0;
572 fra.me.REG_size = 1;
573 fra.me.nitni_local_ref_head = NULL;
574 fra.me.REG[0] = NIT_NULL;
575 fra.me.REG[0] = p0;
576 /* ./metamodel//genericity.nit:109 */
577 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
578 if (UNTAG_Bool(REGB0)) {
579 } else {
580 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 109);
581 }
582 fra.me.REG[0] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
583 stack_frame_head = fra.me.prev;
584 return fra.me.REG[0];
585 }
586 val_t metamodel___genericity___MMTypeGeneric___is_generic(val_t p0){
587 struct {struct stack_frame_t me;} fra;
588 val_t REGB0;
589 val_t tmp;
590 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
591 fra.me.file = LOCATE_metamodel___genericity;
592 fra.me.line = 112;
593 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___is_generic;
594 fra.me.has_broke = 0;
595 fra.me.REG_size = 1;
596 fra.me.nitni_local_ref_head = NULL;
597 fra.me.REG[0] = NIT_NULL;
598 fra.me.REG[0] = p0;
599 /* ./metamodel//genericity.nit:112 */
600 REGB0 = TAG_Bool(true);
601 goto label1;
602 label1: while(0);
603 stack_frame_head = fra.me.prev;
604 return REGB0;
605 }
606 val_t metamodel___genericity___MMTypeGeneric___is_supertype(val_t p0, val_t p1){
607 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
608 val_t REGB0;
609 val_t REGB1;
610 val_t tmp;
611 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
612 fra.me.file = LOCATE_metamodel___genericity;
613 fra.me.line = 114;
614 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___is_supertype;
615 fra.me.has_broke = 0;
616 fra.me.REG_size = 4;
617 fra.me.nitni_local_ref_head = NULL;
618 fra.me.REG[0] = NIT_NULL;
619 fra.me.REG[1] = NIT_NULL;
620 fra.me.REG[2] = NIT_NULL;
621 fra.me.REG[3] = NIT_NULL;
622 fra.me.REG[0] = p0;
623 fra.me.REG[1] = p1;
624 /* ./metamodel//genericity.nit:116 */
625 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
626 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
627 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
628 if (UNTAG_Bool(REGB0)) {
629 } else {
630 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 116);
631 }
632 fra.me.REG[3] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
633 REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
634 if (UNTAG_Bool(REGB0)) {
635 /* ./metamodel//genericity.nit:117 */
636 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
637 if (UNTAG_Bool(REGB0)) {
638 } else {
639 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 117);
640 }
641 fra.me.REG[3] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
642 fra.me.REG[3] = CALL_metamodel___static_type___MMType___upcast_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
643 /* ./metamodel//genericity.nit:118 */
644 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___genericity___MMTypeGeneric, ID_metamodel___genericity___MMTypeGeneric)) /*cast MMTypeGeneric*/;
645 if (UNTAG_Bool(REGB0)) {
646 /* ./metamodel//genericity.nit:119 */
647 REGB0 = CALL_metamodel___genericity___MMTypeGeneric___is_subtype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
648 goto label1;
649 }
650 }
651 /* ./metamodel//genericity.nit:122 */
652 REGB1 = TAG_Bool(false);
653 REGB0 = REGB1;
654 goto label1;
655 label1: while(0);
656 stack_frame_head = fra.me.prev;
657 return REGB0;
658 }
659 val_t metamodel___genericity___MMTypeGeneric___upcast_for(val_t p0, val_t p1){
660 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
661 val_t REGB0;
662 val_t REGB1;
663 val_t tmp;
664 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
665 fra.me.file = LOCATE_metamodel___genericity;
666 fra.me.line = 125;
667 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___upcast_for;
668 fra.me.has_broke = 0;
669 fra.me.REG_size = 3;
670 fra.me.nitni_local_ref_head = NULL;
671 fra.me.REG[0] = NIT_NULL;
672 fra.me.REG[1] = NIT_NULL;
673 fra.me.REG[2] = NIT_NULL;
674 fra.me.REG[0] = p0;
675 fra.me.REG[1] = p1;
676 /* ./metamodel//genericity.nit:125 */
677 fra.me.REG[2] = fra.me.REG[0];
678 /* ./metamodel//genericity.nit:127 */
679 fra.me.REG[1] = CALL_SUPER_metamodel___genericity___MMTypeGeneric___upcast_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
680 /* ./metamodel//genericity.nit:128 */
681 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
682 if (UNTAG_Bool(REGB0)) {
683 } else {
684 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
685 REGB0 = REGB1;
686 }
687 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
688 if (UNTAG_Bool(REGB0)) {
689 /* ./metamodel//genericity.nit:129 */
690 fra.me.REG[2] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
691 fra.me.REG[1] = fra.me.REG[2];
692 }
693 /* ./metamodel//genericity.nit:131 */
694 goto label1;
695 label1: while(0);
696 stack_frame_head = fra.me.prev;
697 return fra.me.REG[1];
698 }
699 val_t metamodel___genericity___MMTypeGeneric___for_module(val_t p0, val_t p1){
700 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
701 val_t REGB0;
702 val_t REGB1;
703 val_t REGB2;
704 val_t tmp;
705 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
706 fra.me.file = LOCATE_metamodel___genericity;
707 fra.me.line = 134;
708 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___for_module;
709 fra.me.has_broke = 0;
710 fra.me.REG_size = 7;
711 fra.me.nitni_local_ref_head = NULL;
712 fra.me.REG[0] = NIT_NULL;
713 fra.me.REG[1] = NIT_NULL;
714 fra.me.REG[2] = NIT_NULL;
715 fra.me.REG[3] = NIT_NULL;
716 fra.me.REG[4] = NIT_NULL;
717 fra.me.REG[5] = NIT_NULL;
718 fra.me.REG[6] = NIT_NULL;
719 fra.me.REG[0] = p0;
720 fra.me.REG[1] = p1;
721 /* ./metamodel//genericity.nit:136 */
722 fra.me.REG[2] = fra.me.REG[0];
723 /* ./metamodel//genericity.nit:137 */
724 fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
725 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
726 if (UNTAG_Bool(REGB0)) {
727 } else {
728 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
729 REGB0 = REGB1;
730 }
731 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
732 if (UNTAG_Bool(REGB0)) {
733 /* ./metamodel//genericity.nit:138 */
734 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
735 /* ./metamodel//genericity.nit:139 */
736 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
737 if (UNTAG_Bool(REGB0)) {
738 } else {
739 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 139);
740 }
741 fra.me.REG[4] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
742 /* ./../lib/standard//collection//array.nit:269 */
743 REGB0 = TAG_Int(0);
744 /* ./../lib/standard//collection//array.nit:270 */
745 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
746 if (UNTAG_Bool(REGB1)) {
747 } else {
748 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
749 }
750 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
751 /* ./../lib/standard//collection//array.nit:271 */
752 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
753 /* ./../lib/standard//collection//array.nit:272 */
754 while(1) {
755 /* ./../lib/standard//collection//array.nit:24 */
756 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
757 if (UNTAG_Bool(REGB1)) {
758 } else {
759 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
760 }
761 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
762 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
763 if (UNTAG_Bool(REGB2)) {
764 } else {
765 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
766 }
767 /* ./../lib/standard//kernel.nit:232 */
768 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
769 /* ./../lib/standard//collection//array.nit:272 */
770 if (UNTAG_Bool(REGB1)) {
771 /* ./../lib/standard//collection//array.nit:273 */
772 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
773 if (UNTAG_Bool(REGB1)) {
774 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
775 }
776 /* ./../lib/standard//collection//array.nit:718 */
777 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
778 /* ./metamodel//genericity.nit:140 */
779 fra.me.REG[6] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
780 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
781 /* ./../lib/standard//collection//array.nit:274 */
782 REGB1 = TAG_Int(1);
783 /* ./../lib/standard//kernel.nit:235 */
784 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
785 /* ./../lib/standard//collection//array.nit:274 */
786 REGB0 = REGB1;
787 } else {
788 /* ./../lib/standard//collection//array.nit:272 */
789 goto label1;
790 }
791 }
792 label1: while(0);
793 /* ./metamodel//genericity.nit:142 */
794 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
795 if (UNTAG_Bool(REGB0)) {
796 } else {
797 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 142);
798 }
799 fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
800 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
801 /* ./metamodel//genericity.nit:143 */
802 fra.me.REG[3] = CALL_metamodel___genericity___MMLocalClass___get_instantiate_type(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
803 fra.me.REG[2] = fra.me.REG[3];
804 }
805 /* ./metamodel//genericity.nit:145 */
806 goto label2;
807 label2: while(0);
808 stack_frame_head = fra.me.prev;
809 return fra.me.REG[2];
810 }
811 val_t metamodel___genericity___MMTypeGeneric___adapt_to(val_t p0, val_t p1){
812 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
813 val_t REGB0;
814 val_t REGB1;
815 val_t REGB2;
816 val_t tmp;
817 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
818 fra.me.file = LOCATE_metamodel___genericity;
819 fra.me.line = 148;
820 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___adapt_to;
821 fra.me.has_broke = 0;
822 fra.me.REG_size = 6;
823 fra.me.nitni_local_ref_head = NULL;
824 fra.me.REG[0] = NIT_NULL;
825 fra.me.REG[1] = NIT_NULL;
826 fra.me.REG[2] = NIT_NULL;
827 fra.me.REG[3] = NIT_NULL;
828 fra.me.REG[4] = NIT_NULL;
829 fra.me.REG[5] = NIT_NULL;
830 fra.me.REG[0] = p0;
831 fra.me.REG[1] = p1;
832 /* ./metamodel//genericity.nit:150 */
833 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
834 /* ./metamodel//genericity.nit:151 */
835 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
836 if (UNTAG_Bool(REGB0)) {
837 } else {
838 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 151);
839 }
840 fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
841 /* ./../lib/standard//collection//array.nit:269 */
842 REGB0 = TAG_Int(0);
843 /* ./../lib/standard//collection//array.nit:270 */
844 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
845 if (UNTAG_Bool(REGB1)) {
846 } else {
847 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
848 }
849 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
850 /* ./../lib/standard//collection//array.nit:271 */
851 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
852 /* ./../lib/standard//collection//array.nit:272 */
853 while(1) {
854 /* ./../lib/standard//collection//array.nit:24 */
855 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
856 if (UNTAG_Bool(REGB1)) {
857 } else {
858 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
859 }
860 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
861 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
862 if (UNTAG_Bool(REGB2)) {
863 } else {
864 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
865 }
866 /* ./../lib/standard//kernel.nit:232 */
867 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
868 /* ./../lib/standard//collection//array.nit:272 */
869 if (UNTAG_Bool(REGB1)) {
870 /* ./../lib/standard//collection//array.nit:273 */
871 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
872 if (UNTAG_Bool(REGB1)) {
873 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
874 }
875 /* ./../lib/standard//collection//array.nit:718 */
876 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
877 /* ./metamodel//genericity.nit:152 */
878 fra.me.REG[5] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
879 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
880 /* ./../lib/standard//collection//array.nit:274 */
881 REGB1 = TAG_Int(1);
882 /* ./../lib/standard//kernel.nit:235 */
883 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
884 /* ./../lib/standard//collection//array.nit:274 */
885 REGB0 = REGB1;
886 } else {
887 /* ./../lib/standard//collection//array.nit:272 */
888 goto label1;
889 }
890 }
891 label1: while(0);
892 /* ./metamodel//genericity.nit:154 */
893 REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
894 if (UNTAG_Bool(REGB0)) {
895 } else {
896 nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___genericity, 154);
897 }
898 fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
899 fra.me.REG[2] = CALL_metamodel___genericity___MMLocalClass___get_instantiate_type(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
900 /* ./metamodel//genericity.nit:155 */
901 goto label2;
902 label2: while(0);
903 stack_frame_head = fra.me.prev;
904 return fra.me.REG[2];
905 }
906 val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1){
907 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
908 val_t REGB0;
909 val_t REGB1;
910 val_t REGB2;
911 val_t REGB3;
912 val_t REGB4;
913 val_t REGB5;
914 val_t REGB6;
915 val_t tmp;
916 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
917 fra.me.file = LOCATE_metamodel___genericity;
918 fra.me.line = 158;
919 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___params_equals;
920 fra.me.has_broke = 0;
921 fra.me.REG_size = 4;
922 fra.me.nitni_local_ref_head = NULL;
923 fra.me.REG[0] = NIT_NULL;
924 fra.me.REG[1] = NIT_NULL;
925 fra.me.REG[2] = NIT_NULL;
926 fra.me.REG[3] = NIT_NULL;
927 fra.me.REG[0] = p0;
928 fra.me.REG[1] = p1;
929 /* ./../lib/standard//collection//array.nit:24 */
930 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
931 if (UNTAG_Bool(REGB0)) {
932 } else {
933 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
934 }
935 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
936 /* ./metamodel//genericity.nit:160 */
937 REGB1 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
938 if (UNTAG_Bool(REGB1)) {
939 } else {
940 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 160);
941 }
942 fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
943 /* ./../lib/standard//collection//array.nit:24 */
944 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
945 if (UNTAG_Bool(REGB1)) {
946 } else {
947 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
948 }
949 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
950 /* ./metamodel//genericity.nit:160 */
951 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
952 if (UNTAG_Bool(REGB2)) {
953 } else {
954 /* ./../lib/standard//kernel.nit:227 */
955 REGB1 = TAG_Bool((REGB0)==(REGB1));
956 /* ./metamodel//genericity.nit:160 */
957 REGB2 = REGB1;
958 }
959 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
960 if (UNTAG_Bool(REGB2)) {
961 /* ./metamodel//genericity.nit:161 */
962 REGB2 = TAG_Bool(false);
963 goto label1;
964 }
965 /* ./metamodel//genericity.nit:163 */
966 REGB1 = TAG_Int(0);
967 /* ./../lib/standard//collection//array.nit:24 */
968 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
969 if (UNTAG_Bool(REGB0)) {
970 } else {
971 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
972 }
973 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
974 /* ./../lib/standard//kernel.nit:352 */
975 while(1) {
976 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
977 if (UNTAG_Bool(REGB3)) {
978 } else {
979 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
980 }
981 /* ./../lib/standard//kernel.nit:232 */
982 REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
983 /* ./../lib/standard//kernel.nit:352 */
984 if (UNTAG_Bool(REGB3)) {
985 /* ./metamodel//genericity.nit:163 */
986 REGB3 = REGB1;
987 /* ./metamodel//genericity.nit:164 */
988 REGB4 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
989 if (UNTAG_Bool(REGB4)) {
990 } else {
991 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 164);
992 }
993 fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
994 /* ./../lib/standard//collection//array.nit:278 */
995 REGB4 = REGB3;
996 /* ./../lib/standard//collection//array.nit:280 */
997 REGB5 = TAG_Int(0);
998 REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
999 if (UNTAG_Bool(REGB6)) {
1000 } else {
1001 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1002 }
1003 /* ./../lib/standard//kernel.nit:233 */
1004 REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
1005 /* ./../lib/standard//collection//array.nit:280 */
1006 if (UNTAG_Bool(REGB5)) {
1007 REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1008 if (UNTAG_Bool(REGB5)) {
1009 } else {
1010 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1011 }
1012 REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1013 REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
1014 if (UNTAG_Bool(REGB6)) {
1015 } else {
1016 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1017 }
1018 /* ./../lib/standard//kernel.nit:232 */
1019 REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
1020 } else {
1021 /* ./../lib/standard//collection//array.nit:280 */
1022 REGB6 = TAG_Bool(false);
1023 REGB5 = REGB6;
1024 }
1025 if (UNTAG_Bool(REGB5)) {
1026 } else {
1027 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1028 }
1029 /* ./../lib/standard//collection//array.nit:281 */
1030 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1031 REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1032 if (UNTAG_Bool(REGB5)) {
1033 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1034 }
1035 /* ./../lib/standard//collection//array.nit:718 */
1036 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
1037 /* ./../lib/standard//collection//array.nit:281 */
1038 goto label2;
1039 label2: while(0);
1040 /* ./../lib/standard//collection//array.nit:278 */
1041 fra.me.REG[3] = fra.me.REG[1];
1042 /* ./../lib/standard//collection//array.nit:280 */
1043 REGB4 = TAG_Int(0);
1044 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1045 if (UNTAG_Bool(REGB5)) {
1046 } else {
1047 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1048 }
1049 /* ./../lib/standard//kernel.nit:233 */
1050 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1051 /* ./../lib/standard//collection//array.nit:280 */
1052 if (UNTAG_Bool(REGB4)) {
1053 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1054 if (UNTAG_Bool(REGB4)) {
1055 } else {
1056 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1057 }
1058 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1059 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1060 if (UNTAG_Bool(REGB5)) {
1061 } else {
1062 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1063 }
1064 /* ./../lib/standard//kernel.nit:232 */
1065 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1066 } else {
1067 /* ./../lib/standard//collection//array.nit:280 */
1068 REGB5 = TAG_Bool(false);
1069 REGB4 = REGB5;
1070 }
1071 if (UNTAG_Bool(REGB4)) {
1072 } else {
1073 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1074 }
1075 /* ./../lib/standard//collection//array.nit:281 */
1076 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1077 REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1078 if (UNTAG_Bool(REGB4)) {
1079 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1080 }
1081 /* ./../lib/standard//collection//array.nit:718 */
1082 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
1083 /* ./../lib/standard//collection//array.nit:281 */
1084 goto label3;
1085 label3: while(0);
1086 /* ./metamodel//genericity.nit:164 */
1087 REGB3 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[3]));
1088 if (UNTAG_Bool(REGB3)) {
1089 } else {
1090 REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1091 if (UNTAG_Bool(REGB4)) {
1092 REGB4 = TAG_Bool(false);
1093 REGB3 = REGB4;
1094 } else {
1095 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1096 REGB3 = REGB4;
1097 }
1098 }
1099 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1100 if (UNTAG_Bool(REGB3)) {
1101 /* ./metamodel//genericity.nit:165 */
1102 REGB3 = TAG_Bool(false);
1103 REGB2 = REGB3;
1104 goto label1;
1105 }
1106 /* ./../lib/standard//kernel.nit:354 */
1107 REGB3 = TAG_Int(1);
1108 /* ./../lib/standard//kernel.nit:235 */
1109 REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
1110 /* ./../lib/standard//kernel.nit:354 */
1111 REGB1 = REGB3;
1112 } else {
1113 /* ./../lib/standard//kernel.nit:352 */
1114 goto label4;
1115 }
1116 }
1117 label4: while(0);
1118 /* ./metamodel//genericity.nit:168 */
1119 REGB1 = TAG_Bool(true);
1120 REGB2 = REGB1;
1121 goto label1;
1122 label1: while(0);
1123 stack_frame_head = fra.me.prev;
1124 return REGB2;
1125 }
1126 val_t metamodel___genericity___MMTypeGeneric___to_s(val_t p0){
1127 struct {struct stack_frame_t me; val_t MORE_REG[3];} 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_metamodel___genericity;
1136 fra.me.line = 171;
1137 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___to_s;
1138 fra.me.has_broke = 0;
1139 fra.me.REG_size = 4;
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[0] = p0;
1146 /* ./metamodel//genericity.nit:171 */
1147 fra.me.REG[1] = fra.me.REG[0];
1148 /* ./metamodel//genericity.nit:173 */
1149 REGB0 = TAG_Int(5);
1150 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1151 if (!once_value_1) {
1152 fra.me.REG[3] = BOX_NativeString("");
1153 REGB0 = TAG_Int(0);
1154 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1155 once_value_1 = fra.me.REG[3];
1156 register_static_object(&once_value_1);
1157 } else fra.me.REG[3] = once_value_1;
1158 fra.me.REG[3] = fra.me.REG[3];
1159 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1160 fra.me.REG[0] = CALL_SUPER_metamodel___genericity___MMTypeGeneric___to_s(fra.me.REG[0])(fra.me.REG[0]);
1161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1162 if (!once_value_2) {
1163 fra.me.REG[0] = BOX_NativeString("[");
1164 REGB0 = TAG_Int(1);
1165 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1166 once_value_2 = fra.me.REG[0];
1167 register_static_object(&once_value_2);
1168 } else fra.me.REG[0] = once_value_2;
1169 fra.me.REG[0] = fra.me.REG[0];
1170 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1171 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[1])!=NIT_NULL);
1172 if (UNTAG_Bool(REGB0)) {
1173 } else {
1174 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 173);
1175 }
1176 fra.me.REG[1] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[1]);
1177 if (!once_value_3) {
1178 fra.me.REG[0] = BOX_NativeString(", ");
1179 REGB0 = TAG_Int(2);
1180 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1181 once_value_3 = fra.me.REG[0];
1182 register_static_object(&once_value_3);
1183 } else fra.me.REG[0] = once_value_3;
1184 fra.me.REG[0] = fra.me.REG[0];
1185 fra.me.REG[0] = CALL_standard___string___Collection___join(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1186 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1187 if (!once_value_4) {
1188 fra.me.REG[0] = BOX_NativeString("]");
1189 REGB0 = TAG_Int(1);
1190 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1191 once_value_4 = fra.me.REG[0];
1192 register_static_object(&once_value_4);
1193 } else fra.me.REG[0] = once_value_4;
1194 fra.me.REG[0] = fra.me.REG[0];
1195 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1196 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1197 goto label5;
1198 label5: while(0);
1199 stack_frame_head = fra.me.prev;
1200 return fra.me.REG[2];
1201 }
1202 val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
1203 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1204 val_t REGB0;
1205 val_t REGB1;
1206 val_t REGB2;
1207 val_t REGB3;
1208 val_t REGB4;
1209 val_t REGB5;
1210 val_t tmp;
1211 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1212 fra.me.file = LOCATE_metamodel___genericity;
1213 fra.me.line = 176;
1214 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___is_subtype;
1215 fra.me.has_broke = 0;
1216 fra.me.REG_size = 4;
1217 fra.me.nitni_local_ref_head = NULL;
1218 fra.me.REG[0] = NIT_NULL;
1219 fra.me.REG[1] = NIT_NULL;
1220 fra.me.REG[2] = NIT_NULL;
1221 fra.me.REG[3] = NIT_NULL;
1222 fra.me.REG[0] = p0;
1223 fra.me.REG[1] = p1;
1224 /* ./metamodel//genericity.nit:180 */
1225 REGB0 = TAG_Int(0);
1226 REGB1 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
1227 if (UNTAG_Bool(REGB1)) {
1228 } else {
1229 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 180);
1230 }
1231 fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
1232 /* ./../lib/standard//collection//array.nit:24 */
1233 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1234 if (UNTAG_Bool(REGB1)) {
1235 } else {
1236 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1237 }
1238 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1239 /* ./../lib/standard//kernel.nit:352 */
1240 while(1) {
1241 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1242 if (UNTAG_Bool(REGB2)) {
1243 } else {
1244 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1245 }
1246 /* ./../lib/standard//kernel.nit:232 */
1247 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1248 /* ./../lib/standard//kernel.nit:352 */
1249 if (UNTAG_Bool(REGB2)) {
1250 /* ./metamodel//genericity.nit:180 */
1251 REGB2 = REGB0;
1252 /* ./metamodel//genericity.nit:182 */
1253 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeGeneric___params(fra.me.REG[1])(fra.me.REG[1]);
1254 /* ./../lib/standard//collection//array.nit:278 */
1255 REGB3 = REGB2;
1256 /* ./../lib/standard//collection//array.nit:280 */
1257 REGB4 = TAG_Int(0);
1258 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1259 if (UNTAG_Bool(REGB5)) {
1260 } else {
1261 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1262 }
1263 /* ./../lib/standard//kernel.nit:233 */
1264 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1265 /* ./../lib/standard//collection//array.nit:280 */
1266 if (UNTAG_Bool(REGB4)) {
1267 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1268 if (UNTAG_Bool(REGB4)) {
1269 } else {
1270 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1271 }
1272 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1273 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1274 if (UNTAG_Bool(REGB5)) {
1275 } else {
1276 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1277 }
1278 /* ./../lib/standard//kernel.nit:232 */
1279 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1280 } else {
1281 /* ./../lib/standard//collection//array.nit:280 */
1282 REGB5 = TAG_Bool(false);
1283 REGB4 = REGB5;
1284 }
1285 if (UNTAG_Bool(REGB4)) {
1286 } else {
1287 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1288 }
1289 /* ./../lib/standard//collection//array.nit:281 */
1290 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1291 REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1292 if (UNTAG_Bool(REGB4)) {
1293 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1294 }
1295 /* ./../lib/standard//collection//array.nit:718 */
1296 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
1297 /* ./../lib/standard//collection//array.nit:281 */
1298 goto label1;
1299 label1: while(0);
1300 /* ./metamodel//genericity.nit:182 */
1301 REGB3 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
1302 if (UNTAG_Bool(REGB3)) {
1303 } else {
1304 nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 182);
1305 }
1306 fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
1307 /* ./../lib/standard//collection//array.nit:280 */
1308 REGB3 = TAG_Int(0);
1309 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1310 if (UNTAG_Bool(REGB4)) {
1311 } else {
1312 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1313 }
1314 /* ./../lib/standard//kernel.nit:233 */
1315 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1316 /* ./../lib/standard//collection//array.nit:280 */
1317 if (UNTAG_Bool(REGB3)) {
1318 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1319 if (UNTAG_Bool(REGB3)) {
1320 } else {
1321 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1322 }
1323 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1324 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1325 if (UNTAG_Bool(REGB4)) {
1326 } else {
1327 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1328 }
1329 /* ./../lib/standard//kernel.nit:232 */
1330 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1331 } else {
1332 /* ./../lib/standard//collection//array.nit:280 */
1333 REGB4 = TAG_Bool(false);
1334 REGB3 = REGB4;
1335 }
1336 if (UNTAG_Bool(REGB3)) {
1337 } else {
1338 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1339 }
1340 /* ./../lib/standard//collection//array.nit:281 */
1341 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1342 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1343 if (UNTAG_Bool(REGB3)) {
1344 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1345 }
1346 /* ./../lib/standard//collection//array.nit:718 */
1347 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
1348 /* ./../lib/standard//collection//array.nit:281 */
1349 goto label2;
1350 label2: while(0);
1351 /* ./metamodel//genericity.nit:182 */
1352 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1353 if (UNTAG_Bool(REGB2)) {
1354 nit_abort("Reciever is null", NULL, LOCATE_metamodel___genericity, 182);
1355 }
1356 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1357 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1358 if (UNTAG_Bool(REGB2)) {
1359 /* ./metamodel//genericity.nit:183 */
1360 REGB2 = TAG_Bool(false);
1361 goto label3;
1362 }
1363 /* ./../lib/standard//kernel.nit:354 */
1364 REGB3 = TAG_Int(1);
1365 /* ./../lib/standard//kernel.nit:235 */
1366 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1367 /* ./../lib/standard//kernel.nit:354 */
1368 REGB0 = REGB3;
1369 } else {
1370 /* ./../lib/standard//kernel.nit:352 */
1371 goto label4;
1372 }
1373 }
1374 label4: while(0);
1375 /* ./metamodel//genericity.nit:186 */
1376 REGB0 = TAG_Bool(true);
1377 REGB2 = REGB0;
1378 goto label3;
1379 label3: while(0);
1380 stack_frame_head = fra.me.prev;
1381 return REGB2;
1382 }
1383 void metamodel___genericity___MMTypeGeneric___init(val_t p0, val_t p1, val_t p2, int* init_table){
1384 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___genericity___MMTypeGeneric].i;
1385 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1386 val_t tmp;
1387 if (init_table[itpos0]) return;
1388 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1389 fra.me.file = LOCATE_metamodel___genericity;
1390 fra.me.line = 189;
1391 fra.me.meth = LOCATE_metamodel___genericity___MMTypeGeneric___init;
1392 fra.me.has_broke = 0;
1393 fra.me.REG_size = 4;
1394 fra.me.nitni_local_ref_head = NULL;
1395 fra.me.REG[0] = NIT_NULL;
1396 fra.me.REG[1] = NIT_NULL;
1397 fra.me.REG[2] = NIT_NULL;
1398 fra.me.REG[3] = NIT_NULL;
1399 fra.me.REG[0] = p0;
1400 fra.me.REG[1] = p1;
1401 fra.me.REG[2] = p2;
1402 /* ./metamodel//genericity.nit:189 */
1403 fra.me.REG[3] = fra.me.REG[0];
1404 /* ./metamodel//genericity.nit:191 */
1405 CALL_metamodel___static_type___MMTypeClass___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
1406 /* ./metamodel//genericity.nit:192 */
1407 ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[3]) = fra.me.REG[2];
1408 stack_frame_head = fra.me.prev;
1409 init_table[itpos0] = 1;
1410 return;
1411 }
1412 val_t metamodel___genericity___MMTypeFormalParameter___def_class(val_t p0){
1413 struct {struct stack_frame_t me;} fra;
1414 val_t REGB0;
1415 val_t tmp;
1416 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1417 fra.me.file = LOCATE_metamodel___genericity;
1418 fra.me.line = 198;
1419 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___def_class;
1420 fra.me.has_broke = 0;
1421 fra.me.REG_size = 1;
1422 fra.me.nitni_local_ref_head = NULL;
1423 fra.me.REG[0] = NIT_NULL;
1424 fra.me.REG[0] = p0;
1425 /* ./metamodel//genericity.nit:198 */
1426 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0])!=NIT_NULL);
1427 if (UNTAG_Bool(REGB0)) {
1428 } else {
1429 nit_abort("Uninitialized attribute %s", "_def_class", LOCATE_metamodel___genericity, 198);
1430 }
1431 fra.me.REG[0] = ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0]);
1432 stack_frame_head = fra.me.prev;
1433 return fra.me.REG[0];
1434 }
1435 val_t metamodel___genericity___MMTypeFormalParameter___position(val_t p0){
1436 struct {struct stack_frame_t me;} fra;
1437 val_t REGB0;
1438 val_t tmp;
1439 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1440 fra.me.file = LOCATE_metamodel___genericity;
1441 fra.me.line = 201;
1442 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___position;
1443 fra.me.has_broke = 0;
1444 fra.me.REG_size = 1;
1445 fra.me.nitni_local_ref_head = NULL;
1446 fra.me.REG[0] = NIT_NULL;
1447 fra.me.REG[0] = p0;
1448 /* ./metamodel//genericity.nit:201 */
1449 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____position(fra.me.REG[0])!=NIT_NULL);
1450 if (UNTAG_Bool(REGB0)) {
1451 } else {
1452 nit_abort("Uninitialized attribute %s", "_position", LOCATE_metamodel___genericity, 201);
1453 }
1454 REGB0 = ATTR_metamodel___genericity___MMTypeFormalParameter____position(fra.me.REG[0]);
1455 stack_frame_head = fra.me.prev;
1456 return REGB0;
1457 }
1458 val_t metamodel___genericity___MMTypeFormalParameter___mmmodule(val_t p0){
1459 struct {struct stack_frame_t me;} fra;
1460 val_t REGB0;
1461 val_t tmp;
1462 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1463 fra.me.file = LOCATE_metamodel___genericity;
1464 fra.me.line = 204;
1465 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___mmmodule;
1466 fra.me.has_broke = 0;
1467 fra.me.REG_size = 1;
1468 fra.me.nitni_local_ref_head = NULL;
1469 fra.me.REG[0] = NIT_NULL;
1470 fra.me.REG[0] = p0;
1471 /* ./metamodel//genericity.nit:204 */
1472 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0])!=NIT_NULL);
1473 if (UNTAG_Bool(REGB0)) {
1474 } else {
1475 nit_abort("Uninitialized attribute %s", "_def_class", LOCATE_metamodel___genericity, 204);
1476 }
1477 fra.me.REG[0] = ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0]);
1478 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1479 goto label1;
1480 label1: while(0);
1481 stack_frame_head = fra.me.prev;
1482 return fra.me.REG[0];
1483 }
1484 val_t metamodel___genericity___MMTypeFormalParameter___for_module(val_t p0, val_t p1){
1485 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1486 val_t REGB0;
1487 val_t REGB1;
1488 val_t tmp;
1489 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1490 fra.me.file = LOCATE_metamodel___genericity;
1491 fra.me.line = 206;
1492 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___for_module;
1493 fra.me.has_broke = 0;
1494 fra.me.REG_size = 4;
1495 fra.me.nitni_local_ref_head = NULL;
1496 fra.me.REG[0] = NIT_NULL;
1497 fra.me.REG[1] = NIT_NULL;
1498 fra.me.REG[2] = NIT_NULL;
1499 fra.me.REG[3] = NIT_NULL;
1500 fra.me.REG[0] = p0;
1501 fra.me.REG[1] = p1;
1502 /* ./metamodel//genericity.nit:208 */
1503 fra.me.REG[2] = fra.me.REG[0];
1504 /* ./metamodel//genericity.nit:209 */
1505 fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1506 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
1507 if (UNTAG_Bool(REGB0)) {
1508 } else {
1509 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1510 REGB0 = REGB1;
1511 }
1512 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1513 if (UNTAG_Bool(REGB0)) {
1514 /* ./metamodel//genericity.nit:210 */
1515 REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0])!=NIT_NULL);
1516 if (UNTAG_Bool(REGB0)) {
1517 } else {
1518 nit_abort("Uninitialized attribute %s", "_def_class", LOCATE_metamodel___genericity, 210);
1519 }
1520 fra.me.REG[3] = ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[0]);
1521 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
1522 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1523 REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[0])(fra.me.REG[0]);
1524 fra.me.REG[3] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[3])(fra.me.REG[3], REGB0);
1525 fra.me.REG[2] = fra.me.REG[3];
1526 }
1527 /* ./metamodel//genericity.nit:212 */
1528 goto label1;
1529 label1: while(0);
1530 stack_frame_head = fra.me.prev;
1531 return fra.me.REG[2];
1532 }
1533 val_t metamodel___genericity___MMTypeFormalParameter___upcast_for(val_t p0, val_t p1){
1534 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1535 val_t REGB0;
1536 val_t tmp;
1537 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1538 fra.me.file = LOCATE_metamodel___genericity;
1539 fra.me.line = 215;
1540 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___upcast_for;
1541 fra.me.has_broke = 0;
1542 fra.me.REG_size = 2;
1543 fra.me.nitni_local_ref_head = NULL;
1544 fra.me.REG[0] = NIT_NULL;
1545 fra.me.REG[1] = NIT_NULL;
1546 fra.me.REG[0] = p0;
1547 fra.me.REG[1] = p1;
1548 /* ./metamodel//genericity.nit:215 */
1549 fra.me.REG[0] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]);
1550 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1551 if (UNTAG_Bool(REGB0)) {
1552 nit_abort("Reciever is null", NULL, LOCATE_metamodel___genericity, 215);
1553 }
1554 fra.me.REG[1] = CALL_metamodel___static_type___MMType___upcast_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1555 goto label1;
1556 label1: while(0);
1557 stack_frame_head = fra.me.prev;
1558 return fra.me.REG[1];
1559 }
1560 void metamodel___genericity___MMTypeFormalParameter___bound__eq(val_t p0, val_t p1){
1561 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1562 val_t REGB0;
1563 val_t REGB1;
1564 val_t tmp;
1565 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1566 fra.me.file = LOCATE_metamodel___genericity;
1567 fra.me.line = 217;
1568 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___bound__eq;
1569 fra.me.has_broke = 0;
1570 fra.me.REG_size = 3;
1571 fra.me.nitni_local_ref_head = NULL;
1572 fra.me.REG[0] = NIT_NULL;
1573 fra.me.REG[1] = NIT_NULL;
1574 fra.me.REG[2] = NIT_NULL;
1575 fra.me.REG[0] = p0;
1576 fra.me.REG[1] = p1;
1577 /* ./metamodel//genericity.nit:219 */
1578 fra.me.REG[2] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]);
1579 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1580 if (UNTAG_Bool(REGB0)) {
1581 } else {
1582 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1583 if (UNTAG_Bool(REGB1)) {
1584 REGB1 = TAG_Bool(false);
1585 REGB0 = REGB1;
1586 } else {
1587 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1588 REGB0 = REGB1;
1589 }
1590 }
1591 if (UNTAG_Bool(REGB0)) {
1592 } else {
1593 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 219);
1594 }
1595 /* ./metamodel//genericity.nit:220 */
1596 ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]) = fra.me.REG[1];
1597 stack_frame_head = fra.me.prev;
1598 return;
1599 }
1600 val_t metamodel___genericity___MMTypeFormalParameter___adapt_to(val_t p0, val_t p1){
1601 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1602 val_t REGB0;
1603 val_t REGB1;
1604 val_t REGB2;
1605 val_t tmp;
1606 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1607 fra.me.file = LOCATE_metamodel___genericity;
1608 fra.me.line = 223;
1609 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___adapt_to;
1610 fra.me.has_broke = 0;
1611 fra.me.REG_size = 3;
1612 fra.me.nitni_local_ref_head = NULL;
1613 fra.me.REG[0] = NIT_NULL;
1614 fra.me.REG[1] = NIT_NULL;
1615 fra.me.REG[2] = NIT_NULL;
1616 fra.me.REG[0] = p0;
1617 fra.me.REG[1] = p1;
1618 /* ./metamodel//genericity.nit:225 */
1619 fra.me.REG[2] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[1])(fra.me.REG[1]);
1620 fra.me.REG[1] = fra.me.REG[2];
1621 /* ./metamodel//genericity.nit:226 */
1622 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeFormalParameter___def_class(fra.me.REG[0])(fra.me.REG[0]);
1623 fra.me.REG[2] = CALL_metamodel___static_type___MMType___upcast_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1624 /* ./metamodel//genericity.nit:231 */
1625 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___genericity___MMTypeGeneric, ID_metamodel___genericity___MMTypeGeneric)) /*cast MMTypeGeneric*/;
1626 if (UNTAG_Bool(REGB0)) {
1627 } else {
1628 nit_abort("Assert failed", NULL, LOCATE_metamodel___genericity, 231);
1629 }
1630 /* ./metamodel//genericity.nit:232 */
1631 fra.me.REG[2] = CALL_metamodel___genericity___MMTypeGeneric___params(fra.me.REG[2])(fra.me.REG[2]);
1632 REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[0])(fra.me.REG[0]);
1633 /* ./../lib/standard//collection//array.nit:280 */
1634 REGB1 = TAG_Int(0);
1635 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1636 if (UNTAG_Bool(REGB2)) {
1637 } else {
1638 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1639 }
1640 /* ./../lib/standard//kernel.nit:233 */
1641 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
1642 /* ./../lib/standard//collection//array.nit:280 */
1643 if (UNTAG_Bool(REGB1)) {
1644 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1645 if (UNTAG_Bool(REGB1)) {
1646 } else {
1647 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1648 }
1649 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1650 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1651 if (UNTAG_Bool(REGB2)) {
1652 } else {
1653 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1654 }
1655 /* ./../lib/standard//kernel.nit:232 */
1656 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1657 } else {
1658 /* ./../lib/standard//collection//array.nit:280 */
1659 REGB2 = TAG_Bool(false);
1660 REGB1 = REGB2;
1661 }
1662 if (UNTAG_Bool(REGB1)) {
1663 } else {
1664 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1665 }
1666 /* ./../lib/standard//collection//array.nit:281 */
1667 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1668 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1669 if (UNTAG_Bool(REGB1)) {
1670 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1671 }
1672 /* ./../lib/standard//collection//array.nit:718 */
1673 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
1674 /* ./../lib/standard//collection//array.nit:281 */
1675 goto label1;
1676 label1: while(0);
1677 /* ./metamodel//genericity.nit:233 */
1678 goto label2;
1679 label2: while(0);
1680 stack_frame_head = fra.me.prev;
1681 return fra.me.REG[2];
1682 }
1683 void metamodel___genericity___MMTypeFormalParameter___with_bound(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
1684 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___genericity___MMTypeFormalParameter].i;
1685 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1686 val_t REGB0;
1687 val_t tmp;
1688 if (init_table[itpos1]) return;
1689 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1690 fra.me.file = LOCATE_metamodel___genericity;
1691 fra.me.line = 236;
1692 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___with_bound;
1693 fra.me.has_broke = 0;
1694 fra.me.REG_size = 4;
1695 fra.me.nitni_local_ref_head = NULL;
1696 fra.me.REG[0] = NIT_NULL;
1697 fra.me.REG[1] = NIT_NULL;
1698 fra.me.REG[2] = NIT_NULL;
1699 fra.me.REG[3] = NIT_NULL;
1700 fra.me.REG[0] = p0;
1701 fra.me.REG[1] = p1;
1702 REGB0 = p2;
1703 fra.me.REG[2] = p3;
1704 fra.me.REG[3] = p4;
1705 /* ./metamodel//genericity.nit:238 */
1706 CALL_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
1707 /* ./metamodel//genericity.nit:239 */
1708 ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]) = fra.me.REG[3];
1709 stack_frame_head = fra.me.prev;
1710 init_table[itpos1] = 1;
1711 return;
1712 }
1713 void metamodel___genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
1714 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___genericity___MMTypeFormalParameter].i;
1715 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1716 val_t REGB0;
1717 val_t tmp;
1718 if (init_table[itpos2]) return;
1719 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1720 fra.me.file = LOCATE_metamodel___genericity;
1721 fra.me.line = 242;
1722 fra.me.meth = LOCATE_metamodel___genericity___MMTypeFormalParameter___init;
1723 fra.me.has_broke = 0;
1724 fra.me.REG_size = 4;
1725 fra.me.nitni_local_ref_head = NULL;
1726 fra.me.REG[0] = NIT_NULL;
1727 fra.me.REG[1] = NIT_NULL;
1728 fra.me.REG[2] = NIT_NULL;
1729 fra.me.REG[3] = NIT_NULL;
1730 fra.me.REG[0] = p0;
1731 fra.me.REG[1] = p1;
1732 REGB0 = p2;
1733 fra.me.REG[2] = p3;
1734 /* ./metamodel//genericity.nit:242 */
1735 fra.me.REG[3] = fra.me.REG[0];
1736 /* ./metamodel//genericity.nit:244 */
1737 CALL_metamodel___type_formal___MMTypeFormal___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], NIT_NULL, init_table);
1738 /* ./metamodel//genericity.nit:245 */
1739 ATTR_metamodel___genericity___MMTypeFormalParameter____position(fra.me.REG[3]) = REGB0;
1740 /* ./metamodel//genericity.nit:246 */
1741 ATTR_metamodel___genericity___MMTypeFormalParameter____def_class(fra.me.REG[3]) = fra.me.REG[2];
1742 stack_frame_head = fra.me.prev;
1743 init_table[itpos2] = 1;
1744 return;
1745 }
1746 val_t metamodel___genericity___MMTypeNone___is_generic(val_t p0){
1747 struct {struct stack_frame_t me;} fra;
1748 val_t REGB0;
1749 val_t tmp;
1750 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1751 fra.me.file = LOCATE_metamodel___genericity;
1752 fra.me.line = 251;
1753 fra.me.meth = LOCATE_metamodel___genericity___MMTypeNone___is_generic;
1754 fra.me.has_broke = 0;
1755 fra.me.REG_size = 1;
1756 fra.me.nitni_local_ref_head = NULL;
1757 fra.me.REG[0] = NIT_NULL;
1758 fra.me.REG[0] = p0;
1759 /* ./metamodel//genericity.nit:251 */
1760 REGB0 = TAG_Bool(false);
1761 goto label1;
1762 label1: while(0);
1763 stack_frame_head = fra.me.prev;
1764 return REGB0;
1765 }
1766 val_t metamodel___genericity___MMTypeNone___for_module(val_t p0, val_t p1){
1767 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1768 val_t tmp;
1769 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1770 fra.me.file = LOCATE_metamodel___genericity;
1771 fra.me.line = 252;
1772 fra.me.meth = LOCATE_metamodel___genericity___MMTypeNone___for_module;
1773 fra.me.has_broke = 0;
1774 fra.me.REG_size = 2;
1775 fra.me.nitni_local_ref_head = NULL;
1776 fra.me.REG[0] = NIT_NULL;
1777 fra.me.REG[1] = NIT_NULL;
1778 fra.me.REG[0] = p0;
1779 fra.me.REG[1] = p1;
1780 /* ./metamodel//genericity.nit:252 */
1781 goto label1;
1782 label1: while(0);
1783 stack_frame_head = fra.me.prev;
1784 return fra.me.REG[0];
1785 }
1786 val_t metamodel___genericity___MMTypeNone___adapt_to(val_t p0, val_t p1){
1787 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1788 val_t tmp;
1789 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1790 fra.me.file = LOCATE_metamodel___genericity;
1791 fra.me.line = 253;
1792 fra.me.meth = LOCATE_metamodel___genericity___MMTypeNone___adapt_to;
1793 fra.me.has_broke = 0;
1794 fra.me.REG_size = 2;
1795 fra.me.nitni_local_ref_head = NULL;
1796 fra.me.REG[0] = NIT_NULL;
1797 fra.me.REG[1] = NIT_NULL;
1798 fra.me.REG[0] = p0;
1799 fra.me.REG[1] = p1;
1800 /* ./metamodel//genericity.nit:253 */
1801 goto label1;
1802 label1: while(0);
1803 stack_frame_head = fra.me.prev;
1804 return fra.me.REG[0];
1805 }