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