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