c_src: updates for latest fixes
[nit.git] / c_src / icode___icode_builder._sep.c
1 /* This C file is generated by NIT to compile module icode___icode_builder. */
2 #include "icode___icode_builder._sep.h"
3 void icode___icode_builder___ICodeBuilder___stmt(val_t p0, val_t p1){
4 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_icode___icode_builder;
9 fra.me.line = 24;
10 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___stmt;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 3;
13 fra.me.nitni_local_ref_head = NULL;
14 fra.me.REG[0] = NIT_NULL;
15 fra.me.REG[1] = NIT_NULL;
16 fra.me.REG[2] = NIT_NULL;
17 fra.me.REG[0] = p0;
18 fra.me.REG[1] = p1;
19 /* ./icode//icode_builder.nit:28 */
20 fra.me.REG[2] = ATTR_icode___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]);
21 CALL_icode___icode_base___ICode___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
22 /* ./icode//icode_builder.nit:29 */
23 REGB0 = TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
24 if (UNTAG_Bool(REGB0)) {
25 } else {
26 nit_abort("Uninitialized attribute %s", "_seq", LOCATE_icode___icode_builder, 29);
27 }
28 fra.me.REG[0] = ATTR_icode___icode_builder___ICodeBuilder____seq(fra.me.REG[0]);
29 fra.me.REG[0] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[0])(fra.me.REG[0]);
30 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
31 stack_frame_head = fra.me.prev;
32 return;
33 }
34 val_t icode___icode_builder___ICodeBuilder___expr(val_t p0, val_t p1, val_t p2){
35 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
36 val_t REGB0;
37 val_t REGB1;
38 val_t tmp;
39 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
40 fra.me.file = LOCATE_icode___icode_builder;
41 fra.me.line = 32;
42 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___expr;
43 fra.me.has_broke = 0;
44 fra.me.REG_size = 4;
45 fra.me.nitni_local_ref_head = NULL;
46 fra.me.REG[0] = NIT_NULL;
47 fra.me.REG[1] = NIT_NULL;
48 fra.me.REG[2] = NIT_NULL;
49 fra.me.REG[3] = NIT_NULL;
50 fra.me.REG[0] = p0;
51 fra.me.REG[1] = p1;
52 fra.me.REG[2] = p2;
53 /* ./icode//icode_builder.nit:35 */
54 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
55 /* ./icode//icode_builder.nit:36 */
56 fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[1])(fra.me.REG[1]);
57 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
58 if (UNTAG_Bool(REGB0)) {
59 } else {
60 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
61 if (UNTAG_Bool(REGB1)) {
62 REGB1 = TAG_Bool(false);
63 REGB0 = REGB1;
64 } else {
65 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
66 REGB0 = REGB1;
67 }
68 }
69 if (UNTAG_Bool(REGB0)) {
70 } else {
71 nit_abort("Assert failed", NULL, LOCATE_icode___icode_builder, 36);
72 }
73 /* ./icode//icode_builder.nit:37 */
74 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
75 /* ./icode//icode_builder.nit:38 */
76 CALL_icode___icode_base___ICode___result__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
77 /* ./icode//icode_builder.nit:39 */
78 goto label1;
79 label1: while(0);
80 stack_frame_head = fra.me.prev;
81 return fra.me.REG[2];
82 }
83 void icode___icode_builder___ICodeBuilder___add_assignment(val_t p0, val_t p1, val_t p2){
84 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
85 val_t tmp;
86 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
87 fra.me.file = LOCATE_icode___icode_builder;
88 fra.me.line = 42;
89 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_assignment;
90 fra.me.has_broke = 0;
91 fra.me.REG_size = 3;
92 fra.me.nitni_local_ref_head = NULL;
93 fra.me.REG[0] = NIT_NULL;
94 fra.me.REG[1] = NIT_NULL;
95 fra.me.REG[2] = NIT_NULL;
96 fra.me.REG[0] = p0;
97 fra.me.REG[1] = p1;
98 fra.me.REG[2] = p2;
99 /* ./icode//icode_builder.nit:45 */
100 fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[1], fra.me.REG[2]);
101 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
102 stack_frame_head = fra.me.prev;
103 return;
104 }
105 void icode___icode_builder___ICodeBuilder___add_null_reciever_check(val_t p0, val_t p1){
106 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
107 val_t REGB0;
108 val_t tmp;
109 static val_t once_value_1; /* Once value */
110 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
111 fra.me.file = LOCATE_icode___icode_builder;
112 fra.me.line = 48;
113 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_null_reciever_check;
114 fra.me.has_broke = 0;
115 fra.me.REG_size = 4;
116 fra.me.nitni_local_ref_head = NULL;
117 fra.me.REG[0] = NIT_NULL;
118 fra.me.REG[1] = NIT_NULL;
119 fra.me.REG[2] = NIT_NULL;
120 fra.me.REG[3] = NIT_NULL;
121 fra.me.REG[0] = p0;
122 fra.me.REG[1] = p1;
123 /* ./icode//icode_builder.nit:51 */
124 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[0])(fra.me.REG[0]);
125 /* ./icode//icode_builder.nit:52 */
126 fra.me.REG[2] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[1], fra.me.REG[2]);
127 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
128 fra.me.REG[1] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[1])(fra.me.REG[1]);
129 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
130 /* ./icode//icode_builder.nit:53 */
131 fra.me.REG[1] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[1]);
132 /* ./icode//icode_builder.nit:54 */
133 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
134 /* ./icode//icode_builder.nit:55 */
135 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
136 /* ./icode//icode_builder.nit:56 */
137 fra.me.REG[1] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[1])(fra.me.REG[1]);
138 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
139 /* ./icode//icode_builder.nit:57 */
140 REGB0 = TAG_Int(0);
141 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
142 if (!once_value_1) {
143 fra.me.REG[3] = BOX_NativeString("Reciever is null");
144 REGB0 = TAG_Int(16);
145 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
146 once_value_1 = fra.me.REG[3];
147 register_static_object(&once_value_1);
148 } else fra.me.REG[3] = once_value_1;
149 fra.me.REG[3] = fra.me.REG[3];
150 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
151 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
152 /* ./icode//icode_builder.nit:58 */
153 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
154 stack_frame_head = fra.me.prev;
155 return;
156 }
157 void icode___icode_builder___ICodeBuilder___add_type_cast(val_t p0, val_t p1, val_t p2){
158 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
159 val_t REGB0;
160 val_t tmp;
161 static val_t once_value_1; /* Once value */
162 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
163 fra.me.file = LOCATE_icode___icode_builder;
164 fra.me.line = 61;
165 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_type_cast;
166 fra.me.has_broke = 0;
167 fra.me.REG_size = 4;
168 fra.me.nitni_local_ref_head = NULL;
169 fra.me.REG[0] = NIT_NULL;
170 fra.me.REG[1] = NIT_NULL;
171 fra.me.REG[2] = NIT_NULL;
172 fra.me.REG[3] = NIT_NULL;
173 fra.me.REG[0] = p0;
174 fra.me.REG[1] = p1;
175 fra.me.REG[2] = p2;
176 /* ./icode//icode_builder.nit:64 */
177 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
178 fra.me.REG[3] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
179 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
180 fra.me.REG[2] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
181 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
182 fra.me.REG[1] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[1])(fra.me.REG[1]);
183 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
184 /* ./icode//icode_builder.nit:65 */
185 fra.me.REG[1] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[1]);
186 /* ./icode//icode_builder.nit:66 */
187 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
188 /* ./icode//icode_builder.nit:67 */
189 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
190 /* ./icode//icode_builder.nit:68 */
191 fra.me.REG[1] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[1])(fra.me.REG[1]);
192 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
193 /* ./icode//icode_builder.nit:69 */
194 REGB0 = TAG_Int(0);
195 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
196 if (!once_value_1) {
197 fra.me.REG[3] = BOX_NativeString("Cast failed");
198 REGB0 = TAG_Int(11);
199 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
200 once_value_1 = fra.me.REG[3];
201 register_static_object(&once_value_1);
202 } else fra.me.REG[3] = once_value_1;
203 fra.me.REG[3] = fra.me.REG[3];
204 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
205 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
206 /* ./icode//icode_builder.nit:70 */
207 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
208 stack_frame_head = fra.me.prev;
209 return;
210 }
211 void icode___icode_builder___ICodeBuilder___add_attr_check(val_t p0, val_t p1, val_t p2){
212 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
213 val_t REGB0;
214 val_t tmp;
215 static val_t once_value_1; /* Once value */
216 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
217 fra.me.file = LOCATE_icode___icode_builder;
218 fra.me.line = 73;
219 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_attr_check;
220 fra.me.has_broke = 0;
221 fra.me.REG_size = 5;
222 fra.me.nitni_local_ref_head = NULL;
223 fra.me.REG[0] = NIT_NULL;
224 fra.me.REG[1] = NIT_NULL;
225 fra.me.REG[2] = NIT_NULL;
226 fra.me.REG[3] = NIT_NULL;
227 fra.me.REG[4] = NIT_NULL;
228 fra.me.REG[0] = p0;
229 fra.me.REG[1] = p1;
230 fra.me.REG[2] = p2;
231 /* ./icode//icode_builder.nit:76 */
232 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
233 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
234 if (UNTAG_Bool(REGB0)) {
235 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 76);
236 }
237 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
238 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
239 if (UNTAG_Bool(REGB0)) {
240 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 76);
241 }
242 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
243 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
244 if (UNTAG_Bool(REGB0)) {
245 /* ./icode//icode_builder.nit:77 */
246 fra.me.REG[2] = NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(fra.me.REG[1], fra.me.REG[2]);
247 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
248 fra.me.REG[3] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[3])(fra.me.REG[3]);
249 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
250 /* ./icode//icode_builder.nit:78 */
251 fra.me.REG[3] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
252 /* ./icode//icode_builder.nit:79 */
253 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
254 /* ./icode//icode_builder.nit:80 */
255 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
256 /* ./icode//icode_builder.nit:81 */
257 fra.me.REG[3] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
258 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
259 /* ./icode//icode_builder.nit:82 */
260 REGB0 = TAG_Int(1);
261 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
262 if (!once_value_1) {
263 fra.me.REG[4] = BOX_NativeString("Uninitialized attribute %s");
264 REGB0 = TAG_Int(26);
265 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
266 once_value_1 = fra.me.REG[4];
267 register_static_object(&once_value_1);
268 } else fra.me.REG[4] = once_value_1;
269 fra.me.REG[4] = fra.me.REG[4];
270 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
271 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
272 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
273 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
274 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
275 /* ./icode//icode_builder.nit:83 */
276 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
277 }
278 stack_frame_head = fra.me.prev;
279 return;
280 }
281 val_t icode___icode_builder___ICodeBuilder___add_attr_read(val_t p0, val_t p1, val_t p2){
282 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
283 val_t REGB0;
284 val_t tmp;
285 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
286 fra.me.file = LOCATE_icode___icode_builder;
287 fra.me.line = 87;
288 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_attr_read;
289 fra.me.has_broke = 0;
290 fra.me.REG_size = 4;
291 fra.me.nitni_local_ref_head = NULL;
292 fra.me.REG[0] = NIT_NULL;
293 fra.me.REG[1] = NIT_NULL;
294 fra.me.REG[2] = NIT_NULL;
295 fra.me.REG[3] = NIT_NULL;
296 fra.me.REG[0] = p0;
297 fra.me.REG[1] = p1;
298 fra.me.REG[2] = p2;
299 /* ./icode//icode_builder.nit:87 */
300 fra.me.REG[3] = fra.me.REG[0];
301 /* ./icode//icode_builder.nit:90 */
302 CALL_icode___icode_builder___ICodeBuilder___add_attr_check(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
303 /* ./icode//icode_builder.nit:91 */
304 fra.me.REG[2] = NEW_IAttrRead_icode___icode_base___IAttrRead___init(fra.me.REG[1], fra.me.REG[2]);
305 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
306 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
307 if (UNTAG_Bool(REGB0)) {
308 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 91);
309 }
310 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
311 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*/;
312 if (UNTAG_Bool(REGB0)) {
313 } else {
314 nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 91);
315 }
316 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
317 goto label1;
318 label1: while(0);
319 stack_frame_head = fra.me.prev;
320 return fra.me.REG[1];
321 }
322 void icode___icode_builder___ICodeBuilder___add_abort(val_t p0, val_t p1){
323 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
324 val_t REGB0;
325 val_t tmp;
326 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
327 fra.me.file = LOCATE_icode___icode_builder;
328 fra.me.line = 94;
329 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_abort;
330 fra.me.has_broke = 0;
331 fra.me.REG_size = 3;
332 fra.me.nitni_local_ref_head = NULL;
333 fra.me.REG[0] = NIT_NULL;
334 fra.me.REG[1] = NIT_NULL;
335 fra.me.REG[2] = NIT_NULL;
336 fra.me.REG[0] = p0;
337 fra.me.REG[1] = p1;
338 /* ./icode//icode_builder.nit:94 */
339 fra.me.REG[2] = fra.me.REG[0];
340 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
341 if (UNTAG_Bool(REGB0)) {
342 } else {
343 nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 94);
344 }
345 /* ./icode//icode_builder.nit:97 */
346 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[2])(fra.me.REG[2]);
347 fra.me.REG[0] = NEW_IAbort_icode___icode_base___IAbort___init(fra.me.REG[1], fra.me.REG[0]);
348 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
349 stack_frame_head = fra.me.prev;
350 return;
351 }
352 void icode___icode_builder___ICodeBuilder___add_return_value(val_t p0, val_t p1){
353 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
354 val_t REGB0;
355 val_t tmp;
356 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
357 fra.me.file = LOCATE_icode___icode_builder;
358 fra.me.line = 100;
359 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_return_value;
360 fra.me.has_broke = 0;
361 fra.me.REG_size = 4;
362 fra.me.nitni_local_ref_head = NULL;
363 fra.me.REG[0] = NIT_NULL;
364 fra.me.REG[1] = NIT_NULL;
365 fra.me.REG[2] = NIT_NULL;
366 fra.me.REG[3] = NIT_NULL;
367 fra.me.REG[0] = p0;
368 fra.me.REG[1] = p1;
369 /* ./icode//icode_builder.nit:100 */
370 fra.me.REG[2] = fra.me.REG[0];
371 /* ./icode//icode_builder.nit:104 */
372 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[2])(fra.me.REG[2]);
373 fra.me.REG[3] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[3])(fra.me.REG[3]);
374 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
375 if (UNTAG_Bool(REGB0)) {
376 } else {
377 nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 104);
378 }
379 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
380 stack_frame_head = fra.me.prev;
381 return;
382 }
383 val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t p2, val_t p3){
384 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
385 val_t REGB0;
386 val_t REGB1;
387 val_t REGB2;
388 val_t tmp;
389 static val_t once_value_1; /* Once value */
390 static val_t once_value_2; /* Once value */
391 static val_t once_value_3; /* Once value */
392 static val_t once_value_4; /* Once value */
393 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
394 fra.me.file = LOCATE_icode___icode_builder;
395 fra.me.line = 107;
396 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_call;
397 fra.me.has_broke = 0;
398 fra.me.REG_size = 11;
399 fra.me.nitni_local_ref_head = NULL;
400 fra.me.REG[0] = NIT_NULL;
401 fra.me.REG[1] = NIT_NULL;
402 fra.me.REG[2] = NIT_NULL;
403 fra.me.REG[3] = NIT_NULL;
404 fra.me.REG[4] = NIT_NULL;
405 fra.me.REG[5] = NIT_NULL;
406 fra.me.REG[6] = NIT_NULL;
407 fra.me.REG[7] = NIT_NULL;
408 fra.me.REG[8] = NIT_NULL;
409 fra.me.REG[9] = NIT_NULL;
410 fra.me.REG[10] = NIT_NULL;
411 fra.me.REG[0] = p0;
412 fra.me.REG[1] = p1;
413 fra.me.REG[2] = p2;
414 fra.me.REG[3] = p3;
415 /* ./icode//icode_builder.nit:107 */
416 fra.me.REG[4] = fra.me.REG[0];
417 /* ./icode//icode_builder.nit:110 */
418 if (!once_value_1) {
419 if (!once_value_2) {
420 fra.me.REG[5] = BOX_NativeString("==");
421 REGB0 = TAG_Int(2);
422 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
423 once_value_2 = fra.me.REG[5];
424 register_static_object(&once_value_2);
425 } else fra.me.REG[5] = once_value_2;
426 fra.me.REG[5] = fra.me.REG[5];
427 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
428 once_value_1 = fra.me.REG[5];
429 register_static_object(&once_value_1);
430 } else fra.me.REG[5] = once_value_1;
431 fra.me.REG[5] = fra.me.REG[5];
432 /* ./icode//icode_builder.nit:113 */
433 if (!once_value_3) {
434 if (!once_value_4) {
435 fra.me.REG[6] = BOX_NativeString("!=");
436 REGB0 = TAG_Int(2);
437 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
438 once_value_4 = fra.me.REG[6];
439 register_static_object(&once_value_4);
440 } else fra.me.REG[6] = once_value_4;
441 fra.me.REG[6] = fra.me.REG[6];
442 fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
443 once_value_3 = fra.me.REG[6];
444 register_static_object(&once_value_3);
445 } else fra.me.REG[6] = once_value_3;
446 fra.me.REG[6] = fra.me.REG[6];
447 /* ./icode//icode_builder.nit:114 */
448 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
449 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[7],fra.me.REG[6]));
450 if (UNTAG_Bool(REGB0)) {
451 } else {
452 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
453 REGB0 = REGB1;
454 }
455 if (UNTAG_Bool(REGB0)) {
456 /* ./icode//icode_builder.nit:115 */
457 fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
458 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
459 if (UNTAG_Bool(REGB0)) {
460 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 115);
461 }
462 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[6])(fra.me.REG[6]);
463 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[6])(fra.me.REG[6]);
464 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
465 /* ./icode//icode_builder.nit:116 */
466 fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[2], fra.me.REG[3]);
467 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
468 if (UNTAG_Bool(REGB0)) {
469 } else {
470 nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 116);
471 }
472 /* ./icode//icode_builder.nit:117 */
473 fra.me.REG[6] = NEW_INot_icode___icode_base___INot___init(fra.me.REG[6]);
474 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
475 fra.me.REG[0] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[0])(fra.me.REG[0]);
476 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[0]);
477 goto label5;
478 }
479 /* ./icode//icode_builder.nit:122 */
480 fra.me.REG[6] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[1], fra.me.REG[2]);
481 /* ./icode//icode_builder.nit:123 */
482 CALL_icode___icode_base___ICodeN___closure_defs__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
483 /* ./icode//icode_builder.nit:124 */
484 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
485 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[5]));
486 if (UNTAG_Bool(REGB0)) {
487 } else {
488 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
489 REGB0 = REGB1;
490 }
491 if (UNTAG_Bool(REGB0)) {
492 /* ./icode//icode_builder.nit:126 */
493 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
494 fra.me.REG[5] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[5])(fra.me.REG[5]);
495 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
496 /* ./icode//icode_builder.nit:128 */
497 REGB0 = TAG_Int(0);
498 /* ./../lib/standard//collection//array.nit:278 */
499 fra.me.REG[3] = fra.me.REG[2];
500 /* ./../lib/standard//collection//array.nit:280 */
501 REGB1 = TAG_Int(0);
502 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
503 if (UNTAG_Bool(REGB2)) {
504 } else {
505 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
506 }
507 /* ./../lib/standard//kernel.nit:233 */
508 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
509 /* ./../lib/standard//collection//array.nit:280 */
510 if (UNTAG_Bool(REGB1)) {
511 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
512 if (UNTAG_Bool(REGB1)) {
513 } else {
514 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
515 }
516 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
517 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
518 if (UNTAG_Bool(REGB2)) {
519 } else {
520 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
521 }
522 /* ./../lib/standard//kernel.nit:232 */
523 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
524 } else {
525 /* ./../lib/standard//collection//array.nit:280 */
526 REGB2 = TAG_Bool(false);
527 REGB1 = REGB2;
528 }
529 if (UNTAG_Bool(REGB1)) {
530 } else {
531 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
532 }
533 /* ./../lib/standard//collection//array.nit:281 */
534 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
535 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
536 if (UNTAG_Bool(REGB1)) {
537 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
538 }
539 /* ./../lib/standard//collection//array.nit:718 */
540 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
541 /* ./../lib/standard//collection//array.nit:281 */
542 goto label6;
543 label6: while(0);
544 /* ./icode//icode_builder.nit:128 */
545 REGB0 = TAG_Int(1);
546 /* ./../lib/standard//collection//array.nit:278 */
547 fra.me.REG[7] = fra.me.REG[2];
548 /* ./../lib/standard//collection//array.nit:280 */
549 REGB1 = TAG_Int(0);
550 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
551 if (UNTAG_Bool(REGB2)) {
552 } else {
553 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
554 }
555 /* ./../lib/standard//kernel.nit:233 */
556 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
557 /* ./../lib/standard//collection//array.nit:280 */
558 if (UNTAG_Bool(REGB1)) {
559 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
560 if (UNTAG_Bool(REGB1)) {
561 } else {
562 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
563 }
564 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
565 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
566 if (UNTAG_Bool(REGB2)) {
567 } else {
568 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
569 }
570 /* ./../lib/standard//kernel.nit:232 */
571 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
572 } else {
573 /* ./../lib/standard//collection//array.nit:280 */
574 REGB2 = TAG_Bool(false);
575 REGB1 = REGB2;
576 }
577 if (UNTAG_Bool(REGB1)) {
578 } else {
579 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
580 }
581 /* ./../lib/standard//collection//array.nit:281 */
582 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
583 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
584 if (UNTAG_Bool(REGB1)) {
585 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
586 }
587 /* ./../lib/standard//collection//array.nit:718 */
588 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
589 /* ./../lib/standard//collection//array.nit:281 */
590 goto label7;
591 label7: while(0);
592 /* ./icode//icode_builder.nit:128 */
593 fra.me.REG[7] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[3], fra.me.REG[7]);
594 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
595 fra.me.REG[3] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[3])(fra.me.REG[3]);
596 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7], fra.me.REG[3]);
597 /* ./icode//icode_builder.nit:129 */
598 fra.me.REG[7] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
599 /* ./icode//icode_builder.nit:130 */
600 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
601 /* ./icode//icode_builder.nit:131 */
602 fra.me.REG[8] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[4])(fra.me.REG[4]);
603 /* ./icode//icode_builder.nit:132 */
604 fra.me.REG[9] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[7])(fra.me.REG[7]);
605 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
606 /* ./icode//icode_builder.nit:133 */
607 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
608 /* ./icode//icode_builder.nit:135 */
609 fra.me.REG[9] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[7])(fra.me.REG[7]);
610 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
611 /* ./icode//icode_builder.nit:137 */
612 REGB0 = TAG_Int(0);
613 /* ./../lib/standard//collection//array.nit:278 */
614 fra.me.REG[9] = fra.me.REG[2];
615 /* ./../lib/standard//collection//array.nit:280 */
616 REGB1 = TAG_Int(0);
617 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
618 if (UNTAG_Bool(REGB2)) {
619 } else {
620 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
621 }
622 /* ./../lib/standard//kernel.nit:233 */
623 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
624 /* ./../lib/standard//collection//array.nit:280 */
625 if (UNTAG_Bool(REGB1)) {
626 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
627 if (UNTAG_Bool(REGB1)) {
628 } else {
629 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
630 }
631 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
632 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
633 if (UNTAG_Bool(REGB2)) {
634 } else {
635 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
636 }
637 /* ./../lib/standard//kernel.nit:232 */
638 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
639 } else {
640 /* ./../lib/standard//collection//array.nit:280 */
641 REGB2 = TAG_Bool(false);
642 REGB1 = REGB2;
643 }
644 if (UNTAG_Bool(REGB1)) {
645 } else {
646 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
647 }
648 /* ./../lib/standard//collection//array.nit:281 */
649 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
650 REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
651 if (UNTAG_Bool(REGB1)) {
652 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
653 }
654 /* ./../lib/standard//collection//array.nit:718 */
655 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB0)];
656 /* ./../lib/standard//collection//array.nit:281 */
657 goto label8;
658 label8: while(0);
659 /* ./icode//icode_builder.nit:137 */
660 REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
661 if (UNTAG_Bool(REGB0)) {
662 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 137);
663 }
664 fra.me.REG[9] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[9])(fra.me.REG[9]);
665 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[9])(fra.me.REG[9]);
666 if (UNTAG_Bool(REGB0)) {
667 /* ./icode//icode_builder.nit:138 */
668 fra.me.REG[9] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[4])(fra.me.REG[4]);
669 /* ./icode//icode_builder.nit:139 */
670 REGB0 = TAG_Int(0);
671 /* ./../lib/standard//collection//array.nit:278 */
672 fra.me.REG[10] = fra.me.REG[2];
673 /* ./../lib/standard//collection//array.nit:280 */
674 REGB1 = TAG_Int(0);
675 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
676 if (UNTAG_Bool(REGB2)) {
677 } else {
678 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
679 }
680 /* ./../lib/standard//kernel.nit:233 */
681 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
682 /* ./../lib/standard//collection//array.nit:280 */
683 if (UNTAG_Bool(REGB1)) {
684 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10])!=NIT_NULL);
685 if (UNTAG_Bool(REGB1)) {
686 } else {
687 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
688 }
689 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10]);
690 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
691 if (UNTAG_Bool(REGB2)) {
692 } else {
693 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
694 }
695 /* ./../lib/standard//kernel.nit:232 */
696 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
697 } else {
698 /* ./../lib/standard//collection//array.nit:280 */
699 REGB2 = TAG_Bool(false);
700 REGB1 = REGB2;
701 }
702 if (UNTAG_Bool(REGB1)) {
703 } else {
704 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
705 }
706 /* ./../lib/standard//collection//array.nit:281 */
707 fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[10]);
708 REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
709 if (UNTAG_Bool(REGB1)) {
710 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
711 }
712 /* ./../lib/standard//collection//array.nit:718 */
713 fra.me.REG[10] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
714 /* ./../lib/standard//collection//array.nit:281 */
715 goto label9;
716 label9: while(0);
717 /* ./icode//icode_builder.nit:139 */
718 fra.me.REG[9] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[10], fra.me.REG[9]);
719 fra.me.REG[10] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
720 fra.me.REG[10] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[10])(fra.me.REG[10]);
721 fra.me.REG[10] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9], fra.me.REG[10]);
722 fra.me.REG[3] = fra.me.REG[10];
723 /* ./icode//icode_builder.nit:140 */
724 fra.me.REG[3] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
725 fra.me.REG[7] = fra.me.REG[3];
726 /* ./icode//icode_builder.nit:141 */
727 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
728 /* ./icode//icode_builder.nit:142 */
729 fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[7])(fra.me.REG[7]);
730 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
731 /* ./icode//icode_builder.nit:143 */
732 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[4])(fra.me.REG[4]);
733 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
734 /* ./icode//icode_builder.nit:144 */
735 fra.me.REG[7] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[7])(fra.me.REG[7]);
736 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
737 }
738 /* ./icode//icode_builder.nit:147 */
739 fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
740 fra.me.REG[7] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[7])(fra.me.REG[7]);
741 fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[7]);
742 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[7]);
743 /* ./icode//icode_builder.nit:148 */
744 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
745 /* ./icode//icode_builder.nit:149 */
746 fra.me.REG[0] = fra.me.REG[5];
747 goto label5;
748 }
749 /* ./icode//icode_builder.nit:152 */
750 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
751 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
752 if (UNTAG_Bool(REGB0)) {
753 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 152);
754 }
755 fra.me.REG[5] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[5])(fra.me.REG[5]);
756 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[5])(fra.me.REG[5]);
757 if (UNTAG_Bool(REGB0)) {
758 fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
759 CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
760 }
761 /* ./icode//icode_builder.nit:153 */
762 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
763 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
764 if (UNTAG_Bool(REGB0)) {
765 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 153);
766 }
767 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
768 /* ./icode//icode_builder.nit:154 */
769 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
770 if (UNTAG_Bool(REGB0)) {
771 } else {
772 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
773 if (UNTAG_Bool(REGB1)) {
774 REGB1 = TAG_Bool(false);
775 REGB0 = REGB1;
776 } else {
777 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
778 REGB0 = REGB1;
779 }
780 }
781 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
782 if (UNTAG_Bool(REGB0)) {
783 /* ./icode//icode_builder.nit:155 */
784 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[1]);
785 fra.me.REG[0] = fra.me.REG[1];
786 goto label5;
787 } else {
788 /* ./icode//icode_builder.nit:157 */
789 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
790 /* ./icode//icode_builder.nit:158 */
791 fra.me.REG[0] = NIT_NULL;
792 goto label5;
793 }
794 label5: while(0);
795 stack_frame_head = fra.me.prev;
796 return fra.me.REG[0];
797 }
798 void icode___icode_builder___ICodeBuilder___add_escape(val_t p0, val_t p1){
799 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
800 val_t REGB0;
801 val_t REGB1;
802 val_t tmp;
803 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
804 fra.me.file = LOCATE_icode___icode_builder;
805 fra.me.line = 162;
806 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_escape;
807 fra.me.has_broke = 0;
808 fra.me.REG_size = 4;
809 fra.me.nitni_local_ref_head = NULL;
810 fra.me.REG[0] = NIT_NULL;
811 fra.me.REG[1] = NIT_NULL;
812 fra.me.REG[2] = NIT_NULL;
813 fra.me.REG[3] = NIT_NULL;
814 fra.me.REG[0] = p0;
815 fra.me.REG[1] = p1;
816 /* ./icode//icode_builder.nit:166 */
817 fra.me.REG[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[1])(fra.me.REG[1]);
818 /* ./icode//icode_builder.nit:167 */
819 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
820 if (UNTAG_Bool(REGB0)) {
821 } else {
822 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
823 if (UNTAG_Bool(REGB1)) {
824 REGB1 = TAG_Bool(false);
825 REGB0 = REGB1;
826 } else {
827 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
828 REGB0 = REGB1;
829 }
830 }
831 if (UNTAG_Bool(REGB0)) {
832 /* ./icode//icode_builder.nit:168 */
833 fra.me.REG[3] = NEW_IEscapeMark_icode___icode_base___IEscapeMark___init();
834 fra.me.REG[2] = fra.me.REG[3];
835 /* ./icode//icode_builder.nit:169 */
836 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
837 fra.me.REG[3] = CALL_icode___icode_base___IRoutine___escape_marks(fra.me.REG[3])(fra.me.REG[3]);
838 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
839 /* ./icode//icode_builder.nit:170 */
840 CALL_icode___icode_base___ISeq___iescape_mark__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
841 }
842 /* ./icode//icode_builder.nit:172 */
843 fra.me.REG[2] = NEW_IEscape_icode___icode_base___IEscape___init(fra.me.REG[2]);
844 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
845 stack_frame_head = fra.me.prev;
846 return;
847 }
848 val_t icode___icode_builder___ICodeBuilder___lit_null_reg(val_t p0){
849 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
850 val_t tmp;
851 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
852 fra.me.file = LOCATE_icode___icode_builder;
853 fra.me.line = 175;
854 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___lit_null_reg;
855 fra.me.has_broke = 0;
856 fra.me.REG_size = 2;
857 fra.me.nitni_local_ref_head = NULL;
858 fra.me.REG[0] = NIT_NULL;
859 fra.me.REG[1] = NIT_NULL;
860 fra.me.REG[0] = p0;
861 /* ./icode//icode_builder.nit:178 */
862 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
863 fra.me.REG[1] = CALL_metamodel___static_type___MMModule___type_none(fra.me.REG[1])(fra.me.REG[1]);
864 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
865 goto label1;
866 label1: while(0);
867 stack_frame_head = fra.me.prev;
868 return fra.me.REG[1];
869 }
870 val_t icode___icode_builder___ICodeBuilder___lit_true_reg(val_t p0){
871 struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_icode___icode_builder;
876 fra.me.line = 181;
877 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___lit_true_reg;
878 fra.me.has_broke = 0;
879 fra.me.REG_size = 3;
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[0] = p0;
885 /* ./icode//icode_builder.nit:184 */
886 REGB0 = TAG_Bool(true);
887 fra.me.REG[1] = NEW_IBoolValue_icode___icode_base___IBoolValue___init(REGB0);
888 /* ./icode//icode_builder.nit:185 */
889 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
890 fra.me.REG[2] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[2])(fra.me.REG[2]);
891 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
892 goto label1;
893 label1: while(0);
894 stack_frame_head = fra.me.prev;
895 return fra.me.REG[2];
896 }
897 val_t icode___icode_builder___ICodeBuilder___lit_false_reg(val_t p0){
898 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
899 val_t REGB0;
900 val_t tmp;
901 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
902 fra.me.file = LOCATE_icode___icode_builder;
903 fra.me.line = 188;
904 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___lit_false_reg;
905 fra.me.has_broke = 0;
906 fra.me.REG_size = 3;
907 fra.me.nitni_local_ref_head = NULL;
908 fra.me.REG[0] = NIT_NULL;
909 fra.me.REG[1] = NIT_NULL;
910 fra.me.REG[2] = NIT_NULL;
911 fra.me.REG[0] = p0;
912 /* ./icode//icode_builder.nit:191 */
913 REGB0 = TAG_Bool(false);
914 fra.me.REG[1] = NEW_IBoolValue_icode___icode_base___IBoolValue___init(REGB0);
915 /* ./icode//icode_builder.nit:192 */
916 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
917 fra.me.REG[2] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[2])(fra.me.REG[2]);
918 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
919 goto label1;
920 label1: while(0);
921 stack_frame_head = fra.me.prev;
922 return fra.me.REG[2];
923 }
924 val_t icode___icode_builder___ICodeBuilder___new_register(val_t p0, val_t p1){
925 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
926 val_t tmp;
927 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
928 fra.me.file = LOCATE_icode___icode_builder;
929 fra.me.line = 195;
930 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___new_register;
931 fra.me.has_broke = 0;
932 fra.me.REG_size = 2;
933 fra.me.nitni_local_ref_head = NULL;
934 fra.me.REG[0] = NIT_NULL;
935 fra.me.REG[1] = NIT_NULL;
936 fra.me.REG[0] = p0;
937 fra.me.REG[1] = p1;
938 /* ./icode//icode_builder.nit:198 */
939 fra.me.REG[1] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[1]);
940 /* ./icode//icode_builder.nit:199 */
941 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
942 fra.me.REG[0] = CALL_icode___icode_base___IRoutine___registers(fra.me.REG[0])(fra.me.REG[0]);
943 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
944 /* ./icode//icode_builder.nit:200 */
945 goto label1;
946 label1: while(0);
947 stack_frame_head = fra.me.prev;
948 return fra.me.REG[1];
949 }
950 val_t icode___icode_builder___ICodeBuilder___mmmodule(val_t p0){
951 struct {struct stack_frame_t me;} fra;
952 val_t REGB0;
953 val_t tmp;
954 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
955 fra.me.file = LOCATE_icode___icode_builder;
956 fra.me.line = 203;
957 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___mmmodule;
958 fra.me.has_broke = 0;
959 fra.me.REG_size = 1;
960 fra.me.nitni_local_ref_head = NULL;
961 fra.me.REG[0] = NIT_NULL;
962 fra.me.REG[0] = p0;
963 /* ./icode//icode_builder.nit:203 */
964 REGB0 = TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0])!=NIT_NULL);
965 if (UNTAG_Bool(REGB0)) {
966 } else {
967 nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_icode___icode_builder, 203);
968 }
969 fra.me.REG[0] = ATTR_icode___icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0]);
970 stack_frame_head = fra.me.prev;
971 return fra.me.REG[0];
972 }
973 val_t icode___icode_builder___ICodeBuilder___iroutine(val_t p0){
974 struct {struct stack_frame_t me;} fra;
975 val_t REGB0;
976 val_t tmp;
977 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
978 fra.me.file = LOCATE_icode___icode_builder;
979 fra.me.line = 206;
980 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___iroutine;
981 fra.me.has_broke = 0;
982 fra.me.REG_size = 1;
983 fra.me.nitni_local_ref_head = NULL;
984 fra.me.REG[0] = NIT_NULL;
985 fra.me.REG[0] = p0;
986 /* ./icode//icode_builder.nit:206 */
987 REGB0 = TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____iroutine(fra.me.REG[0])!=NIT_NULL);
988 if (UNTAG_Bool(REGB0)) {
989 } else {
990 nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_icode___icode_builder, 206);
991 }
992 fra.me.REG[0] = ATTR_icode___icode_builder___ICodeBuilder____iroutine(fra.me.REG[0]);
993 stack_frame_head = fra.me.prev;
994 return fra.me.REG[0];
995 }
996 val_t icode___icode_builder___ICodeBuilder___seq(val_t p0){
997 struct {struct stack_frame_t me;} fra;
998 val_t REGB0;
999 val_t tmp;
1000 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1001 fra.me.file = LOCATE_icode___icode_builder;
1002 fra.me.line = 209;
1003 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___seq;
1004 fra.me.has_broke = 0;
1005 fra.me.REG_size = 1;
1006 fra.me.nitni_local_ref_head = NULL;
1007 fra.me.REG[0] = NIT_NULL;
1008 fra.me.REG[0] = p0;
1009 /* ./icode//icode_builder.nit:209 */
1010 REGB0 = TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
1011 if (UNTAG_Bool(REGB0)) {
1012 } else {
1013 nit_abort("Uninitialized attribute %s", "_seq", LOCATE_icode___icode_builder, 209);
1014 }
1015 fra.me.REG[0] = ATTR_icode___icode_builder___ICodeBuilder____seq(fra.me.REG[0]);
1016 stack_frame_head = fra.me.prev;
1017 return fra.me.REG[0];
1018 }
1019 void icode___icode_builder___ICodeBuilder___seq__eq(val_t p0, val_t p1){
1020 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1021 val_t tmp;
1022 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1023 fra.me.file = LOCATE_icode___icode_builder;
1024 fra.me.line = 209;
1025 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___seq__eq;
1026 fra.me.has_broke = 0;
1027 fra.me.REG_size = 2;
1028 fra.me.nitni_local_ref_head = NULL;
1029 fra.me.REG[0] = NIT_NULL;
1030 fra.me.REG[1] = NIT_NULL;
1031 fra.me.REG[0] = p0;
1032 fra.me.REG[1] = p1;
1033 /* ./icode//icode_builder.nit:209 */
1034 ATTR_icode___icode_builder___ICodeBuilder____seq(fra.me.REG[0]) = fra.me.REG[1];
1035 stack_frame_head = fra.me.prev;
1036 return;
1037 }
1038 void icode___icode_builder___ICodeBuilder___init(val_t p0, val_t p1, val_t p2, int* init_table){
1039 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_builder___ICodeBuilder].i;
1040 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1041 val_t tmp;
1042 if (init_table[itpos0]) return;
1043 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1044 fra.me.file = LOCATE_icode___icode_builder;
1045 fra.me.line = 212;
1046 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___init;
1047 fra.me.has_broke = 0;
1048 fra.me.REG_size = 3;
1049 fra.me.nitni_local_ref_head = NULL;
1050 fra.me.REG[0] = NIT_NULL;
1051 fra.me.REG[1] = NIT_NULL;
1052 fra.me.REG[2] = NIT_NULL;
1053 fra.me.REG[0] = p0;
1054 fra.me.REG[1] = p1;
1055 fra.me.REG[2] = p2;
1056 /* ./icode//icode_builder.nit:214 */
1057 ATTR_icode___icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0]) = fra.me.REG[1];
1058 /* ./icode//icode_builder.nit:215 */
1059 fra.me.REG[1] = CALL_icode___icode_base___IRoutine___location(fra.me.REG[2])(fra.me.REG[2]);
1060 ATTR_icode___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
1061 /* ./icode//icode_builder.nit:216 */
1062 ATTR_icode___icode_builder___ICodeBuilder____iroutine(fra.me.REG[0]) = fra.me.REG[2];
1063 /* ./icode//icode_builder.nit:217 */
1064 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
1065 ATTR_icode___icode_builder___ICodeBuilder____seq(fra.me.REG[0]) = fra.me.REG[2];
1066 stack_frame_head = fra.me.prev;
1067 init_table[itpos0] = 1;
1068 return;
1069 }
1070 val_t icode___icode_builder___ICodeBuilder___current_location(val_t p0){
1071 struct {struct stack_frame_t me;} fra;
1072 val_t tmp;
1073 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1074 fra.me.file = LOCATE_icode___icode_builder;
1075 fra.me.line = 220;
1076 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___current_location;
1077 fra.me.has_broke = 0;
1078 fra.me.REG_size = 1;
1079 fra.me.nitni_local_ref_head = NULL;
1080 fra.me.REG[0] = NIT_NULL;
1081 fra.me.REG[0] = p0;
1082 /* ./icode//icode_builder.nit:220 */
1083 fra.me.REG[0] = ATTR_icode___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]);
1084 stack_frame_head = fra.me.prev;
1085 return fra.me.REG[0];
1086 }
1087 void icode___icode_builder___ICodeBuilder___current_location__eq(val_t p0, val_t p1){
1088 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1089 val_t tmp;
1090 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1091 fra.me.file = LOCATE_icode___icode_builder;
1092 fra.me.line = 220;
1093 fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___current_location__eq;
1094 fra.me.has_broke = 0;
1095 fra.me.REG_size = 2;
1096 fra.me.nitni_local_ref_head = NULL;
1097 fra.me.REG[0] = NIT_NULL;
1098 fra.me.REG[1] = NIT_NULL;
1099 fra.me.REG[0] = p0;
1100 fra.me.REG[1] = p1;
1101 /* ./icode//icode_builder.nit:220 */
1102 ATTR_icode___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
1103 stack_frame_head = fra.me.prev;
1104 return;
1105 }
1106 val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
1107 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1108 val_t REGB0;
1109 val_t REGB1;
1110 val_t REGB2;
1111 val_t REGB3;
1112 val_t REGB4;
1113 val_t tmp;
1114 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1115 fra.me.file = LOCATE_icode___icode_builder;
1116 fra.me.line = 225;
1117 fra.me.meth = LOCATE_icode___icode_builder___MMSignature___generate_empty_iroutine;
1118 fra.me.has_broke = 0;
1119 fra.me.REG_size = 7;
1120 fra.me.nitni_local_ref_head = NULL;
1121 fra.me.REG[0] = NIT_NULL;
1122 fra.me.REG[1] = NIT_NULL;
1123 fra.me.REG[2] = NIT_NULL;
1124 fra.me.REG[3] = NIT_NULL;
1125 fra.me.REG[4] = NIT_NULL;
1126 fra.me.REG[5] = NIT_NULL;
1127 fra.me.REG[6] = NIT_NULL;
1128 fra.me.REG[0] = p0;
1129 /* ./icode//icode_builder.nit:228 */
1130 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
1131 /* ./icode//icode_builder.nit:229 */
1132 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[0])(fra.me.REG[0]);
1133 fra.me.REG[2] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[2]);
1134 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1135 /* ./icode//icode_builder.nit:230 */
1136 REGB0 = TAG_Int(0);
1137 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
1138 /* ./../lib/standard//kernel.nit:352 */
1139 while(1) {
1140 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1141 if (UNTAG_Bool(REGB2)) {
1142 } else {
1143 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1144 }
1145 /* ./../lib/standard//kernel.nit:232 */
1146 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1147 /* ./../lib/standard//kernel.nit:352 */
1148 if (UNTAG_Bool(REGB2)) {
1149 /* ./icode//icode_builder.nit:230 */
1150 REGB2 = REGB0;
1151 /* ./icode//icode_builder.nit:231 */
1152 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
1153 fra.me.REG[2] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[2]);
1154 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1155 /* ./../lib/standard//kernel.nit:354 */
1156 REGB2 = TAG_Int(1);
1157 /* ./../lib/standard//kernel.nit:235 */
1158 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
1159 /* ./../lib/standard//kernel.nit:354 */
1160 REGB0 = REGB2;
1161 } else {
1162 /* ./../lib/standard//kernel.nit:352 */
1163 goto label1;
1164 }
1165 }
1166 label1: while(0);
1167 /* ./icode//icode_builder.nit:233 */
1168 fra.me.REG[2] = NIT_NULL;
1169 /* ./icode//icode_builder.nit:234 */
1170 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
1171 /* ./icode//icode_builder.nit:235 */
1172 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1173 if (UNTAG_Bool(REGB0)) {
1174 } else {
1175 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1176 if (UNTAG_Bool(REGB1)) {
1177 REGB1 = TAG_Bool(false);
1178 REGB0 = REGB1;
1179 } else {
1180 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1181 REGB0 = REGB1;
1182 }
1183 }
1184 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1185 if (UNTAG_Bool(REGB0)) {
1186 /* ./icode//icode_builder.nit:236 */
1187 fra.me.REG[3] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[3]);
1188 fra.me.REG[2] = fra.me.REG[3];
1189 }
1190 /* ./icode//icode_builder.nit:238 */
1191 fra.me.REG[2] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra.me.REG[1], fra.me.REG[2]);
1192 /* ./icode//icode_builder.nit:239 */
1193 fra.me.REG[3] = NIT_NULL;
1194 /* ./icode//icode_builder.nit:240 */
1195 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1196 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
1197 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1198 if (UNTAG_Bool(REGB0)) {
1199 /* ./icode//icode_builder.nit:241 */
1200 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
1201 fra.me.REG[3] = fra.me.REG[4];
1202 /* ./icode//icode_builder.nit:242 */
1203 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1204 /* ./../lib/standard//collection//array.nit:269 */
1205 REGB0 = TAG_Int(0);
1206 /* ./../lib/standard//collection//array.nit:270 */
1207 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1208 if (UNTAG_Bool(REGB1)) {
1209 } else {
1210 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1211 }
1212 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1213 /* ./../lib/standard//collection//array.nit:271 */
1214 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
1215 /* ./../lib/standard//collection//array.nit:272 */
1216 while(1) {
1217 /* ./../lib/standard//collection//array.nit:24 */
1218 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1219 if (UNTAG_Bool(REGB1)) {
1220 } else {
1221 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1222 }
1223 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1224 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1225 if (UNTAG_Bool(REGB2)) {
1226 } else {
1227 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1228 }
1229 /* ./../lib/standard//kernel.nit:232 */
1230 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1231 /* ./../lib/standard//collection//array.nit:272 */
1232 if (UNTAG_Bool(REGB1)) {
1233 /* ./../lib/standard//collection//array.nit:273 */
1234 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1235 if (UNTAG_Bool(REGB1)) {
1236 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1237 }
1238 /* ./../lib/standard//collection//array.nit:718 */
1239 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
1240 /* ./icode//icode_builder.nit:243 */
1241 fra.me.REG[6] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra.me.REG[6]);
1242 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1243 if (UNTAG_Bool(REGB1)) {
1244 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 243);
1245 }
1246 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1247 /* ./../lib/standard//collection//array.nit:274 */
1248 REGB1 = TAG_Int(1);
1249 /* ./../lib/standard//kernel.nit:235 */
1250 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1251 /* ./../lib/standard//collection//array.nit:274 */
1252 REGB0 = REGB1;
1253 } else {
1254 /* ./../lib/standard//collection//array.nit:272 */
1255 goto label2;
1256 }
1257 }
1258 label2: while(0);
1259 /* ./icode//icode_builder.nit:245 */
1260 CALL_icode___icode_base___IRoutine___closure_decls__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1261 }
1262 /* ./icode//icode_builder.nit:248 */
1263 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[0])(fra.me.REG[0]);
1264 fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1265 fra.me.REG[3] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[3], fra.me.REG[2]);
1266 /* ./icode//icode_builder.nit:249 */
1267 REGB0 = TAG_Int(0);
1268 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
1269 /* ./../lib/standard//kernel.nit:352 */
1270 while(1) {
1271 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1272 if (UNTAG_Bool(REGB2)) {
1273 } else {
1274 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1275 }
1276 /* ./../lib/standard//kernel.nit:232 */
1277 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1278 /* ./../lib/standard//kernel.nit:352 */
1279 if (UNTAG_Bool(REGB2)) {
1280 /* ./icode//icode_builder.nit:249 */
1281 REGB2 = REGB0;
1282 /* ./icode//icode_builder.nit:250 */
1283 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
1284 /* ./icode//icode_builder.nit:251 */
1285 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___virtualtype___MMVirtualType, ID_metamodel___virtualtype___MMVirtualType)) /*cast MMVirtualType*/;
1286 if (UNTAG_Bool(REGB3)) {
1287 /* ./icode//icode_builder.nit:252 */
1288 REGB3 = TAG_Int(1);
1289 /* ./../lib/standard//kernel.nit:235 */
1290 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1291 /* ./../lib/standard//collection//array.nit:278 */
1292 fra.me.REG[4] = fra.me.REG[1];
1293 /* ./../lib/standard//collection//array.nit:280 */
1294 REGB2 = TAG_Int(0);
1295 REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1296 if (UNTAG_Bool(REGB4)) {
1297 } else {
1298 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1299 }
1300 /* ./../lib/standard//kernel.nit:233 */
1301 REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
1302 /* ./../lib/standard//collection//array.nit:280 */
1303 if (UNTAG_Bool(REGB2)) {
1304 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1305 if (UNTAG_Bool(REGB2)) {
1306 } else {
1307 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1308 }
1309 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1310 REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1311 if (UNTAG_Bool(REGB4)) {
1312 } else {
1313 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1314 }
1315 /* ./../lib/standard//kernel.nit:232 */
1316 REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
1317 } else {
1318 /* ./../lib/standard//collection//array.nit:280 */
1319 REGB4 = TAG_Bool(false);
1320 REGB2 = REGB4;
1321 }
1322 if (UNTAG_Bool(REGB2)) {
1323 } else {
1324 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1325 }
1326 /* ./../lib/standard//collection//array.nit:281 */
1327 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
1328 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1329 if (UNTAG_Bool(REGB2)) {
1330 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1331 }
1332 /* ./../lib/standard//collection//array.nit:718 */
1333 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
1334 /* ./../lib/standard//collection//array.nit:281 */
1335 goto label3;
1336 label3: while(0);
1337 /* ./icode//icode_builder.nit:252 */
1338 CALL_icode___icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
1339 }
1340 /* ./../lib/standard//kernel.nit:354 */
1341 REGB3 = TAG_Int(1);
1342 /* ./../lib/standard//kernel.nit:235 */
1343 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1344 /* ./../lib/standard//kernel.nit:354 */
1345 REGB0 = REGB3;
1346 } else {
1347 /* ./../lib/standard//kernel.nit:352 */
1348 goto label4;
1349 }
1350 }
1351 label4: while(0);
1352 /* ./icode//icode_builder.nit:255 */
1353 goto label5;
1354 label5: while(0);
1355 stack_frame_head = fra.me.prev;
1356 return fra.me.REG[2];
1357 }
1358 val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0, val_t p1){
1359 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1360 val_t REGB0;
1361 val_t REGB1;
1362 val_t REGB2;
1363 val_t tmp;
1364 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1365 fra.me.file = LOCATE_icode___icode_builder;
1366 fra.me.line = 258;
1367 fra.me.meth = LOCATE_icode___icode_builder___MMSignature___generate_empty_iclosuredef;
1368 fra.me.has_broke = 0;
1369 fra.me.REG_size = 5;
1370 fra.me.nitni_local_ref_head = NULL;
1371 fra.me.REG[0] = NIT_NULL;
1372 fra.me.REG[1] = NIT_NULL;
1373 fra.me.REG[2] = NIT_NULL;
1374 fra.me.REG[3] = NIT_NULL;
1375 fra.me.REG[4] = NIT_NULL;
1376 fra.me.REG[0] = p0;
1377 fra.me.REG[1] = p1;
1378 /* ./icode//icode_builder.nit:261 */
1379 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
1380 /* ./icode//icode_builder.nit:262 */
1381 REGB0 = TAG_Int(0);
1382 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
1383 /* ./../lib/standard//kernel.nit:352 */
1384 while(1) {
1385 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1386 if (UNTAG_Bool(REGB2)) {
1387 } else {
1388 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1389 }
1390 /* ./../lib/standard//kernel.nit:232 */
1391 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1392 /* ./../lib/standard//kernel.nit:352 */
1393 if (UNTAG_Bool(REGB2)) {
1394 /* ./icode//icode_builder.nit:262 */
1395 REGB2 = REGB0;
1396 /* ./icode//icode_builder.nit:263 */
1397 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
1398 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1399 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1400 /* ./../lib/standard//kernel.nit:354 */
1401 REGB2 = TAG_Int(1);
1402 /* ./../lib/standard//kernel.nit:235 */
1403 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
1404 /* ./../lib/standard//kernel.nit:354 */
1405 REGB0 = REGB2;
1406 } else {
1407 /* ./../lib/standard//kernel.nit:352 */
1408 goto label1;
1409 }
1410 }
1411 label1: while(0);
1412 /* ./icode//icode_builder.nit:265 */
1413 fra.me.REG[3] = NIT_NULL;
1414 /* ./icode//icode_builder.nit:266 */
1415 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
1416 /* ./icode//icode_builder.nit:267 */
1417 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1418 if (UNTAG_Bool(REGB0)) {
1419 } else {
1420 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1421 if (UNTAG_Bool(REGB1)) {
1422 REGB1 = TAG_Bool(false);
1423 REGB0 = REGB1;
1424 } else {
1425 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1426 REGB0 = REGB1;
1427 }
1428 }
1429 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1430 if (UNTAG_Bool(REGB0)) {
1431 /* ./icode//icode_builder.nit:268 */
1432 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1433 fra.me.REG[3] = fra.me.REG[4];
1434 }
1435 /* ./icode//icode_builder.nit:270 */
1436 fra.me.REG[3] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[3]);
1437 /* ./icode//icode_builder.nit:271 */
1438 fra.me.REG[2] = NIT_NULL;
1439 /* ./icode//icode_builder.nit:272 */
1440 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1441 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
1442 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1443 if (UNTAG_Bool(REGB0)) {
1444 /* ./icode//icode_builder.nit:273 */
1445 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
1446 fra.me.REG[2] = fra.me.REG[4];
1447 /* ./icode//icode_builder.nit:274 */
1448 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1449 /* ./../lib/standard//collection//array.nit:269 */
1450 REGB0 = TAG_Int(0);
1451 /* ./../lib/standard//collection//array.nit:270 */
1452 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1453 if (UNTAG_Bool(REGB1)) {
1454 } else {
1455 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1456 }
1457 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
1458 /* ./../lib/standard//collection//array.nit:271 */
1459 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
1460 /* ./../lib/standard//collection//array.nit:272 */
1461 while(1) {
1462 /* ./../lib/standard//collection//array.nit:24 */
1463 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1464 if (UNTAG_Bool(REGB1)) {
1465 } else {
1466 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1467 }
1468 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
1469 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1470 if (UNTAG_Bool(REGB2)) {
1471 } else {
1472 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1473 }
1474 /* ./../lib/standard//kernel.nit:232 */
1475 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1476 /* ./../lib/standard//collection//array.nit:272 */
1477 if (UNTAG_Bool(REGB1)) {
1478 /* ./../lib/standard//collection//array.nit:273 */
1479 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1480 if (UNTAG_Bool(REGB1)) {
1481 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1482 }
1483 /* ./../lib/standard//collection//array.nit:718 */
1484 fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
1485 /* ./icode//icode_builder.nit:275 */
1486 fra.me.REG[1] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra.me.REG[1]);
1487 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1488 if (UNTAG_Bool(REGB1)) {
1489 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 275);
1490 }
1491 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1492 /* ./../lib/standard//collection//array.nit:274 */
1493 REGB1 = TAG_Int(1);
1494 /* ./../lib/standard//kernel.nit:235 */
1495 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1496 /* ./../lib/standard//collection//array.nit:274 */
1497 REGB0 = REGB1;
1498 } else {
1499 /* ./../lib/standard//collection//array.nit:272 */
1500 goto label2;
1501 }
1502 }
1503 label2: while(0);
1504 /* ./icode//icode_builder.nit:277 */
1505 CALL_icode___icode_base___IRoutine___closure_decls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1506 }
1507 /* ./icode//icode_builder.nit:280 */
1508 goto label3;
1509 label3: while(0);
1510 stack_frame_head = fra.me.prev;
1511 return fra.me.REG[3];
1512 }