First NIT release and new clean mercurial repository
[nit.git] / c_src / array._sep.c
1 #include "array._sep.h"
2 void array___AbstractArray___enlarge(val_t self, val_t param0) {
3 struct trace_t trace = {NULL, "array::AbstractArray::enlarge (bin/../lib/standard//array.nit:23,2--22)"};
4 trace.prev = tracehead; tracehead = &trace;
5 fprintf(stderr, "Deferred method enlarge called (bin/../lib/standard//array.nit:23,2)\n");
6 nit_exit(1);
7 tracehead = trace.prev;
8 return;
9 }
10 val_t array___AbstractArray___length(val_t self) {
11 struct trace_t trace = {NULL, "array::AbstractArray::length (bin/../lib/standard//array.nit:25,2--26:33)"};
12 trace.prev = tracehead; tracehead = &trace;
13 tracehead = trace.prev;
14 return ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
15 }
16 val_t array___AbstractArray___is_empty(val_t self) {
17 struct trace_t trace = {NULL, "array::AbstractArray::is_empty (bin/../lib/standard//array.nit:28,2--43)"};
18 val_t variable0;
19 trace.prev = tracehead; tracehead = &trace;
20 variable0 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
21 variable0 = TAG_Bool((variable0)==( TAG_Int(0)));
22 goto return_label0;
23 return_label0: while(false);
24 tracehead = trace.prev;
25 return variable0;
26 }
27 void array___AbstractArray___push(val_t self, val_t param0) {
28 struct trace_t trace = {NULL, "array::AbstractArray::push (bin/../lib/standard//array.nit:30,2--34)"};
29 val_t variable0;
30 trace.prev = tracehead; tracehead = &trace;
31 variable0 = param0;
32 ((array___AbstractArray___add_t)CALL( self,COLOR_abstract_collection___SimpleCollection___add))( self, variable0 /*item*/) /*AbstractArray::add*/;
33 tracehead = trace.prev;
34 return;
35 }
36 val_t array___AbstractArray___pop(val_t self) {
37 struct trace_t trace = {NULL, "array::AbstractArray::pop (bin/../lib/standard//array.nit:32,2--37:10)"};
38 val_t variable0;
39 val_t variable1;
40 trace.prev = tracehead; tracehead = &trace;
41 variable0 = ((array___AbstractArray___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*AbstractArray::is_empty*/;
42 if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert 'not_empty' failed: bin/../lib/standard//array.nit:34,3--32\n"); nit_exit(1);}
43 variable1 = ((abstract_collection___IndexedCollection___last_t)CALL( self,COLOR_abstract_collection___IndexedCollection___last))( self) /*AbstractArray::last*/;
44 variable0 = variable1;
45 ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = TAG_Int(UNTAG_Int(ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/)-UNTAG_Int( TAG_Int(1)));
46 variable0 = variable0 /*r*/;
47 goto return_label2;
48 return_label2: while(false);
49 tracehead = trace.prev;
50 return variable0;
51 }
52 val_t array___AbstractArray___shift(val_t self) {
53 struct trace_t trace = {NULL, "array::AbstractArray::shift (bin/../lib/standard//array.nit:40,2--51:10)"};
54 val_t variable0;
55 val_t variable1;
56 val_t variable2;
57 val_t variable3;
58 val_t variable4;
59 trace.prev = tracehead; tracehead = &trace;
60 variable0 = ((array___AbstractArray___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*AbstractArray::is_empty*/;
61 if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert 'not_empty' failed: bin/../lib/standard//array.nit:42,3--32\n"); nit_exit(1);}
62 variable1 = ((abstract_collection___IndexedCollection___first_t)CALL( self,COLOR_abstract_collection___Collection___first))( self) /*AbstractArray::first*/;
63 variable0 = variable1;
64 variable1 = TAG_Int(1);
65 variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
66 variable2 = variable3;
67 while (true) { /*while*/
68 variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
69 if (!UNTAG_Bool(variable3)) break; /* while*/
70 variable3 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
71 variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable1 /*i*/) /*AbstractArray::[]*/;
72 ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*AbstractArray::[]=*/;
73 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
74 continue_4: while(0);
75 }
76 break_4: while(0);
77 variable3 = TAG_Int(UNTAG_Int( variable2 /*l*/)-UNTAG_Int( TAG_Int(1)));
78 ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = variable3;
79 variable0 = variable0 /*r*/;
80 goto return_label3;
81 return_label3: while(false);
82 tracehead = trace.prev;
83 return variable0;
84 }
85 void array___AbstractArray___unshift(val_t self, val_t param0) {
86 struct trace_t trace = {NULL, "array::AbstractArray::unshift (bin/../lib/standard//array.nit:54,2--61:16)"};
87 val_t variable0;
88 val_t variable1;
89 val_t variable2;
90 val_t variable3;
91 trace.prev = tracehead; tracehead = &trace;
92 variable0 = param0;
93 variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
94 variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
95 variable1 = variable2;
96 while (true) { /*while*/
97 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>UNTAG_Int( TAG_Int(0)));
98 if (!UNTAG_Bool(variable2)) break; /* while*/
99 variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)+UNTAG_Int( TAG_Int(1)));
100 variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable1 /*i*/) /*AbstractArray::[]*/;
101 ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable2, variable3) /*AbstractArray::[]=*/;
102 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
103 continue_6: while(0);
104 }
105 break_6: while(0);
106 ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, TAG_Int(0), variable0 /*item*/) /*AbstractArray::[]=*/;
107 tracehead = trace.prev;
108 return;
109 }
110 void array___AbstractArray___insert(val_t self, val_t param0, val_t param1) {
111 struct trace_t trace = {NULL, "array::AbstractArray::insert (bin/../lib/standard//array.nit:64,2--68:18)"};
112 val_t variable0;
113 val_t variable1;
114 val_t variable2;
115 val_t variable3;
116 trace.prev = tracehead; tracehead = &trace;
117 variable0 = param0;
118 variable1 = param1;
119 variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
120 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1)));
121 ((array___AbstractArray___enlarge_t)CALL( self,COLOR_array___AbstractArray___enlarge))( self, variable2) /*AbstractArray::enlarge*/;
122 variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
123 variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( variable1 /*pos*/));
124 variable3 = TAG_Int(UNTAG_Int( variable1 /*pos*/)+UNTAG_Int( TAG_Int(1)));
125 ((array___AbstractArray___copy_to_t)CALL( self,COLOR_array___AbstractArray___copy_to))( self, variable1 /*pos*/, variable2, self, variable3) /*AbstractArray::copy_to*/;
126 ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable1 /*pos*/, variable0 /*item*/) /*AbstractArray::[]=*/;
127 tracehead = trace.prev;
128 return;
129 }
130 void array___AbstractArray___add(val_t self, val_t param0) {
131 struct trace_t trace = {NULL, "array::AbstractArray::add (bin/../lib/standard//array.nit:71,2--44)"};
132 val_t variable0;
133 val_t variable1;
134 trace.prev = tracehead; tracehead = &trace;
135 variable0 = param0;
136 variable1 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
137 ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable1, variable0 /*item*/) /*AbstractArray::[]=*/;
138 tracehead = trace.prev;
139 return;
140 }
141 void array___AbstractArray___clear(val_t self) {
142 struct trace_t trace = {NULL, "array::AbstractArray::clear (bin/../lib/standard//array.nit:73,2--32)"};
143 trace.prev = tracehead; tracehead = &trace;
144 ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = TAG_Int(0);
145 tracehead = trace.prev;
146 return;
147 }
148 val_t array___AbstractArray___has(val_t self, val_t param0) {
149 struct trace_t trace = {NULL, "array::AbstractArray::has (bin/../lib/standard//array.nit:75,2--83:14)"};
150 val_t variable0;
151 val_t variable1;
152 val_t variable2;
153 val_t variable3;
154 trace.prev = tracehead; tracehead = &trace;
155 variable0 = param0;
156 variable1 = TAG_Int(0);
157 variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
158 variable2 = variable3;
159 while (true) { /*while*/
160 variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
161 if (!UNTAG_Bool(variable3)) break; /* while*/
162 variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable1 /*i*/) /*AbstractArray::[]*/;
163 variable3 = TAG_Bool((variable3 == variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*item*/) /*Object::==*/)))));
164 if (UNTAG_Bool(variable3)) { /*if*/
165 variable1 = TAG_Bool(true);
166 goto return_label10;
167 }
168 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
169 continue_11: while(0);
170 }
171 break_11: while(0);
172 variable1 = TAG_Bool(false);
173 goto return_label10;
174 return_label10: while(false);
175 tracehead = trace.prev;
176 return variable1;
177 }
178 val_t array___AbstractArray___has_only(val_t self, val_t param0) {
179 struct trace_t trace = {NULL, "array::AbstractArray::has_only (bin/../lib/standard//array.nit:86,2--94:13)"};
180 val_t variable0;
181 val_t variable1;
182 val_t variable2;
183 val_t variable3;
184 trace.prev = tracehead; tracehead = &trace;
185 variable0 = param0;
186 variable1 = TAG_Int(0);
187 variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
188 variable2 = variable3;
189 while (true) { /*while*/
190 variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
191 if (!UNTAG_Bool(variable3)) break; /* while*/
192 variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable1 /*i*/) /*AbstractArray::[]*/;
193 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*item*/) /*Object::==*/)))))));
194 if (UNTAG_Bool(variable3)) { /*if*/
195 variable1 = TAG_Bool(false);
196 goto return_label12;
197 }
198 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
199 continue_13: while(0);
200 }
201 break_13: while(0);
202 variable1 = TAG_Bool(true);
203 goto return_label12;
204 return_label12: while(false);
205 tracehead = trace.prev;
206 return variable1;
207 }
208 val_t array___AbstractArray___has_key(val_t self, val_t param0) {
209 struct trace_t trace = {NULL, "array::AbstractArray::has_key (bin/../lib/standard//array.nit:97,2--66)"};
210 val_t variable0;
211 val_t variable1;
212 val_t variable2;
213 trace.prev = tracehead; tracehead = &trace;
214 variable0 = param0;
215 variable1 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
216 variable2 = variable1;
217 if (UNTAG_Bool(variable2)) { /* and */
218 variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
219 variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable2));
220 }
221 variable1 = variable2;
222 goto return_label14;
223 return_label14: while(false);
224 tracehead = trace.prev;
225 return variable1;
226 }
227 val_t array___AbstractArray___count(val_t self, val_t param0) {
228 struct trace_t trace = {NULL, "array::AbstractArray::count (bin/../lib/standard//array.nit:99,2--108:12)"};
229 val_t variable0;
230 val_t variable1;
231 val_t variable2;
232 val_t variable3;
233 val_t variable4;
234 trace.prev = tracehead; tracehead = &trace;
235 variable0 = param0;
236 variable1 = TAG_Int(0);
237 variable2 = TAG_Int(0);
238 variable4 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
239 variable3 = variable4;
240 while (true) { /*while*/
241 variable4 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable3 /*l*/));
242 if (!UNTAG_Bool(variable4)) break; /* while*/
243 variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable2 /*i*/) /*AbstractArray::[]*/;
244 variable4 = TAG_Bool((variable4 == variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4, variable0 /*item*/) /*Object::==*/)))));
245 if (UNTAG_Bool(variable4)) { /*if*/
246 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*res*/;
247 }
248 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
249 continue_16: while(0);
250 }
251 break_16: while(0);
252 variable1 = variable1 /*res*/;
253 goto return_label15;
254 return_label15: while(false);
255 tracehead = trace.prev;
256 return variable1;
257 }
258 val_t array___AbstractArray___index_of(val_t self, val_t param0) {
259 struct trace_t trace = {NULL, "array::AbstractArray::index_of (bin/../lib/standard//array.nit:111,2--58)"};
260 val_t variable0;
261 val_t variable1;
262 trace.prev = tracehead; tracehead = &trace;
263 variable0 = param0;
264 variable1 = ((array___AbstractArray___index_of_from_t)CALL( self,COLOR_array___AbstractArray___index_of_from))( self, variable0 /*item*/, TAG_Int(0)) /*AbstractArray::index_of_from*/;
265 goto return_label17;
266 return_label17: while(false);
267 tracehead = trace.prev;
268 return variable1;
269 }
270 val_t array___AbstractArray___last_index_of(val_t self, val_t param0) {
271 struct trace_t trace = {NULL, "array::AbstractArray::last_index_of (bin/../lib/standard//array.nit:113,2--77)"};
272 val_t variable0;
273 val_t variable1;
274 trace.prev = tracehead; tracehead = &trace;
275 variable0 = param0;
276 variable1 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
277 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1)));
278 variable1 = ((array___AbstractArray___last_index_of_from_t)CALL( self,COLOR_array___AbstractArray___last_index_of_from))( self, variable0 /*item*/, variable1) /*AbstractArray::last_index_of_from*/;
279 goto return_label18;
280 return_label18: while(false);
281 tracehead = trace.prev;
282 return variable1;
283 }
284 val_t array___AbstractArray___index_of_from(val_t self, val_t param0, val_t param1) {
285 struct trace_t trace = {NULL, "array::AbstractArray::index_of_from (bin/../lib/standard//array.nit:115,2--125:11)"};
286 val_t variable0;
287 val_t variable1;
288 val_t variable2;
289 val_t variable3;
290 val_t variable4;
291 trace.prev = tracehead; tracehead = &trace;
292 variable0 = param0;
293 variable1 = param1;
294 variable2 = variable1 /*pos*/;
295 variable4 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
296 variable3 = variable4;
297 while (true) { /*while*/
298 variable4 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable3 /*len*/));
299 if (!UNTAG_Bool(variable4)) break; /* while*/
300 variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable2 /*i*/) /*AbstractArray::[]*/;
301 variable4 = TAG_Bool((variable4 == variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4, variable0 /*item*/) /*Object::==*/)))));
302 if (UNTAG_Bool(variable4)) { /*if*/
303 variable2 = variable2 /*i*/;
304 goto return_label19;
305 }
306 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
307 continue_20: while(0);
308 }
309 break_20: while(0);
310 variable4 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
311 variable2 = variable4;
312 goto return_label19;
313 return_label19: while(false);
314 tracehead = trace.prev;
315 return variable2;
316 }
317 val_t array___AbstractArray___last_index_of_from(val_t self, val_t param0, val_t param1) {
318 struct trace_t trace = {NULL, "array::AbstractArray::last_index_of_from (bin/../lib/standard//array.nit:128,2--138:11)"};
319 val_t variable0;
320 val_t variable1;
321 val_t variable2;
322 val_t variable3;
323 trace.prev = tracehead; tracehead = &trace;
324 variable0 = param0;
325 variable1 = param1;
326 variable2 = variable1 /*pos*/;
327 while (true) { /*while*/
328 variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)>=UNTAG_Int( TAG_Int(0)));
329 if (!UNTAG_Bool(variable3)) break; /* while*/
330 variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable2 /*i*/) /*AbstractArray::[]*/;
331 variable3 = TAG_Bool((variable3 == variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*item*/) /*Object::==*/)))));
332 if (UNTAG_Bool(variable3)) { /*if*/
333 variable2 = variable2 /*i*/;
334 goto return_label21;
335 } else { /*if*/
336 variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1))) /*i*/;
337 }
338 continue_22: while(0);
339 }
340 break_22: while(0);
341 variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
342 variable2 = variable3;
343 goto return_label21;
344 return_label21: while(false);
345 tracehead = trace.prev;
346 return variable2;
347 }
348 val_t array___AbstractArray___reversed(val_t self) {
349 struct trace_t trace = {NULL, "array::AbstractArray::reversed (bin/../lib/standard//array.nit:141,2--149:15)"};
350 val_t variable0;
351 val_t variable1;
352 val_t variable2;
353 trace.prev = tracehead; tracehead = &trace;
354 variable1 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
355 variable0 = variable1;
356 variable2 = NEW_array___Array___with_capacity( variable0 /*cmp*/); /*new Array[E]*/
357 variable1 = variable2;
358 while (true) { /*while*/
359 variable2 = TAG_Bool(UNTAG_Int( variable0 /*cmp*/)>UNTAG_Int( TAG_Int(0)));
360 if (!UNTAG_Bool(variable2)) break; /* while*/
361 variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*cmp*/;
362 variable2 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable0 /*cmp*/) /*AbstractArray::[]*/;
363 ((array___AbstractArray___add_t)CALL( variable1 /*result*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*result*/, variable2) /*Array::add*/;
364 continue_24: while(0);
365 }
366 break_24: while(0);
367 variable0 = variable1 /*result*/;
368 goto return_label23;
369 return_label23: while(false);
370 tracehead = trace.prev;
371 return variable0;
372 }
373 void array___AbstractArray___remove(val_t self, val_t param0) {
374 struct trace_t trace = {NULL, "array::AbstractArray::remove (bin/../lib/standard//array.nit:152,2--51)"};
375 val_t variable0;
376 val_t variable1;
377 trace.prev = tracehead; tracehead = &trace;
378 variable0 = param0;
379 variable1 = ((array___AbstractArray___index_of_t)CALL( self,COLOR_abstract_collection___IndexedCollection___index_of))( self, variable0 /*item*/) /*AbstractArray::index_of*/;
380 ((array___AbstractArray___remove_at_t)CALL( self,COLOR_abstract_collection___Map___remove_at))( self, variable1) /*AbstractArray::remove_at*/;
381 tracehead = trace.prev;
382 return;
383 }
384 void array___AbstractArray___remove_all(val_t self, val_t param0) {
385 struct trace_t trace = {NULL, "array::AbstractArray::remove_all (bin/../lib/standard//array.nit:154,2--159:28)"};
386 val_t variable0;
387 val_t variable1;
388 val_t variable2;
389 trace.prev = tracehead; tracehead = &trace;
390 variable0 = param0;
391 variable2 = ((array___AbstractArray___index_of_t)CALL( self,COLOR_abstract_collection___IndexedCollection___index_of))( self, variable0 /*item*/) /*AbstractArray::index_of*/;
392 variable1 = variable2;
393 while (true) { /*while*/
394 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
395 if (!UNTAG_Bool(variable2)) break; /* while*/
396 ((array___AbstractArray___remove_at_t)CALL( self,COLOR_abstract_collection___Map___remove_at))( self, variable1 /*i*/) /*AbstractArray::remove_at*/;
397 variable2 = ((array___AbstractArray___index_of_from_t)CALL( self,COLOR_array___AbstractArray___index_of_from))( self, variable0 /*item*/, variable1 /*i*/) /*AbstractArray::index_of_from*/;
398 variable1 = variable2 /*i=*/;
399 continue_27: while(0);
400 }
401 break_27: while(0);
402 tracehead = trace.prev;
403 return;
404 }
405 void array___AbstractArray___remove_at(val_t self, val_t param0) {
406 struct trace_t trace = {NULL, "array::AbstractArray::remove_at (bin/../lib/standard//array.nit:163,2--172:18)"};
407 val_t variable0;
408 val_t variable1;
409 val_t variable2;
410 val_t variable3;
411 val_t variable4;
412 trace.prev = tracehead; tracehead = &trace;
413 variable0 = param0;
414 variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
415 variable1 = variable2;
416 variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>=UNTAG_Int( TAG_Int(0)));
417 variable3 = variable2;
418 if (UNTAG_Bool(variable3)) { /* and */
419 variable3 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int( variable1 /*l*/));
420 }
421 variable2 = variable3;
422 if (UNTAG_Bool(variable2)) { /*if*/
423 variable3 = TAG_Int(UNTAG_Int( variable0 /*i*/)+UNTAG_Int( TAG_Int(1)));
424 variable2 = variable3;
425 while (true) { /*while*/
426 variable3 = TAG_Bool(UNTAG_Int( variable2 /*j*/)<UNTAG_Int( variable1 /*l*/));
427 if (!UNTAG_Bool(variable3)) break; /* while*/
428 variable3 = TAG_Int(UNTAG_Int( variable2 /*j*/)-UNTAG_Int( TAG_Int(1)));
429 variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable2 /*j*/) /*AbstractArray::[]*/;
430 ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*AbstractArray::[]=*/;
431 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*j*/;
432 continue_29: while(0);
433 }
434 break_29: while(0);
435 variable3 = TAG_Int(UNTAG_Int( variable1 /*l*/)-UNTAG_Int( TAG_Int(1)));
436 ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = variable3;
437 }
438 tracehead = trace.prev;
439 return;
440 }
441 void array___AbstractArray___copy_to(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
442 struct trace_t trace = {NULL, "array::AbstractArray::copy_to (bin/../lib/standard//array.nit:176,2--182:35)"};
443 val_t variable0;
444 val_t variable1;
445 val_t variable2;
446 val_t variable3;
447 val_t variable4;
448 val_t variable5;
449 val_t variable6;
450 trace.prev = tracehead; tracehead = &trace;
451 variable0 = param0;
452 variable1 = param1;
453 variable2 = param2;
454 variable3 = param3;
455 variable4 = variable1 /*len*/;
456 while (true) { /*while*/
457 variable5 = TAG_Bool(UNTAG_Int( variable4 /*i*/)>UNTAG_Int( TAG_Int(0)));
458 if (!UNTAG_Bool(variable5)) break; /* while*/
459 variable4 = TAG_Int(UNTAG_Int(variable4)-UNTAG_Int( TAG_Int(1))) /*i*/;
460 variable5 = TAG_Int(UNTAG_Int( variable3 /*new_start*/)+UNTAG_Int( variable4 /*i*/));
461 variable6 = TAG_Int(UNTAG_Int( variable0 /*start*/)+UNTAG_Int( variable4 /*i*/));
462 variable6 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable6) /*AbstractArray::[]*/;
463 ((abstract_collection___Map_____braeq_t)CALL( variable2 /*dest*/,COLOR_abstract_collection___Map_____braeq))( variable2 /*dest*/, variable5, variable6) /*AbstractArray::[]=*/;
464 continue_31: while(0);
465 }
466 break_31: while(0);
467 tracehead = trace.prev;
468 return;
469 }
470 void array___AbstractArray___output(val_t self) {
471 struct trace_t trace = {NULL, "array::AbstractArray::output (bin/../lib/standard//array.nit:186,2--193:9)"};
472 val_t variable0;
473 val_t variable1;
474 val_t variable2;
475 val_t variable3;
476 trace.prev = tracehead; tracehead = &trace;
477 variable0 = TAG_Int(0);
478 variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
479 variable1 = variable2;
480 while (true) { /*while*/
481 variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int( variable1 /*l*/));
482 if (!UNTAG_Bool(variable2)) break; /* while*/
483 variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable0 /*i*/) /*AbstractArray::[]*/;
484 variable2 = variable3;
485 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*e*/ == NIT_NULL /*null*/) || (( variable2 /*e*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*e*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*e*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*e*/,COLOR_kernel___Object_____eqeq))( variable2 /*e*/, NIT_NULL /*null*/) /*Object::==*/)))))));
486 if (UNTAG_Bool(variable3)) { /*if*/
487 ((kernel___Object___output_t)CALL( variable2 /*e*/,COLOR_kernel___Object___output))( variable2 /*e*/) /*Object::output*/;
488 }
489 variable0 = TAG_Int(UNTAG_Int(variable0)+UNTAG_Int( TAG_Int(1))) /*i*/;
490 continue_33: while(0);
491 }
492 break_33: while(0);
493 tracehead = trace.prev;
494 return;
495 }
496 val_t array___AbstractArray___iterator(val_t self) {
497 struct trace_t trace = {NULL, "array::AbstractArray::iterator (bin/../lib/standard//array.nit:197,2--74)"};
498 val_t variable0;
499 trace.prev = tracehead; tracehead = &trace;
500 variable0 = NEW_array___ArrayIterator___init( self); /*new ArrayIterator[E]*/
501 goto return_label34;
502 return_label34: while(false);
503 tracehead = trace.prev;
504 return variable0;
505 }
506 val_t array___AbstractArray_____eqeq(val_t self, val_t param0) {
507 struct trace_t trace = {NULL, "array::AbstractArray::== (bin/../lib/standard//array.nit:199,2--211:13)"};
508 val_t variable0;
509 val_t variable1;
510 val_t variable2;
511 val_t variable3;
512 val_t variable4;
513 trace.prev = tracehead; tracehead = &trace;
514 variable0 = param0;
515 variable1 = TAG_Bool(( variable0 /*o*/==NIT_NULL) || VAL_ISA( variable0 /*o*/, COLOR_AbstractArray, ID_AbstractArray)) /*cast AbstractArray[E]*/;
516 variable1 = TAG_Bool(!UNTAG_Bool(variable1));
517 if (!UNTAG_Bool(variable1)) { /* or */
518 variable1 = TAG_Bool(IS_EQUAL_NN( variable0 /*o*/, NIT_NULL /*null*/));
519 }
520 if (UNTAG_Bool(variable1)) { /*if*/
521 variable1 = TAG_Bool(false);
522 goto return_label35;
523 }
524 variable1 = TAG_Bool(( variable0 /*o*/==NIT_NULL) || VAL_ISA( variable0 /*o*/, COLOR_AbstractArray, ID_AbstractArray)) /*cast AbstractArray[E]*/;
525 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert failed: bin/../lib/standard//array.nit:203,3--30\n"); nit_exit(1);}
526 variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
527 variable1 = variable2;
528 variable2 = ((array___AbstractArray___length_t)CALL( variable0 /*o*/,COLOR_abstract_collection___Collection___length))( variable0 /*o*/) /*AbstractArray::length*/;
529 variable2 = TAG_Bool((variable2)!=( variable1 /*l*/));
530 if (UNTAG_Bool(variable2)) { /*if*/
531 variable1 = TAG_Bool(false);
532 goto return_label35;
533 }
534 variable2 = TAG_Int(0);
535 while (true) { /*while*/
536 variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable1 /*l*/));
537 if (!UNTAG_Bool(variable3)) break; /* while*/
538 variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable2 /*i*/) /*AbstractArray::[]*/;
539 variable4 = ((abstract_collection___Map_____bra_t)CALL( variable0 /*o*/,COLOR_abstract_collection___Map_____bra))( variable0 /*o*/, variable2 /*i*/) /*AbstractArray::[]*/;
540 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == variable4) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3,variable4)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable4) /*Object::==*/)))))));
541 if (UNTAG_Bool(variable3)) { /*if*/
542 variable1 = TAG_Bool(false);
543 goto return_label35;
544 }
545 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
546 continue_36: while(0);
547 }
548 break_36: while(0);
549 variable1 = TAG_Bool(true);
550 goto return_label35;
551 return_label35: while(false);
552 tracehead = trace.prev;
553 return variable1;
554 }
555 val_t array___Array_____bra(val_t self, val_t param0) {
556 struct trace_t trace = {NULL, "array::Array::[] (bin/../lib/standard//array.nit:227,2--230:21)"};
557 val_t variable0;
558 val_t variable1;
559 val_t variable2;
560 trace.prev = tracehead; tracehead = &trace;
561 variable0 = param0;
562 variable1 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
563 variable2 = variable1;
564 if (UNTAG_Bool(variable2)) { /* and */
565 variable2 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
566 variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable2));
567 }
568 variable1 = variable2;
569 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
570 variable1 = ATTR_array___Array____items( self) /*Array::_items*/;
571 variable1 = UNBOX_NativeArray(variable1)[UNTAG_Int( variable0 /*index*/)];
572 goto return_label37;
573 return_label37: while(false);
574 tracehead = trace.prev;
575 return variable1;
576 }
577 void array___Array_____braeq(val_t self, val_t param0, val_t param1) {
578 struct trace_t trace = {NULL, "array::Array::[]= (bin/../lib/standard//array.nit:233,2--242:22)"};
579 val_t variable0;
580 val_t variable1;
581 val_t variable2;
582 val_t variable3;
583 trace.prev = tracehead; tracehead = &trace;
584 variable0 = param0;
585 variable1 = param1;
586 variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
587 variable3 = variable2;
588 if (UNTAG_Bool(variable3)) { /* and */
589 variable3 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
590 variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( TAG_Int(1)));
591 variable3 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable3));
592 }
593 variable2 = variable3;
594 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:235,3--50\n"); nit_exit(1);}
595 variable2 = ATTR_array___Array____capacity( self) /*Array::_capacity*/;
596 variable2 = TAG_Bool(UNTAG_Int(variable2)<=UNTAG_Int( variable0 /*index*/));
597 if (UNTAG_Bool(variable2)) { /*if*/
598 variable2 = TAG_Int(UNTAG_Int( variable0 /*index*/)+UNTAG_Int( TAG_Int(1)));
599 ((array___Array___enlarge_t)CALL( self,COLOR_array___AbstractArray___enlarge))( self, variable2) /*Array::enlarge*/;
600 }
601 variable2 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
602 variable2 = TAG_Bool(UNTAG_Int(variable2)<=UNTAG_Int( variable0 /*index*/));
603 if (UNTAG_Bool(variable2)) { /*if*/
604 variable2 = TAG_Int(UNTAG_Int( variable0 /*index*/)+UNTAG_Int( TAG_Int(1)));
605 ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable2;
606 }
607 variable2 = ATTR_array___Array____items( self) /*Array::_items*/;
608 UNBOX_NativeArray(variable2)[UNTAG_Int( variable0 /*index*/)]= variable1 /*item*/;
609 tracehead = trace.prev;
610 return;
611 }
612 void array___Array___enlarge(val_t self, val_t param0) {
613 struct trace_t trace = {NULL, "array::Array::enlarge (bin/../lib/standard//array.nit:245,2--253:15)"};
614 val_t variable0;
615 val_t variable1;
616 val_t variable2;
617 val_t variable3;
618 val_t variable4;
619 trace.prev = tracehead; tracehead = &trace;
620 variable0 = param0;
621 variable2 = ATTR_array___Array____capacity( self) /*Array::_capacity*/;
622 variable1 = variable2;
623 variable2 = TAG_Bool(UNTAG_Int( variable0 /*cap*/)<=UNTAG_Int( variable1 /*c*/));
624 if (UNTAG_Bool(variable2)) { /*if*/
625 goto return_label39;
626 }
627 while (true) { /*while*/
628 variable2 = TAG_Bool(UNTAG_Int( variable1 /*c*/)<=UNTAG_Int( variable0 /*cap*/));
629 if (!UNTAG_Bool(variable2)) break; /* while*/
630 variable2 = TAG_Int(UNTAG_Int( variable1 /*c*/)*UNTAG_Int( TAG_Int(2)));
631 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(2)));
632 variable1 = variable2 /*c=*/;
633 continue_40: while(0);
634 }
635 break_40: while(0);
636 variable3 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable1 /*c*/) * sizeof(val_t))));
637 variable2 = variable3;
638 variable3 = ATTR_array___Array____capacity( self) /*Array::_capacity*/;
639 variable3 = TAG_Bool(UNTAG_Int(variable3)>UNTAG_Int( TAG_Int(0)));
640 if (UNTAG_Bool(variable3)) { /*if*/
641 variable3 = ATTR_array___Array____items( self) /*Array::_items*/;
642 variable4 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
643 (void)memcpy(UNBOX_NativeArray( variable2 /*a*/), UNBOX_NativeArray(variable3), UNTAG_Int(variable4)*sizeof(val_t));
644 }
645 ATTR_array___Array____items( self) /*Array::_items*/ = variable2 /*a*/;
646 ATTR_array___Array____capacity( self) /*Array::_capacity*/ = variable1 /*c*/;
647 return_label39: while(false);
648 tracehead = trace.prev;
649 return;
650 }
651 void array___Array___init(val_t self, int* init_table) {
652 struct trace_t trace = {NULL, "array::Array::init (bin/../lib/standard//array.nit:256,2--260:13)"};
653 trace.prev = tracehead; tracehead = &trace;
654 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
655 ATTR_array___Array____capacity( self) /*Array::_capacity*/ = TAG_Int(0);
656 ATTR_array___AbstractArray____length( self) /*Array::_length*/ = TAG_Int(0);
657 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
658 tracehead = trace.prev;
659 return;
660 }
661 void array___Array___with(val_t self, val_t param0, int* init_table) {
662 struct trace_t trace = {NULL, "array::Array::with (bin/../lib/standard//array.nit:263,2--268:26)"};
663 val_t variable0;
664 val_t variable1;
665 trace.prev = tracehead; tracehead = &trace;
666 /* check if p<Array[E] with p:E */
667 if (( param0!=NIT_NULL) && !VAL_ISA( param0, COLOR_Array, ID_Array)) { fprintf(stderr, "Cast failled at bin/../lib/standard//array.nit:264,12--24\n"); nit_exit(1); } /*cast Array[E]*/;
668 variable0 = param0;
669 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
670 variable1 = ATTR_array___Array____items( variable0 /*objects*/) /*Array::_items*/;
671 ATTR_array___Array____items( self) /*Array::_items*/ = variable1;
672 variable1 = ATTR_array___Array____capacity( variable0 /*objects*/) /*Array::_capacity*/;
673 ATTR_array___Array____capacity( self) /*Array::_capacity*/ = variable1;
674 variable1 = ((array___AbstractArray___length_t)CALL( variable0 /*objects*/,COLOR_abstract_collection___Collection___length))( variable0 /*objects*/) /*Array::length*/;
675 ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable1;
676 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
677 tracehead = trace.prev;
678 return;
679 }
680 void array___Array___with_capacity(val_t self, val_t param0, int* init_table) {
681 struct trace_t trace = {NULL, "array::Array::with_capacity (bin/../lib/standard//array.nit:271,2--277:13)"};
682 val_t variable0;
683 val_t variable1;
684 trace.prev = tracehead; tracehead = &trace;
685 variable0 = param0;
686 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
687 variable1 = TAG_Bool(UNTAG_Int( variable0 /*cap*/)>=UNTAG_Int( TAG_Int(0)));
688 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert 'positive' failed: bin/../lib/standard//array.nit:274,3--27\n"); nit_exit(1);}
689 variable1 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable0 /*cap*/) * sizeof(val_t))));
690 ATTR_array___Array____items( self) /*Array::_items*/ = variable1;
691 ATTR_array___Array____capacity( self) /*Array::_capacity*/ = variable0 /*cap*/;
692 ATTR_array___AbstractArray____length( self) /*Array::_length*/ = TAG_Int(0);
693 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
694 tracehead = trace.prev;
695 return;
696 }
697 void array___Array___filled_with(val_t self, val_t param0, val_t param1, int* init_table) {
698 struct trace_t trace = {NULL, "array::Array::filled_with (bin/../lib/standard//array.nit:280,2--290:9)"};
699 val_t variable0;
700 val_t variable1;
701 val_t variable2;
702 val_t variable3;
703 trace.prev = tracehead; tracehead = &trace;
704 variable0 = param0;
705 variable1 = param1;
706 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
707 variable2 = TAG_Bool(UNTAG_Int( variable1 /*count*/)>=UNTAG_Int( TAG_Int(0)));
708 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert 'positive' failed: bin/../lib/standard//array.nit:283,3--29\n"); nit_exit(1);}
709 variable2 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable1 /*count*/) * sizeof(val_t))));
710 ATTR_array___Array____items( self) /*Array::_items*/ = variable2;
711 ATTR_array___Array____capacity( self) /*Array::_capacity*/ = variable1 /*count*/;
712 ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable1 /*count*/;
713 variable2 = TAG_Int(0);
714 while (true) { /*while*/
715 variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable1 /*count*/));
716 if (!UNTAG_Bool(variable3)) break; /* while*/
717 ((array___Array_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable2 /*i*/, variable0 /*value*/) /*Array::[]=*/;
718 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
719 continue_45: while(0);
720 }
721 break_45: while(0);
722 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
723 tracehead = trace.prev;
724 return;
725 }
726 void array___Array___with_native(val_t self, val_t param0, val_t param1, int* init_table) {
727 struct trace_t trace = {NULL, "array::Array::with_native (bin/../lib/standard//array.nit:294,2--300:16)"};
728 val_t variable0;
729 val_t variable1;
730 val_t variable2;
731 trace.prev = tracehead; tracehead = &trace;
732 variable0 = param0;
733 variable1 = param1;
734 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
735 variable2 = TAG_Bool(UNTAG_Int( variable1 /*size*/)>=UNTAG_Int( TAG_Int(0)));
736 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert 'positive' failed: bin/../lib/standard//array.nit:297,3--28\n"); nit_exit(1);}
737 ATTR_array___Array____items( self) /*Array::_items*/ = variable0 /*nat*/;
738 ATTR_array___Array____capacity( self) /*Array::_capacity*/ = variable1 /*size*/;
739 ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable1 /*size*/;
740 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
741 tracehead = trace.prev;
742 return;
743 }
744 val_t array___ArrayIterator___item(val_t self) {
745 struct trace_t trace = {NULL, "array::ArrayIterator::item (bin/../lib/standard//array.nit:313,2--40)"};
746 val_t variable0;
747 val_t variable1;
748 trace.prev = tracehead; tracehead = &trace;
749 variable0 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
750 variable1 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
751 variable0 = ((abstract_collection___Map_____bra_t)CALL(variable0,COLOR_abstract_collection___Map_____bra))(variable0, variable1) /*AbstractArray::[]*/;
752 goto return_label47;
753 return_label47: while(false);
754 tracehead = trace.prev;
755 return variable0;
756 }
757 void array___ArrayIterator___item__eq(val_t self, val_t param0) {
758 struct trace_t trace = {NULL, "array::ArrayIterator::item= (bin/../lib/standard//array.nit:315,2--42)"};
759 val_t variable0;
760 val_t variable1;
761 val_t variable2;
762 trace.prev = tracehead; tracehead = &trace;
763 variable0 = param0;
764 variable1 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
765 variable2 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
766 ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2, variable0 /*e*/) /*AbstractArray::[]=*/;
767 tracehead = trace.prev;
768 return;
769 }
770 val_t array___ArrayIterator___is_ok(val_t self) {
771 struct trace_t trace = {NULL, "array::ArrayIterator::is_ok (bin/../lib/standard//array.nit:317,2--50)"};
772 val_t variable0;
773 val_t variable1;
774 trace.prev = tracehead; tracehead = &trace;
775 variable0 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
776 variable1 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
777 variable1 = ((array___AbstractArray___length_t)CALL(variable1,COLOR_abstract_collection___Collection___length))(variable1) /*AbstractArray::length*/;
778 variable0 = TAG_Bool(UNTAG_Int(variable0)<UNTAG_Int(variable1));
779 goto return_label49;
780 return_label49: while(false);
781 tracehead = trace.prev;
782 return variable0;
783 }
784 void array___ArrayIterator___next(val_t self) {
785 struct trace_t trace = {NULL, "array::ArrayIterator::next (bin/../lib/standard//array.nit:319,2--31)"};
786 trace.prev = tracehead; tracehead = &trace;
787 ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/ = TAG_Int(UNTAG_Int(ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/)+UNTAG_Int( TAG_Int(1)));
788 tracehead = trace.prev;
789 return;
790 }
791 void array___ArrayIterator___init(val_t self, val_t param0, int* init_table) {
792 struct trace_t trace = {NULL, "array::ArrayIterator::init (bin/../lib/standard//array.nit:321,2--325:12)"};
793 val_t variable0;
794 val_t variable1;
795 trace.prev = tracehead; tracehead = &trace;
796 variable0 = param0;
797 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayIterator].i]) return;
798 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*a*/ == NIT_NULL /*null*/) || (( variable0 /*a*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable0 /*a*/,COLOR_kernel___Object_____eqeq))( variable0 /*a*/, NIT_NULL /*null*/) /*AbstractArray::==*/)))));
799 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert 'not_nil' failed: bin/../lib/standard//array.nit:323,3--27\n"); nit_exit(1);}
800 ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/ = variable0 /*a*/;
801 ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/ = TAG_Int(0);
802 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayIterator].i] = 1;
803 tracehead = trace.prev;
804 return;
805 }
806 val_t array___ArrayIterator___index(val_t self) {
807 struct trace_t trace = {NULL, "array::ArrayIterator::index (bin/../lib/standard//array.nit:328,2--32)"};
808 trace.prev = tracehead; tracehead = &trace;
809 tracehead = trace.prev;
810 return ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
811 }
812 val_t array___ArraySet___has(val_t self, val_t param0) {
813 struct trace_t trace = {NULL, "array::ArraySet::has (bin/../lib/standard//array.nit:340,2--41)"};
814 val_t variable0;
815 val_t variable1;
816 trace.prev = tracehead; tracehead = &trace;
817 variable0 = param0;
818 variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
819 variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1, variable0 /*e*/) /*Array::has*/;
820 goto return_label52;
821 return_label52: while(false);
822 tracehead = trace.prev;
823 return variable1;
824 }
825 void array___ArraySet___add(val_t self, val_t param0) {
826 struct trace_t trace = {NULL, "array::ArraySet::add (bin/../lib/standard//array.nit:342,2--60)"};
827 val_t variable0;
828 val_t variable1;
829 trace.prev = tracehead; tracehead = &trace;
830 variable0 = param0;
831 variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
832 variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1, variable0 /*e*/) /*Array::has*/;
833 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) { /*if*/
834 variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
835 ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1, variable0 /*e*/) /*Array::add*/;
836 }
837 tracehead = trace.prev;
838 return;
839 }
840 val_t array___ArraySet___is_empty(val_t self) {
841 struct trace_t trace = {NULL, "array::ArraySet::is_empty (bin/../lib/standard//array.nit:344,2--46)"};
842 val_t variable0;
843 trace.prev = tracehead; tracehead = &trace;
844 variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
845 variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*Array::is_empty*/;
846 goto return_label54;
847 return_label54: while(false);
848 tracehead = trace.prev;
849 return variable0;
850 }
851 val_t array___ArraySet___length(val_t self) {
852 struct trace_t trace = {NULL, "array::ArraySet::length (bin/../lib/standard//array.nit:346,2--42)"};
853 val_t variable0;
854 trace.prev = tracehead; tracehead = &trace;
855 variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
856 variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
857 goto return_label55;
858 return_label55: while(false);
859 tracehead = trace.prev;
860 return variable0;
861 }
862 val_t array___ArraySet___first(val_t self) {
863 struct trace_t trace = {NULL, "array::ArraySet::first (bin/../lib/standard//array.nit:348,2--351:21)"};
864 val_t variable0;
865 trace.prev = tracehead; tracehead = &trace;
866 variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
867 variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
868 variable0 = TAG_Bool(UNTAG_Int(variable0)>UNTAG_Int( TAG_Int(0)));
869 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert failed: bin/../lib/standard//array.nit:350,3--26\n"); nit_exit(1);}
870 variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
871 variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*Array::first*/;
872 goto return_label56;
873 return_label56: while(false);
874 tracehead = trace.prev;
875 return variable0;
876 }
877 void array___ArraySet___remove(val_t self, val_t param0) {
878 struct trace_t trace = {NULL, "array::ArraySet::remove (bin/../lib/standard//array.nit:354,2--357:28)"};
879 val_t variable0;
880 val_t variable1;
881 val_t variable2;
882 trace.prev = tracehead; tracehead = &trace;
883 variable0 = param0;
884 variable2 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
885 variable2 = ((array___AbstractArray___index_of_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___index_of))(variable2, variable0 /*item*/) /*Array::index_of*/;
886 variable1 = variable2;
887 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
888 if (UNTAG_Bool(variable2)) { /*if*/
889 ((array___ArraySet___remove_at_t)CALL( self,COLOR_array___ArraySet___remove_at))( self, variable1 /*i*/) /*ArraySet::remove_at*/;
890 }
891 tracehead = trace.prev;
892 return;
893 }
894 void array___ArraySet___remove_all(val_t self, val_t param0) {
895 struct trace_t trace = {NULL, "array::ArraySet::remove_all (bin/../lib/standard//array.nit:360,2--43)"};
896 val_t variable0;
897 trace.prev = tracehead; tracehead = &trace;
898 variable0 = param0;
899 ((array___ArraySet___remove_t)CALL( self,COLOR_abstract_collection___RemovableCollection___remove))( self, variable0 /*item*/) /*ArraySet::remove*/;
900 tracehead = trace.prev;
901 return;
902 }
903 void array___ArraySet___clear(val_t self) {
904 struct trace_t trace = {NULL, "array::ArraySet::clear (bin/../lib/standard//array.nit:362,2--33)"};
905 val_t variable0;
906 trace.prev = tracehead; tracehead = &trace;
907 variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
908 ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*Array::clear*/;
909 tracehead = trace.prev;
910 return;
911 }
912 val_t array___ArraySet___iterator(val_t self) {
913 struct trace_t trace = {NULL, "array::ArraySet::iterator (bin/../lib/standard//array.nit:364,2--70)"};
914 val_t variable0;
915 val_t variable1;
916 trace.prev = tracehead; tracehead = &trace;
917 variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
918 variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*Array::iterator*/;
919 variable1 = NEW_array___ArraySetIterator___init(variable0); /*new ArraySetIterator[E]*/
920 variable0 = variable1;
921 goto return_label60;
922 return_label60: while(false);
923 tracehead = trace.prev;
924 return variable0;
925 }
926 void array___ArraySet___enlarge(val_t self, val_t param0) {
927 struct trace_t trace = {NULL, "array::ArraySet::enlarge (bin/../lib/standard//array.nit:366,2--367:45)"};
928 val_t variable0;
929 val_t variable1;
930 trace.prev = tracehead; tracehead = &trace;
931 variable0 = param0;
932 variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
933 ((array___Array___enlarge_t)CALL(variable1,COLOR_array___AbstractArray___enlarge))(variable1, variable0 /*cap*/) /*Array::enlarge*/;
934 tracehead = trace.prev;
935 return;
936 }
937 void array___ArraySet___remove_at(val_t self, val_t param0) {
938 struct trace_t trace = {NULL, "array::ArraySet::remove_at (bin/../lib/standard//array.nit:369,2--372:12)"};
939 val_t variable0;
940 val_t variable1;
941 val_t variable2;
942 trace.prev = tracehead; tracehead = &trace;
943 variable0 = param0;
944 variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
945 variable2 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
946 variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*Array::last*/;
947 ((array___Array_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable0 /*i*/, variable2) /*Array::[]=*/;
948 variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
949 ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*Array::pop*/;
950 tracehead = trace.prev;
951 return;
952 }
953 void array___ArraySet___init(val_t self, int* init_table) {
954 struct trace_t trace = {NULL, "array::ArraySet::init (bin/../lib/standard//array.nit:375,2--376:29)"};
955 val_t variable0;
956 trace.prev = tracehead; tracehead = &trace;
957 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i]) return;
958 variable0 = NEW_array___Array___init(); /*new Array[E]*/
959 ATTR_array___ArraySet____array( self) /*ArraySet::_array*/ = variable0;
960 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i] = 1;
961 tracehead = trace.prev;
962 return;
963 }
964 void array___ArraySet___with_capacity(val_t self, val_t param0, int* init_table) {
965 struct trace_t trace = {NULL, "array::ArraySet::with_capacity (bin/../lib/standard//array.nit:378,2--379:68)"};
966 val_t variable0;
967 val_t variable1;
968 trace.prev = tracehead; tracehead = &trace;
969 variable0 = param0;
970 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i]) return;
971 variable1 = NEW_array___Array___with_capacity( variable0 /*i*/); /*new Array[E]*/
972 ATTR_array___ArraySet____array( self) /*ArraySet::_array*/ = variable1;
973 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i] = 1;
974 tracehead = trace.prev;
975 return;
976 }
977 val_t array___ArraySetIterator___is_ok(val_t self) {
978 struct trace_t trace = {NULL, "array::ArraySetIterator::is_ok (bin/../lib/standard//array.nit:386,2--39)"};
979 val_t variable0;
980 trace.prev = tracehead; tracehead = &trace;
981 variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
982 variable0 = ((array___ArrayIterator___is_ok_t)CALL(variable0,COLOR_abstract_collection___Iterator___is_ok))(variable0) /*ArrayIterator::is_ok*/;
983 goto return_label65;
984 return_label65: while(false);
985 tracehead = trace.prev;
986 return variable0;
987 }
988 void array___ArraySetIterator___next(val_t self) {
989 struct trace_t trace = {NULL, "array::ArraySetIterator::next (bin/../lib/standard//array.nit:388,2--30)"};
990 val_t variable0;
991 trace.prev = tracehead; tracehead = &trace;
992 variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
993 ((array___ArrayIterator___next_t)CALL(variable0,COLOR_abstract_collection___Iterator___next))(variable0) /*ArrayIterator::next*/;
994 tracehead = trace.prev;
995 return;
996 }
997 val_t array___ArraySetIterator___item(val_t self) {
998 struct trace_t trace = {NULL, "array::ArraySetIterator::item (bin/../lib/standard//array.nit:390,2--40)"};
999 val_t variable0;
1000 trace.prev = tracehead; tracehead = &trace;
1001 variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
1002 variable0 = ((array___ArrayIterator___item_t)CALL(variable0,COLOR_abstract_collection___Iterator___item))(variable0) /*ArrayIterator::item*/;
1003 goto return_label67;
1004 return_label67: while(false);
1005 tracehead = trace.prev;
1006 return variable0;
1007 }
1008 void array___ArraySetIterator___init(val_t self, val_t param0, int* init_table) {
1009 struct trace_t trace = {NULL, "array::ArraySetIterator::init (bin/../lib/standard//array.nit:392,2--45)"};
1010 val_t variable0;
1011 trace.prev = tracehead; tracehead = &trace;
1012 variable0 = param0;
1013 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySetIterator].i]) return;
1014 ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/ = variable0 /*iter*/;
1015 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySetIterator].i] = 1;
1016 tracehead = trace.prev;
1017 return;
1018 }
1019 val_t array___ArrayMap_____bra(val_t self, val_t param0) {
1020 struct trace_t trace = {NULL, "array::ArrayMap::[] (bin/../lib/standard//array.nit:402,2--409:14)"};
1021 val_t variable0;
1022 val_t variable1;
1023 val_t variable2;
1024 val_t variable3;
1025 val_t variable4;
1026 val_t variable5;
1027 trace.prev = tracehead; tracehead = &trace;
1028 variable0 = param0;
1029 variable2 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self, variable0 /*key*/) /*ArrayMap::index*/;
1030 variable1 = variable2;
1031 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
1032 if (UNTAG_Bool(variable2)) { /*if*/
1033 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1034 variable3 = variable1 /*i*/;
1035 variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
1036 variable5 = variable4;
1037 if (UNTAG_Bool(variable5)) { /* and */
1038 variable5 = variable2;
1039 variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
1040 variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
1041 }
1042 variable4 = variable5;
1043 if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
1044 variable4 = variable2;
1045 variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
1046 variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
1047 goto return_label70;
1048 return_label70: while(false);
1049 variable2 = variable4;
1050 variable2 = ((abstract_collection___Couple___second_t)CALL(variable2,COLOR_abstract_collection___Couple___second))(variable2) /*Couple::second*/;
1051 variable1 = variable2;
1052 goto return_label69;
1053 } else { /*if*/
1054 variable1 = NIT_NULL /*null*/;
1055 goto return_label69;
1056 }
1057 return_label69: while(false);
1058 tracehead = trace.prev;
1059 return variable1;
1060 }
1061 void array___ArrayMap_____braeq(val_t self, val_t param0, val_t param1) {
1062 struct trace_t trace = {NULL, "array::ArrayMap::[]= (bin/../lib/standard//array.nit:413,2--420:40)"};
1063 val_t variable0;
1064 val_t variable1;
1065 val_t variable2;
1066 val_t variable3;
1067 val_t variable4;
1068 val_t variable5;
1069 val_t variable6;
1070 trace.prev = tracehead; tracehead = &trace;
1071 variable0 = param0;
1072 variable1 = param1;
1073 variable3 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self, variable0 /*key*/) /*ArrayMap::index*/;
1074 variable2 = variable3;
1075 variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)>=UNTAG_Int( TAG_Int(0)));
1076 if (UNTAG_Bool(variable3)) { /*if*/
1077 variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1078 variable4 = variable2 /*i*/;
1079 variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
1080 variable6 = variable5;
1081 if (UNTAG_Bool(variable6)) { /* and */
1082 variable6 = variable3;
1083 variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
1084 variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
1085 }
1086 variable5 = variable6;
1087 if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
1088 variable5 = variable3;
1089 variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
1090 variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
1091 goto return_label72;
1092 return_label72: while(false);
1093 variable3 = variable5;
1094 ((abstract_collection___Couple___second__eq_t)CALL(variable3,COLOR_abstract_collection___Couple___second__eq))(variable3, variable1 /*item*/) /*Couple::second=*/;
1095 } else { /*if*/
1096 variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1097 variable4 = NEW_abstract_collection___Couple___init( variable0 /*key*/, variable1 /*item*/); /*new Couple[K, E]*/
1098 ((array___AbstractArray___push_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___push))(variable3, variable4) /*Array::push*/;
1099 }
1100 tracehead = trace.prev;
1101 return;
1102 }
1103 val_t array___ArrayMap___has_key(val_t self, val_t param0) {
1104 struct trace_t trace = {NULL, "array::ArrayMap::has_key (bin/../lib/standard//array.nit:424,2--425:50)"};
1105 val_t variable0;
1106 val_t variable1;
1107 trace.prev = tracehead; tracehead = &trace;
1108 variable0 = param0;
1109 variable1 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self, variable0 /*key*/) /*ArrayMap::index*/;
1110 variable1 = TAG_Bool(UNTAG_Int(variable1)>=UNTAG_Int( TAG_Int(0)));
1111 goto return_label73;
1112 return_label73: while(false);
1113 tracehead = trace.prev;
1114 return variable1;
1115 }
1116 val_t array___ArrayMap___has(val_t self, val_t param0) {
1117 struct trace_t trace = {NULL, "array::ArrayMap::has (bin/../lib/standard//array.nit:427,2--431:14)"};
1118 val_t variable0;
1119 val_t variable1;
1120 val_t variable2;
1121 val_t variable3;
1122 trace.prev = tracehead; tracehead = &trace;
1123 variable0 = param0;
1124 variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1125 variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
1126 while (true) { /*for*/
1127 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
1128 if (!UNTAG_Bool(variable2)) break; /*for*/
1129 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
1130 variable3 = ((abstract_collection___Couple___second_t)CALL( variable2 /*i*/,COLOR_abstract_collection___Couple___second))( variable2 /*i*/) /*Couple::second*/;
1131 variable3 = TAG_Bool((variable3 == variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*item*/) /*Object::==*/)))));
1132 if (UNTAG_Bool(variable3)) { /*if*/
1133 variable1 = TAG_Bool(true);
1134 goto return_label74;
1135 }
1136 continue_75: while(0);
1137 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
1138 }
1139 break_75: while(0);
1140 variable1 = TAG_Bool(false);
1141 goto return_label74;
1142 return_label74: while(false);
1143 tracehead = trace.prev;
1144 return variable1;
1145 }
1146 val_t array___ArrayMap___has_only(val_t self, val_t param0) {
1147 struct trace_t trace = {NULL, "array::ArrayMap::has_only (bin/../lib/standard//array.nit:434,2--438:13)"};
1148 val_t variable0;
1149 val_t variable1;
1150 val_t variable2;
1151 val_t variable3;
1152 trace.prev = tracehead; tracehead = &trace;
1153 variable0 = param0;
1154 variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1155 variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
1156 while (true) { /*for*/
1157 variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
1158 if (!UNTAG_Bool(variable2)) break; /*for*/
1159 variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
1160 variable3 = ((abstract_collection___Couple___second_t)CALL( variable2 /*i*/,COLOR_abstract_collection___Couple___second))( variable2 /*i*/) /*Couple::second*/;
1161 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*item*/) /*Object::==*/)))))));
1162 if (UNTAG_Bool(variable3)) { /*if*/
1163 variable1 = TAG_Bool(false);
1164 goto return_label76;
1165 }
1166 continue_77: while(0);
1167 ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
1168 }
1169 break_77: while(0);
1170 variable1 = TAG_Bool(true);
1171 goto return_label76;
1172 return_label76: while(false);
1173 tracehead = trace.prev;
1174 return variable1;
1175 }
1176 val_t array___ArrayMap___length(val_t self) {
1177 struct trace_t trace = {NULL, "array::ArrayMap::length (bin/../lib/standard//array.nit:441,2--442:42)"};
1178 val_t variable0;
1179 trace.prev = tracehead; tracehead = &trace;
1180 variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1181 variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
1182 goto return_label78;
1183 return_label78: while(false);
1184 tracehead = trace.prev;
1185 return variable0;
1186 }
1187 val_t array___ArrayMap___first(val_t self) {
1188 struct trace_t trace = {NULL, "array::ArrayMap::first (bin/../lib/standard//array.nit:444,2--46)"};
1189 val_t variable0;
1190 trace.prev = tracehead; tracehead = &trace;
1191 variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1192 variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*Array::first*/;
1193 variable0 = ((abstract_collection___Couple___first_t)CALL(variable0,COLOR_abstract_collection___Couple___first))(variable0) /*Couple::first*/;
1194 goto return_label79;
1195 return_label79: while(false);
1196 tracehead = trace.prev;
1197 return variable0;
1198 }
1199 val_t array___ArrayMap___count(val_t self, val_t param0) {
1200 struct trace_t trace = {NULL, "array::ArrayMap::count (bin/../lib/standard//array.nit:446,2--451:11)"};
1201 val_t variable0;
1202 val_t variable1;
1203 val_t variable2;
1204 val_t variable3;
1205 val_t variable4;
1206 trace.prev = tracehead; tracehead = &trace;
1207 variable0 = param0;
1208 variable1 = TAG_Int(0);
1209 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1210 variable2 = ((array___AbstractArray___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Array::iterator*/;
1211 while (true) { /*for*/
1212 variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
1213 if (!UNTAG_Bool(variable3)) break; /*for*/
1214 variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
1215 variable4 = ((abstract_collection___Couple___second_t)CALL( variable3 /*i*/,COLOR_abstract_collection___Couple___second))( variable3 /*i*/) /*Couple::second*/;
1216 variable4 = TAG_Bool((variable4 == variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4, variable0 /*item*/) /*Object::==*/)))));
1217 if (UNTAG_Bool(variable4)) { /*if*/
1218 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*nb*/;
1219 }
1220 continue_81: while(0);
1221 ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
1222 }
1223 break_81: while(0);
1224 variable1 = variable1 /*nb*/;
1225 goto return_label80;
1226 return_label80: while(false);
1227 tracehead = trace.prev;
1228 return variable1;
1229 }
1230 val_t array___ArrayMap___iterator(val_t self) {
1231 struct trace_t trace = {NULL, "array::ArrayMap::iterator (bin/../lib/standard//array.nit:454,2--99)"};
1232 val_t variable0;
1233 val_t variable1;
1234 trace.prev = tracehead; tracehead = &trace;
1235 variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1236 variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*Array::iterator*/;
1237 variable1 = NEW_abstract_collection___CoupleMapIterator___init(variable0); /*new CoupleMapIterator[K, E]*/
1238 variable0 = variable1;
1239 goto return_label82;
1240 return_label82: while(false);
1241 tracehead = trace.prev;
1242 return variable0;
1243 }
1244 val_t array___ArrayMap___is_empty(val_t self) {
1245 struct trace_t trace = {NULL, "array::ArrayMap::is_empty (bin/../lib/standard//array.nit:456,2--46)"};
1246 val_t variable0;
1247 trace.prev = tracehead; tracehead = &trace;
1248 variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1249 variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*Array::is_empty*/;
1250 goto return_label83;
1251 return_label83: while(false);
1252 tracehead = trace.prev;
1253 return variable0;
1254 }
1255 void array___ArrayMap___remove(val_t self, val_t param0) {
1256 struct trace_t trace = {NULL, "array::ArrayMap::remove (bin/../lib/standard//array.nit:458,2--466:9)"};
1257 val_t variable0;
1258 val_t variable1;
1259 val_t variable2;
1260 val_t variable3;
1261 val_t variable4;
1262 val_t variable5;
1263 trace.prev = tracehead; tracehead = &trace;
1264 variable0 = param0;
1265 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1266 variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
1267 variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
1268 variable1 = variable2;
1269 while (true) { /*while*/
1270 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
1271 if (!UNTAG_Bool(variable2)) break; /* while*/
1272 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1273 variable3 = variable1 /*i*/;
1274 variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
1275 variable5 = variable4;
1276 if (UNTAG_Bool(variable5)) { /* and */
1277 variable5 = variable2;
1278 variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
1279 variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
1280 }
1281 variable4 = variable5;
1282 if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
1283 variable4 = variable2;
1284 variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
1285 variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
1286 goto return_label86;
1287 return_label86: while(false);
1288 variable2 = variable4;
1289 variable2 = ((abstract_collection___Couple___second_t)CALL(variable2,COLOR_abstract_collection___Couple___second))(variable2) /*Couple::second*/;
1290 variable2 = TAG_Bool((variable2 == variable0 /*item*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, variable0 /*item*/) /*Object::==*/)))));
1291 if (UNTAG_Bool(variable2)) { /*if*/
1292 ((array___ArrayMap___remove_at_index_t)CALL( self,COLOR_array___ArrayMap___remove_at_index))( self, variable1 /*i*/) /*ArrayMap::remove_at_index*/;
1293 goto return_label84;
1294 }
1295 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
1296 continue_85: while(0);
1297 }
1298 break_85: while(0);
1299 return_label84: while(false);
1300 tracehead = trace.prev;
1301 return;
1302 }
1303 void array___ArrayMap___remove_all(val_t self, val_t param0) {
1304 struct trace_t trace = {NULL, "array::ArrayMap::remove_all (bin/../lib/standard//array.nit:470,2--477:9)"};
1305 val_t variable0;
1306 val_t variable1;
1307 val_t variable2;
1308 val_t variable3;
1309 val_t variable4;
1310 val_t variable5;
1311 trace.prev = tracehead; tracehead = &trace;
1312 variable0 = param0;
1313 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1314 variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
1315 variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
1316 variable1 = variable2;
1317 while (true) { /*while*/
1318 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
1319 if (!UNTAG_Bool(variable2)) break; /* while*/
1320 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1321 variable3 = variable1 /*i*/;
1322 variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
1323 variable5 = variable4;
1324 if (UNTAG_Bool(variable5)) { /* and */
1325 variable5 = variable2;
1326 variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
1327 variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
1328 }
1329 variable4 = variable5;
1330 if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
1331 variable4 = variable2;
1332 variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
1333 variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
1334 goto return_label89;
1335 return_label89: while(false);
1336 variable2 = variable4;
1337 variable2 = ((abstract_collection___Couple___second_t)CALL(variable2,COLOR_abstract_collection___Couple___second))(variable2) /*Couple::second*/;
1338 variable2 = TAG_Bool((variable2 == variable0 /*item*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, variable0 /*item*/) /*Object::==*/)))));
1339 if (UNTAG_Bool(variable2)) { /*if*/
1340 ((array___ArrayMap___remove_at_index_t)CALL( self,COLOR_array___ArrayMap___remove_at_index))( self, variable1 /*i*/) /*ArrayMap::remove_at_index*/;
1341 }
1342 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
1343 continue_88: while(0);
1344 }
1345 break_88: while(0);
1346 tracehead = trace.prev;
1347 return;
1348 }
1349 void array___ArrayMap___remove_at(val_t self, val_t param0) {
1350 struct trace_t trace = {NULL, "array::ArrayMap::remove_at (bin/../lib/standard//array.nit:481,2--484:34)"};
1351 val_t variable0;
1352 val_t variable1;
1353 val_t variable2;
1354 trace.prev = tracehead; tracehead = &trace;
1355 variable0 = param0;
1356 variable2 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self, variable0 /*key*/) /*ArrayMap::index*/;
1357 variable1 = variable2;
1358 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
1359 if (UNTAG_Bool(variable2)) { /*if*/
1360 ((array___ArrayMap___remove_at_index_t)CALL( self,COLOR_array___ArrayMap___remove_at_index))( self, variable1 /*i*/) /*ArrayMap::remove_at_index*/;
1361 }
1362 tracehead = trace.prev;
1363 return;
1364 }
1365 void array___ArrayMap___clear(val_t self) {
1366 struct trace_t trace = {NULL, "array::ArrayMap::clear (bin/../lib/standard//array.nit:487,2--33)"};
1367 val_t variable0;
1368 trace.prev = tracehead; tracehead = &trace;
1369 variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1370 ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*Array::clear*/;
1371 tracehead = trace.prev;
1372 return;
1373 }
1374 void array___ArrayMap___enlarge(val_t self, val_t param0) {
1375 struct trace_t trace = {NULL, "array::ArrayMap::enlarge (bin/../lib/standard//array.nit:489,2--490:45)"};
1376 val_t variable0;
1377 val_t variable1;
1378 trace.prev = tracehead; tracehead = &trace;
1379 variable0 = param0;
1380 variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1381 ((array___Array___enlarge_t)CALL(variable1,COLOR_array___AbstractArray___enlarge))(variable1, variable0 /*cap*/) /*Array::enlarge*/;
1382 tracehead = trace.prev;
1383 return;
1384 }
1385 val_t array___ArrayMap___couple_at(val_t self, val_t param0) {
1386 struct trace_t trace = {NULL, "array::ArrayMap::couple_at (bin/../lib/standard//array.nit:492,2--498:14)"};
1387 val_t variable0;
1388 val_t variable1;
1389 val_t variable2;
1390 val_t variable3;
1391 val_t variable4;
1392 val_t variable5;
1393 trace.prev = tracehead; tracehead = &trace;
1394 variable0 = param0;
1395 variable2 = ((array___ArrayMap___index_t)CALL( self,COLOR_array___ArrayMap___index))( self, variable0 /*key*/) /*ArrayMap::index*/;
1396 variable1 = variable2;
1397 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
1398 if (UNTAG_Bool(variable2)) { /*if*/
1399 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1400 variable3 = variable1 /*i*/;
1401 variable4 = TAG_Bool(UNTAG_Int( variable3 /*index*/)>=UNTAG_Int( TAG_Int(0)));
1402 variable5 = variable4;
1403 if (UNTAG_Bool(variable5)) { /* and */
1404 variable5 = variable2;
1405 variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
1406 variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
1407 }
1408 variable4 = variable5;
1409 if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
1410 variable4 = variable2;
1411 variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
1412 variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
1413 goto return_label94;
1414 return_label94: while(false);
1415 variable2 = variable4;
1416 variable1 = variable2;
1417 goto return_label93;
1418 } else { /*if*/
1419 variable1 = NIT_NULL /*null*/;
1420 goto return_label93;
1421 }
1422 return_label93: while(false);
1423 tracehead = trace.prev;
1424 return variable1;
1425 }
1426 void array___ArrayMap___remove_at_index(val_t self, val_t param0) {
1427 struct trace_t trace = {NULL, "array::ArrayMap::remove_at_index (bin/../lib/standard//array.nit:505,2--509:12)"};
1428 val_t variable0;
1429 val_t variable1;
1430 val_t variable2;
1431 trace.prev = tracehead; tracehead = &trace;
1432 variable0 = param0;
1433 variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1434 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1435 variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*Array::last*/;
1436 ((array___Array_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable0 /*i*/, variable2) /*Array::[]=*/;
1437 variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1438 ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*Array::pop*/;
1439 tracehead = trace.prev;
1440 return;
1441 }
1442 val_t array___ArrayMap___index(val_t self, val_t param0) {
1443 struct trace_t trace = {NULL, "array::ArrayMap::index (bin/../lib/standard//array.nit:515,2--530:11)"};
1444 val_t variable0;
1445 val_t variable1;
1446 val_t variable2;
1447 val_t variable3;
1448 val_t variable4;
1449 val_t variable5;
1450 val_t variable6;
1451 trace.prev = tracehead; tracehead = &trace;
1452 variable0 = param0;
1453 variable2 = ATTR_array___ArrayMap____last_index( self) /*ArrayMap::_last_index*/;
1454 variable1 = variable2;
1455 variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1456 variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
1457 variable2 = TAG_Bool(UNTAG_Int( variable1 /*l*/)<UNTAG_Int(variable2));
1458 variable3 = variable2;
1459 if (UNTAG_Bool(variable3)) { /* and */
1460 variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1461 variable4 = variable1 /*l*/;
1462 variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
1463 variable6 = variable5;
1464 if (UNTAG_Bool(variable6)) { /* and */
1465 variable6 = variable3;
1466 variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
1467 variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
1468 }
1469 variable5 = variable6;
1470 if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
1471 variable5 = variable3;
1472 variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
1473 variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
1474 goto return_label97;
1475 return_label97: while(false);
1476 variable3 = variable5;
1477 variable3 = ((abstract_collection___Couple___first_t)CALL(variable3,COLOR_abstract_collection___Couple___first))(variable3) /*Couple::first*/;
1478 variable3 = TAG_Bool((variable3 == variable0 /*key*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*key*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*key*/) /*Object::==*/)))));
1479 }
1480 variable2 = variable3;
1481 if (UNTAG_Bool(variable2)) { /*if*/
1482 variable1 = variable1 /*l*/;
1483 goto return_label96;
1484 }
1485 variable2 = TAG_Int(0);
1486 while (true) { /*while*/
1487 variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1488 variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*Array::length*/;
1489 variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int(variable3));
1490 if (!UNTAG_Bool(variable3)) break; /* while*/
1491 variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
1492 variable4 = variable2 /*i*/;
1493 variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
1494 variable6 = variable5;
1495 if (UNTAG_Bool(variable6)) { /* and */
1496 variable6 = variable3;
1497 variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
1498 variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
1499 }
1500 variable5 = variable6;
1501 if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert 'index' failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
1502 variable5 = variable3;
1503 variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
1504 variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
1505 goto return_label99;
1506 return_label99: while(false);
1507 variable3 = variable5;
1508 variable3 = ((abstract_collection___Couple___first_t)CALL(variable3,COLOR_abstract_collection___Couple___first))(variable3) /*Couple::first*/;
1509 variable3 = TAG_Bool((variable3 == variable0 /*key*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*key*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable0 /*key*/) /*Object::==*/)))));
1510 if (UNTAG_Bool(variable3)) { /*if*/
1511 ATTR_array___ArrayMap____last_index( self) /*ArrayMap::_last_index*/ = variable2 /*i*/;
1512 variable1 = variable2 /*i*/;
1513 goto return_label96;
1514 }
1515 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
1516 continue_98: while(0);
1517 }
1518 break_98: while(0);
1519 variable3 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
1520 variable1 = variable3;
1521 goto return_label96;
1522 return_label96: while(false);
1523 tracehead = trace.prev;
1524 return variable1;
1525 }
1526 void array___ArrayMap___init(val_t self, int* init_table) {
1527 struct trace_t trace = {NULL, "array::ArrayMap::init (bin/../lib/standard//array.nit:533,2--536:31)"};
1528 val_t variable0;
1529 trace.prev = tracehead; tracehead = &trace;
1530 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayMap].i]) return;
1531 variable0 = NEW_array___Array___init(); /*new Array[Couple[K, E]]*/
1532 ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/ = variable0;
1533 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayMap].i] = 1;
1534 tracehead = trace.prev;
1535 return;
1536 }
1537 val_t array___Iterator___to_a(val_t self) {
1538 struct trace_t trace = {NULL, "array::Iterator::to_a (bin/../lib/standard//array.nit:543,2--551:12)"};
1539 val_t variable0;
1540 val_t variable1;
1541 trace.prev = tracehead; tracehead = &trace;
1542 variable1 = NEW_array___Array___init(); /*new Array[E]*/
1543 variable0 = variable1;
1544 while (true) { /*while*/
1545 variable1 = ((abstract_collection___Iterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*Iterator::is_ok*/;
1546 if (!UNTAG_Bool(variable1)) break; /* while*/
1547 variable1 = ((abstract_collection___Iterator___item_t)CALL( self,COLOR_abstract_collection___Iterator___item))( self) /*Iterator::item*/;
1548 ((array___AbstractArray___add_t)CALL( variable0 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*res*/, variable1) /*Array::add*/;
1549 ((abstract_collection___Iterator___next_t)CALL( self,COLOR_abstract_collection___Iterator___next))( self) /*Iterator::next*/;
1550 continue_102: while(0);
1551 }
1552 break_102: while(0);
1553 variable0 = variable0 /*res*/;
1554 goto return_label101;
1555 return_label101: while(false);
1556 tracehead = trace.prev;
1557 return variable0;
1558 }
1559 val_t array___Collection___to_a(val_t self) {
1560 struct trace_t trace = {NULL, "array::Collection::to_a (bin/../lib/standard//array.nit:556,2--559:22)"};
1561 val_t variable0;
1562 trace.prev = tracehead; tracehead = &trace;
1563 variable0 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*Collection::iterator*/;
1564 variable0 = ((array___Iterator___to_a_t)CALL(variable0,COLOR_array___Iterator___to_a))(variable0) /*Iterator::to_a*/;
1565 goto return_label103;
1566 return_label103: while(false);
1567 tracehead = trace.prev;
1568 return variable0;
1569 }
1570 val_t array___ArrayCapable___calloc_array(val_t self, val_t param0) {
1571 struct trace_t trace = {NULL, "array::ArrayCapable::calloc_array (bin/../lib/standard//array.nit:567,2--568:54)"};
1572 trace.prev = tracehead; tracehead = &trace;
1573 tracehead = trace.prev;
1574 return BOX_NativeArray((val_t*)malloc((UNTAG_Int( param0) * sizeof(val_t))));
1575 }
1576 val_t array___NativeArray_____bra(val_t self, val_t param0) {
1577 struct trace_t trace = {NULL, "array::NativeArray::[] (bin/../lib/standard//array.nit:573,2--23)"};
1578 trace.prev = tracehead; tracehead = &trace;
1579 tracehead = trace.prev;
1580 return UNBOX_NativeArray( self)[UNTAG_Int( param0)];
1581 }
1582 void array___NativeArray_____braeq(val_t self, val_t param0, val_t param1) {
1583 struct trace_t trace = {NULL, "array::NativeArray::[]= (bin/../lib/standard//array.nit:574,2--29)"};
1584 trace.prev = tracehead; tracehead = &trace;
1585 UNBOX_NativeArray( self)[UNTAG_Int( param0)]= param1;
1586 tracehead = trace.prev;
1587 return;
1588 }
1589 void array___NativeArray___copy_to(val_t self, val_t param0, val_t param1) {
1590 struct trace_t trace = {NULL, "array::NativeArray::copy_to (bin/../lib/standard//array.nit:575,2--47)"};
1591 trace.prev = tracehead; tracehead = &trace;
1592 (void)memcpy(UNBOX_NativeArray( param0), UNBOX_NativeArray( self), UNTAG_Int( param1)*sizeof(val_t));
1593 tracehead = trace.prev;
1594 return;
1595 }