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