update NOTICE and LICENSE
[nit.git] / c_src / icode_builder._sep.c
1 /* This C file is generated by NIT to compile module icode_builder. */
2 #include "icode_builder._sep.h"
3 void 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_builder;
9 fra.me.line = 24;
10 fra.me.meth = LOCATE_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_builder___ICodeBuilder____current_location(fra.me.REG[0]);
20 CALL_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_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_builder, 29);
26 }
27 fra.me.REG[0] = ATTR_icode_builder___ICodeBuilder____seq(fra.me.REG[0]);
28 fra.me.REG[0] = CALL_icode_base___ISeq___icodes(fra.me.REG[0])(fra.me.REG[0]);
29 CALL_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_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_builder;
40 fra.me.line = 32;
41 fra.me.meth = LOCATE_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_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_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_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_builder, 36);
70 }
71 /* ./icode//icode_builder.nit:37 */
72 fra.me.REG[2] = CALL_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_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_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_builder;
86 fra.me.line = 42;
87 fra.me.meth = LOCATE_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_base___IMove___init(fra.me.REG[1], fra.me.REG[2]);
98 CALL_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_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_builder;
109 fra.me.line = 48;
110 fra.me.meth = LOCATE_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_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_base___IIs___init(fra.me.REG[1], fra.me.REG[2]);
123 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
124 fra.me.REG[1] = CALL_static_type___MMModule___type_bool(fra.me.REG[1])(fra.me.REG[1]);
125 fra.me.REG[1] = CALL_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_base___IIf___init(fra.me.REG[1]);
128 /* ./icode//icode_builder.nit:54 */
129 CALL_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_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
132 /* ./icode//icode_builder.nit:56 */
133 fra.me.REG[1] = CALL_icode_base___IIf___then_seq(fra.me.REG[1])(fra.me.REG[1]);
134 CALL_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_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_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_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
147 CALL_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_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_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_builder;
160 fra.me.line = 61;
161 fra.me.meth = LOCATE_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[2] = NEW_ITypeCheck_icode_base___ITypeCheck___init(fra.me.REG[1], fra.me.REG[2]);
173 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
174 fra.me.REG[1] = CALL_static_type___MMModule___type_bool(fra.me.REG[1])(fra.me.REG[1]);
175 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
176 /* ./icode//icode_builder.nit:65 */
177 fra.me.REG[1] = NEW_IIf_icode_base___IIf___init(fra.me.REG[1]);
178 /* ./icode//icode_builder.nit:66 */
179 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
180 /* ./icode//icode_builder.nit:67 */
181 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
182 /* ./icode//icode_builder.nit:68 */
183 fra.me.REG[1] = CALL_icode_base___IIf___else_seq(fra.me.REG[1])(fra.me.REG[1]);
184 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
185 /* ./icode//icode_builder.nit:69 */
186 REGB0 = TAG_Int(0);
187 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
188 if (!once_value_1) {
189 fra.me.REG[3] = BOX_NativeString("Cast failed");
190 REGB0 = TAG_Int(11);
191 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
192 once_value_1 = fra.me.REG[3];
193 register_static_object(&once_value_1);
194 } else fra.me.REG[3] = once_value_1;
195 fra.me.REG[3] = fra.me.REG[3];
196 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
197 CALL_icode_builder___ICodeBuilder___add_abort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
198 /* ./icode//icode_builder.nit:70 */
199 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
200 stack_frame_head = fra.me.prev;
201 return;
202 }
203 void icode_builder___ICodeBuilder___add_attr_check(val_t p0, val_t p1, val_t p2){
204 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
205 val_t REGB0;
206 val_t tmp;
207 static val_t once_value_1; /* Once value */
208 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
209 fra.me.file = LOCATE_icode_builder;
210 fra.me.line = 73;
211 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___add_attr_check;
212 fra.me.has_broke = 0;
213 fra.me.REG_size = 5;
214 fra.me.REG[0] = NIT_NULL;
215 fra.me.REG[1] = NIT_NULL;
216 fra.me.REG[2] = NIT_NULL;
217 fra.me.REG[3] = NIT_NULL;
218 fra.me.REG[4] = NIT_NULL;
219 fra.me.REG[0] = p0;
220 fra.me.REG[1] = p1;
221 fra.me.REG[2] = p2;
222 /* ./icode//icode_builder.nit:76 */
223 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
224 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
225 if (UNTAG_Bool(REGB0)) {
226 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 76);
227 }
228 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
229 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
230 if (UNTAG_Bool(REGB0)) {
231 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 76);
232 }
233 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
234 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
235 if (UNTAG_Bool(REGB0)) {
236 /* ./icode//icode_builder.nit:77 */
237 fra.me.REG[2] = NEW_IAttrIsset_icode_base___IAttrIsset___init(fra.me.REG[1], fra.me.REG[2]);
238 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
239 fra.me.REG[3] = CALL_static_type___MMModule___type_bool(fra.me.REG[3])(fra.me.REG[3]);
240 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
241 /* ./icode//icode_builder.nit:78 */
242 fra.me.REG[3] = NEW_IIf_icode_base___IIf___init(fra.me.REG[3]);
243 /* ./icode//icode_builder.nit:79 */
244 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
245 /* ./icode//icode_builder.nit:80 */
246 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
247 /* ./icode//icode_builder.nit:81 */
248 fra.me.REG[3] = CALL_icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
249 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
250 /* ./icode//icode_builder.nit:82 */
251 REGB0 = TAG_Int(1);
252 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
253 if (!once_value_1) {
254 fra.me.REG[4] = BOX_NativeString("Uninitialized attribute %s");
255 REGB0 = TAG_Int(26);
256 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
257 once_value_1 = fra.me.REG[4];
258 register_static_object(&once_value_1);
259 } else fra.me.REG[4] = once_value_1;
260 fra.me.REG[4] = fra.me.REG[4];
261 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
262 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
263 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
264 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
265 CALL_icode_builder___ICodeBuilder___add_abort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
266 /* ./icode//icode_builder.nit:83 */
267 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
268 }
269 stack_frame_head = fra.me.prev;
270 return;
271 }
272 val_t icode_builder___ICodeBuilder___add_attr_read(val_t p0, val_t p1, val_t p2){
273 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
274 val_t REGB0;
275 val_t tmp;
276 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
277 fra.me.file = LOCATE_icode_builder;
278 fra.me.line = 87;
279 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___add_attr_read;
280 fra.me.has_broke = 0;
281 fra.me.REG_size = 3;
282 fra.me.REG[0] = NIT_NULL;
283 fra.me.REG[1] = NIT_NULL;
284 fra.me.REG[2] = NIT_NULL;
285 fra.me.REG[0] = p0;
286 fra.me.REG[1] = p1;
287 fra.me.REG[2] = p2;
288 /* ./icode//icode_builder.nit:90 */
289 CALL_icode_builder___ICodeBuilder___add_attr_check(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
290 /* ./icode//icode_builder.nit:91 */
291 fra.me.REG[2] = NEW_IAttrRead_icode_base___IAttrRead___init(fra.me.REG[1], fra.me.REG[2]);
292 fra.me.REG[1] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
293 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
294 if (UNTAG_Bool(REGB0)) {
295 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 91);
296 }
297 fra.me.REG[1] = CALL_static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
298 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_MMType, ID_MMType)) /*cast MMType*/;
299 if (UNTAG_Bool(REGB0)) {
300 } else {
301 nit_abort("Cast failed", NULL, LOCATE_icode_builder, 91);
302 }
303 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
304 goto label1;
305 label1: while(0);
306 stack_frame_head = fra.me.prev;
307 return fra.me.REG[1];
308 }
309 void icode_builder___ICodeBuilder___add_abort(val_t p0, val_t p1){
310 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
311 val_t REGB0;
312 val_t tmp;
313 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
314 fra.me.file = LOCATE_icode_builder;
315 fra.me.line = 94;
316 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___add_abort;
317 fra.me.has_broke = 0;
318 fra.me.REG_size = 3;
319 fra.me.REG[0] = NIT_NULL;
320 fra.me.REG[1] = NIT_NULL;
321 fra.me.REG[2] = NIT_NULL;
322 fra.me.REG[0] = p0;
323 fra.me.REG[1] = p1;
324 /* ./icode//icode_builder.nit:94 */
325 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_Array, ID_Array)) /*cast Array[String]*/;
326 if (UNTAG_Bool(REGB0)) {
327 } else {
328 nit_abort("Cast failed", NULL, LOCATE_icode_builder, 94);
329 }
330 /* ./icode//icode_builder.nit:97 */
331 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
332 fra.me.REG[2] = NEW_IAbort_icode_base___IAbort___init(fra.me.REG[1], fra.me.REG[2]);
333 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
334 stack_frame_head = fra.me.prev;
335 return;
336 }
337 void icode_builder___ICodeBuilder___add_return_value(val_t p0, val_t p1){
338 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
339 val_t REGB0;
340 val_t tmp;
341 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
342 fra.me.file = LOCATE_icode_builder;
343 fra.me.line = 100;
344 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___add_return_value;
345 fra.me.has_broke = 0;
346 fra.me.REG_size = 3;
347 fra.me.REG[0] = NIT_NULL;
348 fra.me.REG[1] = NIT_NULL;
349 fra.me.REG[2] = NIT_NULL;
350 fra.me.REG[0] = p0;
351 fra.me.REG[1] = p1;
352 /* ./icode//icode_builder.nit:104 */
353 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
354 fra.me.REG[2] = CALL_icode_base___IRoutine___result(fra.me.REG[2])(fra.me.REG[2]);
355 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_IRegister, ID_IRegister)) /*cast IRegister*/;
356 if (UNTAG_Bool(REGB0)) {
357 } else {
358 nit_abort("Cast failed", NULL, LOCATE_icode_builder, 104);
359 }
360 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
361 stack_frame_head = fra.me.prev;
362 return;
363 }
364 val_t icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t p2, val_t p3){
365 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
366 val_t REGB0;
367 val_t REGB1;
368 val_t REGB2;
369 val_t tmp;
370 static val_t once_value_1; /* Once value */
371 static val_t once_value_2; /* Once value */
372 static val_t once_value_3; /* Once value */
373 static val_t once_value_4; /* Once value */
374 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
375 fra.me.file = LOCATE_icode_builder;
376 fra.me.line = 107;
377 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___add_call;
378 fra.me.has_broke = 0;
379 fra.me.REG_size = 11;
380 fra.me.REG[0] = NIT_NULL;
381 fra.me.REG[1] = NIT_NULL;
382 fra.me.REG[2] = NIT_NULL;
383 fra.me.REG[3] = NIT_NULL;
384 fra.me.REG[4] = NIT_NULL;
385 fra.me.REG[5] = NIT_NULL;
386 fra.me.REG[6] = NIT_NULL;
387 fra.me.REG[7] = NIT_NULL;
388 fra.me.REG[8] = NIT_NULL;
389 fra.me.REG[9] = NIT_NULL;
390 fra.me.REG[10] = NIT_NULL;
391 fra.me.REG[0] = p0;
392 fra.me.REG[1] = p1;
393 fra.me.REG[2] = p2;
394 fra.me.REG[3] = p3;
395 /* ./icode//icode_builder.nit:110 */
396 if (!once_value_1) {
397 if (!once_value_2) {
398 fra.me.REG[4] = BOX_NativeString("==");
399 REGB0 = TAG_Int(2);
400 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
401 once_value_2 = fra.me.REG[4];
402 register_static_object(&once_value_2);
403 } else fra.me.REG[4] = once_value_2;
404 fra.me.REG[4] = fra.me.REG[4];
405 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
406 once_value_1 = fra.me.REG[4];
407 register_static_object(&once_value_1);
408 } else fra.me.REG[4] = once_value_1;
409 fra.me.REG[4] = fra.me.REG[4];
410 /* ./icode//icode_builder.nit:113 */
411 if (!once_value_3) {
412 if (!once_value_4) {
413 fra.me.REG[5] = BOX_NativeString("!=");
414 REGB0 = TAG_Int(2);
415 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
416 once_value_4 = fra.me.REG[5];
417 register_static_object(&once_value_4);
418 } else fra.me.REG[5] = once_value_4;
419 fra.me.REG[5] = fra.me.REG[5];
420 fra.me.REG[5] = CALL_symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
421 once_value_3 = fra.me.REG[5];
422 register_static_object(&once_value_3);
423 } else fra.me.REG[5] = once_value_3;
424 fra.me.REG[5] = fra.me.REG[5];
425 /* ./icode//icode_builder.nit:114 */
426 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
427 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[6],fra.me.REG[5]));
428 if (UNTAG_Bool(REGB0)) {
429 } else {
430 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
431 REGB0 = REGB1;
432 }
433 if (UNTAG_Bool(REGB0)) {
434 /* ./icode//icode_builder.nit:115 */
435 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
436 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
437 if (UNTAG_Bool(REGB0)) {
438 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 115);
439 }
440 fra.me.REG[5] = CALL_static_type___MMSignature___recv(fra.me.REG[5])(fra.me.REG[5]);
441 fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
442 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
443 /* ./icode//icode_builder.nit:116 */
444 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___add_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2], fra.me.REG[3]);
445 REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
446 if (UNTAG_Bool(REGB0)) {
447 } else {
448 nit_abort("Cast failed", NULL, LOCATE_icode_builder, 116);
449 }
450 /* ./icode//icode_builder.nit:117 */
451 fra.me.REG[5] = NEW_INot_icode_base___INot___init(fra.me.REG[5]);
452 fra.me.REG[6] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
453 fra.me.REG[6] = CALL_static_type___MMModule___type_bool(fra.me.REG[6])(fra.me.REG[6]);
454 fra.me.REG[6] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[6]);
455 goto label5;
456 }
457 /* ./icode//icode_builder.nit:122 */
458 fra.me.REG[5] = NEW_ICall_icode_base___ICall___init(fra.me.REG[1], fra.me.REG[2]);
459 /* ./icode//icode_builder.nit:123 */
460 CALL_icode_base___ICodeN___closure_defs__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
461 /* ./icode//icode_builder.nit:124 */
462 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
463 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
464 if (UNTAG_Bool(REGB0)) {
465 } else {
466 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
467 REGB0 = REGB1;
468 }
469 if (UNTAG_Bool(REGB0)) {
470 /* ./icode//icode_builder.nit:126 */
471 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
472 fra.me.REG[4] = CALL_static_type___MMModule___type_bool(fra.me.REG[4])(fra.me.REG[4]);
473 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
474 /* ./icode//icode_builder.nit:128 */
475 REGB0 = TAG_Int(0);
476 /* ./../lib/standard//collection//array.nit:243 */
477 fra.me.REG[3] = fra.me.REG[2];
478 /* ./../lib/standard//collection//array.nit:245 */
479 REGB1 = TAG_Int(0);
480 /* ./../lib/standard//kernel.nit:213 */
481 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
482 /* ./../lib/standard//collection//array.nit:245 */
483 if (UNTAG_Bool(REGB1)) {
484 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
485 if (UNTAG_Bool(REGB1)) {
486 } else {
487 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
488 }
489 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
490 /* ./../lib/standard//kernel.nit:212 */
491 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
492 } else {
493 /* ./../lib/standard//collection//array.nit:245 */
494 REGB2 = TAG_Bool(false);
495 REGB1 = REGB2;
496 }
497 if (UNTAG_Bool(REGB1)) {
498 } else {
499 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
500 }
501 /* ./../lib/standard//collection//array.nit:246 */
502 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
503 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
504 if (UNTAG_Bool(REGB1)) {
505 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
506 }
507 /* ./../lib/standard//collection//array.nit:654 */
508 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
509 /* ./../lib/standard//collection//array.nit:246 */
510 goto label6;
511 label6: while(0);
512 /* ./icode//icode_builder.nit:128 */
513 REGB0 = TAG_Int(1);
514 /* ./../lib/standard//collection//array.nit:243 */
515 fra.me.REG[7] = fra.me.REG[2];
516 /* ./../lib/standard//collection//array.nit:245 */
517 REGB1 = TAG_Int(0);
518 /* ./../lib/standard//kernel.nit:213 */
519 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
520 /* ./../lib/standard//collection//array.nit:245 */
521 if (UNTAG_Bool(REGB1)) {
522 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
523 if (UNTAG_Bool(REGB1)) {
524 } else {
525 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
526 }
527 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
528 /* ./../lib/standard//kernel.nit:212 */
529 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
530 } else {
531 /* ./../lib/standard//collection//array.nit:245 */
532 REGB2 = TAG_Bool(false);
533 REGB1 = REGB2;
534 }
535 if (UNTAG_Bool(REGB1)) {
536 } else {
537 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
538 }
539 /* ./../lib/standard//collection//array.nit:246 */
540 fra.me.REG[7] = ATTR_array___Array____items(fra.me.REG[7]);
541 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
542 if (UNTAG_Bool(REGB1)) {
543 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
544 }
545 /* ./../lib/standard//collection//array.nit:654 */
546 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
547 /* ./../lib/standard//collection//array.nit:246 */
548 goto label7;
549 label7: while(0);
550 /* ./icode//icode_builder.nit:128 */
551 fra.me.REG[7] = NEW_IIs_icode_base___IIs___init(fra.me.REG[3], fra.me.REG[7]);
552 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
553 fra.me.REG[3] = CALL_static_type___MMModule___type_bool(fra.me.REG[3])(fra.me.REG[3]);
554 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
555 /* ./icode//icode_builder.nit:129 */
556 fra.me.REG[7] = NEW_IIf_icode_base___IIf___init(fra.me.REG[3]);
557 /* ./icode//icode_builder.nit:130 */
558 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
559 /* ./icode//icode_builder.nit:131 */
560 fra.me.REG[8] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
561 /* ./icode//icode_builder.nit:132 */
562 fra.me.REG[9] = CALL_icode_base___IIf___then_seq(fra.me.REG[7])(fra.me.REG[7]);
563 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9]);
564 /* ./icode//icode_builder.nit:133 */
565 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
566 /* ./icode//icode_builder.nit:135 */
567 fra.me.REG[9] = CALL_icode_base___IIf___else_seq(fra.me.REG[7])(fra.me.REG[7]);
568 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9]);
569 /* ./icode//icode_builder.nit:137 */
570 REGB0 = TAG_Int(0);
571 /* ./../lib/standard//collection//array.nit:243 */
572 fra.me.REG[9] = fra.me.REG[2];
573 /* ./../lib/standard//collection//array.nit:245 */
574 REGB1 = TAG_Int(0);
575 /* ./../lib/standard//kernel.nit:213 */
576 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
577 /* ./../lib/standard//collection//array.nit:245 */
578 if (UNTAG_Bool(REGB1)) {
579 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
580 if (UNTAG_Bool(REGB1)) {
581 } else {
582 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
583 }
584 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[9]);
585 /* ./../lib/standard//kernel.nit:212 */
586 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
587 } else {
588 /* ./../lib/standard//collection//array.nit:245 */
589 REGB2 = TAG_Bool(false);
590 REGB1 = REGB2;
591 }
592 if (UNTAG_Bool(REGB1)) {
593 } else {
594 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
595 }
596 /* ./../lib/standard//collection//array.nit:246 */
597 fra.me.REG[9] = ATTR_array___Array____items(fra.me.REG[9]);
598 REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
599 if (UNTAG_Bool(REGB1)) {
600 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
601 }
602 /* ./../lib/standard//collection//array.nit:654 */
603 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB0)];
604 /* ./../lib/standard//collection//array.nit:246 */
605 goto label8;
606 label8: while(0);
607 /* ./icode//icode_builder.nit:137 */
608 REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
609 if (UNTAG_Bool(REGB0)) {
610 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 137);
611 }
612 fra.me.REG[9] = CALL_icode_base___IRegister___stype(fra.me.REG[9])(fra.me.REG[9]);
613 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[9])(fra.me.REG[9]);
614 if (UNTAG_Bool(REGB0)) {
615 /* ./icode//icode_builder.nit:138 */
616 fra.me.REG[9] = CALL_icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[0])(fra.me.REG[0]);
617 /* ./icode//icode_builder.nit:139 */
618 REGB0 = TAG_Int(0);
619 /* ./../lib/standard//collection//array.nit:243 */
620 fra.me.REG[10] = fra.me.REG[2];
621 /* ./../lib/standard//collection//array.nit:245 */
622 REGB1 = TAG_Int(0);
623 /* ./../lib/standard//kernel.nit:213 */
624 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
625 /* ./../lib/standard//collection//array.nit:245 */
626 if (UNTAG_Bool(REGB1)) {
627 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[10])!=NIT_NULL);
628 if (UNTAG_Bool(REGB1)) {
629 } else {
630 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
631 }
632 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[10]);
633 /* ./../lib/standard//kernel.nit:212 */
634 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
635 } else {
636 /* ./../lib/standard//collection//array.nit:245 */
637 REGB2 = TAG_Bool(false);
638 REGB1 = REGB2;
639 }
640 if (UNTAG_Bool(REGB1)) {
641 } else {
642 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
643 }
644 /* ./../lib/standard//collection//array.nit:246 */
645 fra.me.REG[10] = ATTR_array___Array____items(fra.me.REG[10]);
646 REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
647 if (UNTAG_Bool(REGB1)) {
648 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
649 }
650 /* ./../lib/standard//collection//array.nit:654 */
651 fra.me.REG[10] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
652 /* ./../lib/standard//collection//array.nit:246 */
653 goto label9;
654 label9: while(0);
655 /* ./icode//icode_builder.nit:139 */
656 fra.me.REG[9] = NEW_IIs_icode_base___IIs___init(fra.me.REG[10], fra.me.REG[9]);
657 fra.me.REG[10] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
658 fra.me.REG[10] = CALL_static_type___MMModule___type_bool(fra.me.REG[10])(fra.me.REG[10]);
659 fra.me.REG[10] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[10]);
660 fra.me.REG[3] = fra.me.REG[10];
661 /* ./icode//icode_builder.nit:140 */
662 fra.me.REG[3] = NEW_IIf_icode_base___IIf___init(fra.me.REG[3]);
663 fra.me.REG[7] = fra.me.REG[3];
664 /* ./icode//icode_builder.nit:141 */
665 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
666 /* ./icode//icode_builder.nit:142 */
667 fra.me.REG[3] = CALL_icode_base___IIf___then_seq(fra.me.REG[7])(fra.me.REG[7]);
668 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
669 /* ./icode//icode_builder.nit:143 */
670 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[0])(fra.me.REG[0]);
671 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
672 /* ./icode//icode_builder.nit:144 */
673 fra.me.REG[7] = CALL_icode_base___IIf___else_seq(fra.me.REG[7])(fra.me.REG[7]);
674 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
675 }
676 /* ./icode//icode_builder.nit:147 */
677 fra.me.REG[7] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
678 fra.me.REG[7] = CALL_static_type___MMModule___type_bool(fra.me.REG[7])(fra.me.REG[7]);
679 fra.me.REG[7] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[7]);
680 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[7]);
681 /* ./icode//icode_builder.nit:148 */
682 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
683 /* ./icode//icode_builder.nit:149 */
684 fra.me.REG[6] = fra.me.REG[4];
685 goto label5;
686 }
687 /* ./icode//icode_builder.nit:152 */
688 fra.me.REG[4] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
689 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
690 if (UNTAG_Bool(REGB0)) {
691 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 152);
692 }
693 fra.me.REG[4] = CALL_icode_base___IRegister___stype(fra.me.REG[4])(fra.me.REG[4]);
694 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
695 if (UNTAG_Bool(REGB0)) {
696 fra.me.REG[2] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
697 CALL_icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
698 }
699 /* ./icode//icode_builder.nit:153 */
700 fra.me.REG[1] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
701 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
702 if (UNTAG_Bool(REGB0)) {
703 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 153);
704 }
705 fra.me.REG[1] = CALL_static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
706 /* ./icode//icode_builder.nit:154 */
707 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
708 if (UNTAG_Bool(REGB0)) {
709 } else {
710 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
711 if (UNTAG_Bool(REGB1)) {
712 REGB1 = TAG_Bool(false);
713 REGB0 = REGB1;
714 } else {
715 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
716 REGB0 = REGB1;
717 }
718 }
719 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
720 if (UNTAG_Bool(REGB0)) {
721 /* ./icode//icode_builder.nit:155 */
722 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[1]);
723 fra.me.REG[6] = fra.me.REG[1];
724 goto label5;
725 } else {
726 /* ./icode//icode_builder.nit:157 */
727 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
728 /* ./icode//icode_builder.nit:158 */
729 fra.me.REG[6] = NIT_NULL;
730 goto label5;
731 }
732 label5: while(0);
733 stack_frame_head = fra.me.prev;
734 return fra.me.REG[6];
735 }
736 void icode_builder___ICodeBuilder___add_escape(val_t p0, val_t p1){
737 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
738 val_t REGB0;
739 val_t REGB1;
740 val_t tmp;
741 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
742 fra.me.file = LOCATE_icode_builder;
743 fra.me.line = 162;
744 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___add_escape;
745 fra.me.has_broke = 0;
746 fra.me.REG_size = 4;
747 fra.me.REG[0] = NIT_NULL;
748 fra.me.REG[1] = NIT_NULL;
749 fra.me.REG[2] = NIT_NULL;
750 fra.me.REG[3] = NIT_NULL;
751 fra.me.REG[0] = p0;
752 fra.me.REG[1] = p1;
753 /* ./icode//icode_builder.nit:166 */
754 fra.me.REG[2] = CALL_icode_base___ISeq___iescape_mark(fra.me.REG[1])(fra.me.REG[1]);
755 /* ./icode//icode_builder.nit:167 */
756 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
757 if (UNTAG_Bool(REGB0)) {
758 } else {
759 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
760 if (UNTAG_Bool(REGB1)) {
761 REGB1 = TAG_Bool(false);
762 REGB0 = REGB1;
763 } else {
764 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
765 REGB0 = REGB1;
766 }
767 }
768 if (UNTAG_Bool(REGB0)) {
769 /* ./icode//icode_builder.nit:168 */
770 fra.me.REG[3] = NEW_IEscapeMark_icode_base___IEscapeMark___init();
771 fra.me.REG[2] = fra.me.REG[3];
772 /* ./icode//icode_builder.nit:169 */
773 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
774 fra.me.REG[3] = CALL_icode_base___IRoutine___escape_marks(fra.me.REG[3])(fra.me.REG[3]);
775 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
776 /* ./icode//icode_builder.nit:170 */
777 CALL_icode_base___ISeq___iescape_mark__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
778 }
779 /* ./icode//icode_builder.nit:172 */
780 fra.me.REG[2] = NEW_IEscape_icode_base___IEscape___init(fra.me.REG[2]);
781 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
782 stack_frame_head = fra.me.prev;
783 return;
784 }
785 val_t icode_builder___ICodeBuilder___lit_null_reg(val_t p0){
786 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
787 val_t tmp;
788 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
789 fra.me.file = LOCATE_icode_builder;
790 fra.me.line = 175;
791 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___lit_null_reg;
792 fra.me.has_broke = 0;
793 fra.me.REG_size = 2;
794 fra.me.REG[0] = NIT_NULL;
795 fra.me.REG[1] = NIT_NULL;
796 fra.me.REG[0] = p0;
797 /* ./icode//icode_builder.nit:178 */
798 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
799 fra.me.REG[1] = CALL_static_type___MMModule___type_none(fra.me.REG[1])(fra.me.REG[1]);
800 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
801 goto label1;
802 label1: while(0);
803 stack_frame_head = fra.me.prev;
804 return fra.me.REG[1];
805 }
806 val_t icode_builder___ICodeBuilder___lit_true_reg(val_t p0){
807 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
808 val_t REGB0;
809 val_t tmp;
810 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
811 fra.me.file = LOCATE_icode_builder;
812 fra.me.line = 181;
813 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___lit_true_reg;
814 fra.me.has_broke = 0;
815 fra.me.REG_size = 3;
816 fra.me.REG[0] = NIT_NULL;
817 fra.me.REG[1] = NIT_NULL;
818 fra.me.REG[2] = NIT_NULL;
819 fra.me.REG[0] = p0;
820 /* ./icode//icode_builder.nit:184 */
821 REGB0 = TAG_Bool(true);
822 fra.me.REG[1] = NEW_IBoolValue_icode_base___IBoolValue___init(REGB0);
823 /* ./icode//icode_builder.nit:185 */
824 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
825 fra.me.REG[2] = CALL_static_type___MMModule___type_bool(fra.me.REG[2])(fra.me.REG[2]);
826 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
827 goto label1;
828 label1: while(0);
829 stack_frame_head = fra.me.prev;
830 return fra.me.REG[2];
831 }
832 val_t icode_builder___ICodeBuilder___lit_false_reg(val_t p0){
833 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
834 val_t REGB0;
835 val_t tmp;
836 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
837 fra.me.file = LOCATE_icode_builder;
838 fra.me.line = 188;
839 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___lit_false_reg;
840 fra.me.has_broke = 0;
841 fra.me.REG_size = 3;
842 fra.me.REG[0] = NIT_NULL;
843 fra.me.REG[1] = NIT_NULL;
844 fra.me.REG[2] = NIT_NULL;
845 fra.me.REG[0] = p0;
846 /* ./icode//icode_builder.nit:191 */
847 REGB0 = TAG_Bool(false);
848 fra.me.REG[1] = NEW_IBoolValue_icode_base___IBoolValue___init(REGB0);
849 /* ./icode//icode_builder.nit:192 */
850 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
851 fra.me.REG[2] = CALL_static_type___MMModule___type_bool(fra.me.REG[2])(fra.me.REG[2]);
852 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
853 goto label1;
854 label1: while(0);
855 stack_frame_head = fra.me.prev;
856 return fra.me.REG[2];
857 }
858 val_t icode_builder___ICodeBuilder___new_register(val_t p0, val_t p1){
859 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
860 val_t tmp;
861 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
862 fra.me.file = LOCATE_icode_builder;
863 fra.me.line = 195;
864 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___new_register;
865 fra.me.has_broke = 0;
866 fra.me.REG_size = 2;
867 fra.me.REG[0] = NIT_NULL;
868 fra.me.REG[1] = NIT_NULL;
869 fra.me.REG[0] = p0;
870 fra.me.REG[1] = p1;
871 /* ./icode//icode_builder.nit:198 */
872 fra.me.REG[1] = NEW_IRegister_icode_base___IRegister___init(fra.me.REG[1]);
873 /* ./icode//icode_builder.nit:199 */
874 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
875 fra.me.REG[0] = CALL_icode_base___IRoutine___registers(fra.me.REG[0])(fra.me.REG[0]);
876 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
877 /* ./icode//icode_builder.nit:200 */
878 goto label1;
879 label1: while(0);
880 stack_frame_head = fra.me.prev;
881 return fra.me.REG[1];
882 }
883 val_t icode_builder___ICodeBuilder___mmmodule(val_t p0){
884 struct {struct stack_frame_t me;} fra;
885 val_t REGB0;
886 val_t tmp;
887 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
888 fra.me.file = LOCATE_icode_builder;
889 fra.me.line = 203;
890 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___mmmodule;
891 fra.me.has_broke = 0;
892 fra.me.REG_size = 1;
893 fra.me.REG[0] = NIT_NULL;
894 fra.me.REG[0] = p0;
895 /* ./icode//icode_builder.nit:203 */
896 REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0])!=NIT_NULL);
897 if (UNTAG_Bool(REGB0)) {
898 } else {
899 nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_icode_builder, 203);
900 }
901 fra.me.REG[0] = ATTR_icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0]);
902 stack_frame_head = fra.me.prev;
903 return fra.me.REG[0];
904 }
905 val_t icode_builder___ICodeBuilder___iroutine(val_t p0){
906 struct {struct stack_frame_t me;} fra;
907 val_t REGB0;
908 val_t tmp;
909 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
910 fra.me.file = LOCATE_icode_builder;
911 fra.me.line = 206;
912 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___iroutine;
913 fra.me.has_broke = 0;
914 fra.me.REG_size = 1;
915 fra.me.REG[0] = NIT_NULL;
916 fra.me.REG[0] = p0;
917 /* ./icode//icode_builder.nit:206 */
918 REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____iroutine(fra.me.REG[0])!=NIT_NULL);
919 if (UNTAG_Bool(REGB0)) {
920 } else {
921 nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_icode_builder, 206);
922 }
923 fra.me.REG[0] = ATTR_icode_builder___ICodeBuilder____iroutine(fra.me.REG[0]);
924 stack_frame_head = fra.me.prev;
925 return fra.me.REG[0];
926 }
927 val_t icode_builder___ICodeBuilder___seq(val_t p0){
928 struct {struct stack_frame_t me;} fra;
929 val_t REGB0;
930 val_t tmp;
931 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
932 fra.me.file = LOCATE_icode_builder;
933 fra.me.line = 209;
934 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___seq;
935 fra.me.has_broke = 0;
936 fra.me.REG_size = 1;
937 fra.me.REG[0] = NIT_NULL;
938 fra.me.REG[0] = p0;
939 /* ./icode//icode_builder.nit:209 */
940 REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
941 if (UNTAG_Bool(REGB0)) {
942 } else {
943 nit_abort("Uninitialized attribute %s", "_seq", LOCATE_icode_builder, 209);
944 }
945 fra.me.REG[0] = ATTR_icode_builder___ICodeBuilder____seq(fra.me.REG[0]);
946 stack_frame_head = fra.me.prev;
947 return fra.me.REG[0];
948 }
949 void icode_builder___ICodeBuilder___seq__eq(val_t p0, val_t p1){
950 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
951 val_t tmp;
952 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
953 fra.me.file = LOCATE_icode_builder;
954 fra.me.line = 209;
955 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___seq__eq;
956 fra.me.has_broke = 0;
957 fra.me.REG_size = 2;
958 fra.me.REG[0] = NIT_NULL;
959 fra.me.REG[1] = NIT_NULL;
960 fra.me.REG[0] = p0;
961 fra.me.REG[1] = p1;
962 /* ./icode//icode_builder.nit:209 */
963 ATTR_icode_builder___ICodeBuilder____seq(fra.me.REG[0]) = fra.me.REG[1];
964 stack_frame_head = fra.me.prev;
965 return;
966 }
967 void icode_builder___ICodeBuilder___init(val_t p0, val_t p1, val_t p2, int* init_table){
968 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ICodeBuilder].i;
969 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
970 val_t tmp;
971 if (init_table[itpos0]) return;
972 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
973 fra.me.file = LOCATE_icode_builder;
974 fra.me.line = 212;
975 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___init;
976 fra.me.has_broke = 0;
977 fra.me.REG_size = 3;
978 fra.me.REG[0] = NIT_NULL;
979 fra.me.REG[1] = NIT_NULL;
980 fra.me.REG[2] = NIT_NULL;
981 fra.me.REG[0] = p0;
982 fra.me.REG[1] = p1;
983 fra.me.REG[2] = p2;
984 /* ./icode//icode_builder.nit:214 */
985 ATTR_icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0]) = fra.me.REG[1];
986 /* ./icode//icode_builder.nit:215 */
987 fra.me.REG[1] = CALL_icode_base___IRoutine___location(fra.me.REG[2])(fra.me.REG[2]);
988 ATTR_icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
989 /* ./icode//icode_builder.nit:216 */
990 ATTR_icode_builder___ICodeBuilder____iroutine(fra.me.REG[0]) = fra.me.REG[2];
991 /* ./icode//icode_builder.nit:217 */
992 fra.me.REG[2] = CALL_icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
993 ATTR_icode_builder___ICodeBuilder____seq(fra.me.REG[0]) = fra.me.REG[2];
994 stack_frame_head = fra.me.prev;
995 init_table[itpos0] = 1;
996 return;
997 }
998 val_t icode_builder___ICodeBuilder___current_location(val_t p0){
999 struct {struct stack_frame_t me;} fra;
1000 val_t tmp;
1001 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1002 fra.me.file = LOCATE_icode_builder;
1003 fra.me.line = 220;
1004 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___current_location;
1005 fra.me.has_broke = 0;
1006 fra.me.REG_size = 1;
1007 fra.me.REG[0] = NIT_NULL;
1008 fra.me.REG[0] = p0;
1009 /* ./icode//icode_builder.nit:220 */
1010 fra.me.REG[0] = ATTR_icode_builder___ICodeBuilder____current_location(fra.me.REG[0]);
1011 stack_frame_head = fra.me.prev;
1012 return fra.me.REG[0];
1013 }
1014 void icode_builder___ICodeBuilder___current_location__eq(val_t p0, val_t p1){
1015 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1016 val_t tmp;
1017 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1018 fra.me.file = LOCATE_icode_builder;
1019 fra.me.line = 220;
1020 fra.me.meth = LOCATE_icode_builder___ICodeBuilder___current_location__eq;
1021 fra.me.has_broke = 0;
1022 fra.me.REG_size = 2;
1023 fra.me.REG[0] = NIT_NULL;
1024 fra.me.REG[1] = NIT_NULL;
1025 fra.me.REG[0] = p0;
1026 fra.me.REG[1] = p1;
1027 /* ./icode//icode_builder.nit:220 */
1028 ATTR_icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
1029 stack_frame_head = fra.me.prev;
1030 return;
1031 }
1032 val_t icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
1033 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1034 val_t REGB0;
1035 val_t REGB1;
1036 val_t REGB2;
1037 val_t tmp;
1038 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1039 fra.me.file = LOCATE_icode_builder;
1040 fra.me.line = 225;
1041 fra.me.meth = LOCATE_icode_builder___MMSignature___generate_empty_iroutine;
1042 fra.me.has_broke = 0;
1043 fra.me.REG_size = 5;
1044 fra.me.REG[0] = NIT_NULL;
1045 fra.me.REG[1] = NIT_NULL;
1046 fra.me.REG[2] = NIT_NULL;
1047 fra.me.REG[3] = NIT_NULL;
1048 fra.me.REG[4] = NIT_NULL;
1049 fra.me.REG[0] = p0;
1050 /* ./icode//icode_builder.nit:228 */
1051 fra.me.REG[1] = NEW_Array_array___Array___init();
1052 /* ./icode//icode_builder.nit:229 */
1053 fra.me.REG[2] = CALL_static_type___MMSignature___recv(fra.me.REG[0])(fra.me.REG[0]);
1054 fra.me.REG[2] = NEW_IRegister_icode_base___IRegister___init(fra.me.REG[2]);
1055 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1056 /* ./icode//icode_builder.nit:230 */
1057 REGB0 = TAG_Int(0);
1058 REGB1 = CALL_static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
1059 /* ./../lib/standard//kernel.nit:332 */
1060 while(1) {
1061 /* ./../lib/standard//kernel.nit:212 */
1062 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1063 /* ./../lib/standard//kernel.nit:332 */
1064 if (UNTAG_Bool(REGB2)) {
1065 /* ./icode//icode_builder.nit:230 */
1066 REGB2 = REGB0;
1067 /* ./icode//icode_builder.nit:231 */
1068 fra.me.REG[2] = CALL_static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
1069 fra.me.REG[2] = NEW_IRegister_icode_base___IRegister___init(fra.me.REG[2]);
1070 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1071 /* ./../lib/standard//kernel.nit:334 */
1072 REGB2 = TAG_Int(1);
1073 /* ./../lib/standard//kernel.nit:215 */
1074 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
1075 /* ./../lib/standard//kernel.nit:334 */
1076 REGB0 = REGB2;
1077 } else {
1078 /* ./../lib/standard//kernel.nit:332 */
1079 goto label1;
1080 }
1081 }
1082 label1: while(0);
1083 /* ./icode//icode_builder.nit:233 */
1084 fra.me.REG[2] = NIT_NULL;
1085 /* ./icode//icode_builder.nit:234 */
1086 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
1087 /* ./icode//icode_builder.nit:235 */
1088 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1089 if (UNTAG_Bool(REGB0)) {
1090 } else {
1091 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1092 if (UNTAG_Bool(REGB1)) {
1093 REGB1 = TAG_Bool(false);
1094 REGB0 = REGB1;
1095 } else {
1096 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1097 REGB0 = REGB1;
1098 }
1099 }
1100 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1101 if (UNTAG_Bool(REGB0)) {
1102 /* ./icode//icode_builder.nit:236 */
1103 fra.me.REG[3] = NEW_IRegister_icode_base___IRegister___init(fra.me.REG[3]);
1104 fra.me.REG[2] = fra.me.REG[3];
1105 }
1106 /* ./icode//icode_builder.nit:238 */
1107 fra.me.REG[2] = NEW_IRoutine_icode_base___IRoutine___init(fra.me.REG[1], fra.me.REG[2]);
1108 /* ./icode//icode_builder.nit:239 */
1109 fra.me.REG[1] = NIT_NULL;
1110 /* ./icode//icode_builder.nit:240 */
1111 fra.me.REG[3] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1112 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
1113 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1114 if (UNTAG_Bool(REGB0)) {
1115 /* ./icode//icode_builder.nit:241 */
1116 fra.me.REG[3] = NEW_Array_array___Array___init();
1117 fra.me.REG[1] = fra.me.REG[3];
1118 /* ./icode//icode_builder.nit:242 */
1119 fra.me.REG[0] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1120 /* ./../lib/standard//collection//array.nit:234 */
1121 REGB0 = TAG_Int(0);
1122 /* ./../lib/standard//collection//array.nit:235 */
1123 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1124 if (UNTAG_Bool(REGB1)) {
1125 } else {
1126 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
1127 }
1128 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1129 /* ./../lib/standard//collection//array.nit:236 */
1130 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[0]);
1131 /* ./../lib/standard//collection//array.nit:237 */
1132 while(1) {
1133 /* ./../lib/standard//collection//array.nit:23 */
1134 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1135 if (UNTAG_Bool(REGB1)) {
1136 } else {
1137 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1138 }
1139 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1140 /* ./../lib/standard//kernel.nit:212 */
1141 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1142 /* ./../lib/standard//collection//array.nit:237 */
1143 if (UNTAG_Bool(REGB1)) {
1144 /* ./../lib/standard//collection//array.nit:238 */
1145 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1146 if (UNTAG_Bool(REGB1)) {
1147 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
1148 }
1149 /* ./../lib/standard//collection//array.nit:654 */
1150 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
1151 /* ./icode//icode_builder.nit:243 */
1152 fra.me.REG[4] = NEW_IClosureDecl_icode_base___IClosureDecl___init(fra.me.REG[4]);
1153 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1154 if (UNTAG_Bool(REGB1)) {
1155 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 243);
1156 }
1157 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1158 /* ./../lib/standard//collection//array.nit:239 */
1159 REGB1 = TAG_Int(1);
1160 /* ./../lib/standard//kernel.nit:215 */
1161 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1162 /* ./../lib/standard//collection//array.nit:239 */
1163 REGB0 = REGB1;
1164 } else {
1165 /* ./../lib/standard//collection//array.nit:237 */
1166 goto label2;
1167 }
1168 }
1169 label2: while(0);
1170 /* ./icode//icode_builder.nit:245 */
1171 CALL_icode_base___IRoutine___closure_decls__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1172 }
1173 /* ./icode//icode_builder.nit:247 */
1174 goto label3;
1175 label3: while(0);
1176 stack_frame_head = fra.me.prev;
1177 return fra.me.REG[2];
1178 }
1179 val_t icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0, val_t p1){
1180 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1181 val_t REGB0;
1182 val_t REGB1;
1183 val_t REGB2;
1184 val_t tmp;
1185 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1186 fra.me.file = LOCATE_icode_builder;
1187 fra.me.line = 250;
1188 fra.me.meth = LOCATE_icode_builder___MMSignature___generate_empty_iclosuredef;
1189 fra.me.has_broke = 0;
1190 fra.me.REG_size = 5;
1191 fra.me.REG[0] = NIT_NULL;
1192 fra.me.REG[1] = NIT_NULL;
1193 fra.me.REG[2] = NIT_NULL;
1194 fra.me.REG[3] = NIT_NULL;
1195 fra.me.REG[4] = NIT_NULL;
1196 fra.me.REG[0] = p0;
1197 fra.me.REG[1] = p1;
1198 /* ./icode//icode_builder.nit:253 */
1199 fra.me.REG[2] = NEW_Array_array___Array___init();
1200 /* ./icode//icode_builder.nit:254 */
1201 REGB0 = TAG_Int(0);
1202 REGB1 = CALL_static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
1203 /* ./../lib/standard//kernel.nit:332 */
1204 while(1) {
1205 /* ./../lib/standard//kernel.nit:212 */
1206 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1207 /* ./../lib/standard//kernel.nit:332 */
1208 if (UNTAG_Bool(REGB2)) {
1209 /* ./icode//icode_builder.nit:254 */
1210 REGB2 = REGB0;
1211 /* ./icode//icode_builder.nit:255 */
1212 fra.me.REG[3] = CALL_static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
1213 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1214 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1215 /* ./../lib/standard//kernel.nit:334 */
1216 REGB2 = TAG_Int(1);
1217 /* ./../lib/standard//kernel.nit:215 */
1218 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
1219 /* ./../lib/standard//kernel.nit:334 */
1220 REGB0 = REGB2;
1221 } else {
1222 /* ./../lib/standard//kernel.nit:332 */
1223 goto label1;
1224 }
1225 }
1226 label1: while(0);
1227 /* ./icode//icode_builder.nit:257 */
1228 fra.me.REG[3] = NIT_NULL;
1229 /* ./icode//icode_builder.nit:258 */
1230 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
1231 /* ./icode//icode_builder.nit:259 */
1232 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1233 if (UNTAG_Bool(REGB0)) {
1234 } else {
1235 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1236 if (UNTAG_Bool(REGB1)) {
1237 REGB1 = TAG_Bool(false);
1238 REGB0 = REGB1;
1239 } else {
1240 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1241 REGB0 = REGB1;
1242 }
1243 }
1244 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1245 if (UNTAG_Bool(REGB0)) {
1246 /* ./icode//icode_builder.nit:260 */
1247 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1248 fra.me.REG[3] = fra.me.REG[4];
1249 }
1250 /* ./icode//icode_builder.nit:262 */
1251 fra.me.REG[3] = NEW_IClosureDef_icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[3]);
1252 /* ./icode//icode_builder.nit:263 */
1253 fra.me.REG[2] = NIT_NULL;
1254 /* ./icode//icode_builder.nit:264 */
1255 fra.me.REG[4] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1256 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
1257 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1258 if (UNTAG_Bool(REGB0)) {
1259 /* ./icode//icode_builder.nit:265 */
1260 fra.me.REG[4] = NEW_Array_array___Array___init();
1261 fra.me.REG[2] = fra.me.REG[4];
1262 /* ./icode//icode_builder.nit:266 */
1263 fra.me.REG[0] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
1264 /* ./../lib/standard//collection//array.nit:234 */
1265 REGB0 = TAG_Int(0);
1266 /* ./../lib/standard//collection//array.nit:235 */
1267 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1268 if (UNTAG_Bool(REGB1)) {
1269 } else {
1270 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
1271 }
1272 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1273 /* ./../lib/standard//collection//array.nit:236 */
1274 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[0]);
1275 /* ./../lib/standard//collection//array.nit:237 */
1276 while(1) {
1277 /* ./../lib/standard//collection//array.nit:23 */
1278 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1279 if (UNTAG_Bool(REGB1)) {
1280 } else {
1281 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1282 }
1283 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1284 /* ./../lib/standard//kernel.nit:212 */
1285 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1286 /* ./../lib/standard//collection//array.nit:237 */
1287 if (UNTAG_Bool(REGB1)) {
1288 /* ./../lib/standard//collection//array.nit:238 */
1289 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1290 if (UNTAG_Bool(REGB1)) {
1291 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
1292 }
1293 /* ./../lib/standard//collection//array.nit:654 */
1294 fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
1295 /* ./icode//icode_builder.nit:267 */
1296 fra.me.REG[1] = NEW_IClosureDecl_icode_base___IClosureDecl___init(fra.me.REG[1]);
1297 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1298 if (UNTAG_Bool(REGB1)) {
1299 nit_abort("Reciever is null", NULL, LOCATE_icode_builder, 267);
1300 }
1301 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1302 /* ./../lib/standard//collection//array.nit:239 */
1303 REGB1 = TAG_Int(1);
1304 /* ./../lib/standard//kernel.nit:215 */
1305 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1306 /* ./../lib/standard//collection//array.nit:239 */
1307 REGB0 = REGB1;
1308 } else {
1309 /* ./../lib/standard//collection//array.nit:237 */
1310 goto label2;
1311 }
1312 }
1313 label2: while(0);
1314 /* ./icode//icode_builder.nit:269 */
1315 CALL_icode_base___IRoutine___closure_decls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1316 }
1317 /* ./icode//icode_builder.nit:271 */
1318 goto label3;
1319 label3: while(0);
1320 stack_frame_head = fra.me.prev;
1321 return fra.me.REG[3];
1322 }