update NOTICE
[nit.git] / c_src / hash_collection.sep.1.c
1 #include "hash_collection.sep.0.h"
2 /* method hash_collection#HashCollection#index_at for (self: HashCollection[Object, HashNode[Object]], Object): Int */
3 long hash_collection__HashCollection__index_at(val* self, val* p0) {
4 long var /* : Int */;
5 short int var1 /* : Bool */;
6 int cltype;
7 int idtype;
8 const struct type* type_struct;
9 const char* var_class_name;
10 val* var_k /* var k: Object */;
11 long var2 /* : Int */;
12 long var3 /* : Int */;
13 long var4 /* : Int */;
14 long var6 /* : Int */;
15 long var_i /* var i: Int */;
16 long var7 /* : Int */;
17 short int var8 /* : Bool */;
18 short int var10 /* : Bool */;
19 int cltype11;
20 int idtype12;
21 const char* var_class_name13;
22 short int var14 /* : Bool */;
23 long var15 /* : Int */;
24 long var17 /* : Int */;
25 /* Covariant cast for argument 0 (k) <p0:Object> isa K */
26 /* <p0:Object> isa K */
27 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashCollection_FT0];
28 cltype = type_struct->color;
29 idtype = type_struct->id;
30 if(cltype >= p0->type->table_size) {
31 var1 = 0;
32 } else {
33 var1 = p0->type->type_table[cltype] == idtype;
34 }
35 if (unlikely(!var1)) {
36 var_class_name = p0 == NULL ? "null" : p0->type->name;
37 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
38 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 35);
39 show_backtrace(1);
40 }
41 var_k = p0;
42 {
43 var2 = ((long (*)(val*))(var_k->class->vft[COLOR_kernel__Object__hash]))(var_k) /* hash on <var_k:Object>*/;
44 }
45 var3 = self->attrs[COLOR_hash_collection__HashCollection___capacity].l; /* _capacity on <self:HashCollection[Object, HashNode[Object]]> */
46 {
47 { /* Inline kernel#Int#% (var2,var3) on <var2:Int> */
48 var6 = var2 % var3;
49 var4 = var6;
50 goto RET_LABEL5;
51 RET_LABEL5:(void)0;
52 }
53 }
54 var_i = var4;
55 var7 = 0;
56 {
57 { /* Inline kernel#Int#< (var_i,var7) on <var_i:Int> */
58 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
59 /* <var7:Int> isa OTHER */
60 var10 = 1; /* easy <var7:Int> isa OTHER*/
61 if (unlikely(!var10)) {
62 var_class_name13 = type_kernel__Int.name;
63 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
64 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
65 show_backtrace(1);
66 }
67 var14 = var_i < var7;
68 var8 = var14;
69 goto RET_LABEL9;
70 RET_LABEL9:(void)0;
71 }
72 }
73 if (var8){
74 {
75 { /* Inline kernel#Int#unary - (var_i) on <var_i:Int> */
76 var17 = -var_i;
77 var15 = var17;
78 goto RET_LABEL16;
79 RET_LABEL16:(void)0;
80 }
81 }
82 var_i = var15;
83 } else {
84 }
85 var = var_i;
86 goto RET_LABEL;
87 RET_LABEL:;
88 return var;
89 }
90 /* method hash_collection#HashCollection#index_at for (self: Object, Object): Int */
91 long VIRTUAL_hash_collection__HashCollection__index_at(val* self, val* p0) {
92 long var /* : Int */;
93 long var1 /* : Int */;
94 var1 = hash_collection__HashCollection__index_at(self, p0);
95 var = var1;
96 RET_LABEL:;
97 return var;
98 }
99 /* method hash_collection#HashCollection#node_at for (self: HashCollection[Object, HashNode[Object]], Object): nullable HashNode[Object] */
100 val* hash_collection__HashCollection__node_at(val* self, val* p0) {
101 val* var /* : nullable HashNode[Object] */;
102 short int var1 /* : Bool */;
103 int cltype;
104 int idtype;
105 const struct type* type_struct;
106 const char* var_class_name;
107 val* var_k /* var k: Object */;
108 val* var2 /* : nullable Object */;
109 short int var3 /* : Bool */;
110 short int var5 /* : Bool */;
111 val* var6 /* : nullable HashNode[Object] */;
112 long var7 /* : Int */;
113 val* var8 /* : nullable HashNode[Object] */;
114 val* var_res /* var res: nullable HashNode[Object] */;
115 /* Covariant cast for argument 0 (k) <p0:Object> isa K */
116 /* <p0:Object> isa K */
117 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashCollection_FT0];
118 cltype = type_struct->color;
119 idtype = type_struct->id;
120 if(cltype >= p0->type->table_size) {
121 var1 = 0;
122 } else {
123 var1 = p0->type->type_table[cltype] == idtype;
124 }
125 if (unlikely(!var1)) {
126 var_class_name = p0 == NULL ? "null" : p0->type->name;
127 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
128 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 43);
129 show_backtrace(1);
130 }
131 var_k = p0;
132 var2 = self->attrs[COLOR_hash_collection__HashCollection___last_accessed_key].val; /* _last_accessed_key on <self:HashCollection[Object, HashNode[Object]]> */
133 {
134 { /* Inline kernel#Object#is_same_instance (var_k,var2) on <var_k:Object> */
135 var5 = var_k == var2 || (var2 != NULL && var_k->class == var2->class && ((var_k->class->box_kind == 1 && ((struct instance_kernel__Int*)var_k)->value == ((struct instance_kernel__Int*)var2)->value) || (var_k->class->box_kind == 2 && ((struct instance_kernel__Bool*)var_k)->value == ((struct instance_kernel__Bool*)var2)->value) || (var_k->class->box_kind == 3 && ((struct instance_kernel__Char*)var_k)->value == ((struct instance_kernel__Char*)var2)->value) || (var_k->class->box_kind == 4 && ((struct instance_kernel__Float*)var_k)->value == ((struct instance_kernel__Float*)var2)->value) || (var_k->class->box_kind == 5 && ((struct instance_string__NativeString*)var_k)->value == ((struct instance_string__NativeString*)var2)->value) || (var_k->class->box_kind == 6 && ((struct instance_kernel__Pointer*)var_k)->value == ((struct instance_kernel__Pointer*)var2)->value)));
136 var3 = var5;
137 goto RET_LABEL4;
138 RET_LABEL4:(void)0;
139 }
140 }
141 if (var3){
142 var6 = self->attrs[COLOR_hash_collection__HashCollection___last_accessed_node].val; /* _last_accessed_node on <self:HashCollection[Object, HashNode[Object]]> */
143 var = var6;
144 goto RET_LABEL;
145 } else {
146 }
147 {
148 var7 = hash_collection__HashCollection__index_at(self, var_k);
149 }
150 {
151 var8 = hash_collection__HashCollection__node_at_idx(self, var7, var_k);
152 }
153 var_res = var8;
154 self->attrs[COLOR_hash_collection__HashCollection___last_accessed_key].val = var_k; /* _last_accessed_key on <self:HashCollection[Object, HashNode[Object]]> */
155 self->attrs[COLOR_hash_collection__HashCollection___last_accessed_node].val = var_res; /* _last_accessed_node on <self:HashCollection[Object, HashNode[Object]]> */
156 var = var_res;
157 goto RET_LABEL;
158 RET_LABEL:;
159 return var;
160 }
161 /* method hash_collection#HashCollection#node_at for (self: Object, Object): nullable HashNode[Object] */
162 val* VIRTUAL_hash_collection__HashCollection__node_at(val* self, val* p0) {
163 val* var /* : nullable HashNode[Object] */;
164 val* var1 /* : nullable HashNode[Object] */;
165 var1 = hash_collection__HashCollection__node_at(self, p0);
166 var = var1;
167 RET_LABEL:;
168 return var;
169 }
170 /* method hash_collection#HashCollection#node_at_idx for (self: HashCollection[Object, HashNode[Object]], Int, Object): nullable HashNode[Object] */
171 val* hash_collection__HashCollection__node_at_idx(val* self, long p0, val* p1) {
172 val* var /* : nullable HashNode[Object] */;
173 short int var1 /* : Bool */;
174 int cltype;
175 int idtype;
176 const struct type* type_struct;
177 const char* var_class_name;
178 long var_i /* var i: Int */;
179 val* var_k /* var k: Object */;
180 val* var2 /* : nullable NativeArray[nullable HashNode[Object]] */;
181 val* var3 /* : nullable Object */;
182 val* var5 /* : nullable HashNode[Object] */;
183 val* var_c /* var c: nullable HashNode[Object] */;
184 val* var6 /* : null */;
185 short int var7 /* : Bool */;
186 short int var8 /* : Bool */;
187 val* var_other /* var other: nullable Object */;
188 short int var10 /* : Bool */;
189 short int var11 /* : Bool */;
190 short int var12 /* : Bool */;
191 val* var13 /* : Object */;
192 val* var_ck /* var ck: Object */;
193 short int var14 /* : Bool */;
194 short int var15 /* : Bool */;
195 short int var17 /* : Bool */;
196 short int var_ /* var : Bool */;
197 short int var18 /* : Bool */;
198 short int var19 /* : Bool */;
199 val* var20 /* : nullable HashNode[Object] */;
200 short int var21 /* : Bool */;
201 int cltype22;
202 int idtype23;
203 const struct type* type_struct24;
204 const char* var_class_name25;
205 /* Covariant cast for argument 1 (k) <p1:Object> isa K */
206 /* <p1:Object> isa K */
207 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashCollection_FT0];
208 cltype = type_struct->color;
209 idtype = type_struct->id;
210 if(cltype >= p1->type->table_size) {
211 var1 = 0;
212 } else {
213 var1 = p1->type->type_table[cltype] == idtype;
214 }
215 if (unlikely(!var1)) {
216 var_class_name = p1 == NULL ? "null" : p1->type->name;
217 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
218 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 55);
219 show_backtrace(1);
220 }
221 var_i = p0;
222 var_k = p1;
223 var2 = self->attrs[COLOR_hash_collection__HashCollection___array].val; /* _array on <self:HashCollection[Object, HashNode[Object]]> */
224 if (var2 == NULL) {
225 PRINT_ERROR("Runtime error: %s", "Receiver is null");
226 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 58);
227 show_backtrace(1);
228 } else {
229 { /* Inline array#NativeArray#[] (var2,var_i) on <var2:nullable NativeArray[nullable HashNode[Object]]> */
230 var5 = ((struct instance_array__NativeArray*)var2)->values[var_i];
231 var3 = var5;
232 goto RET_LABEL4;
233 RET_LABEL4:(void)0;
234 }
235 }
236 var_c = var3;
237 for(;;) {
238 var6 = NULL;
239 if (var_c == NULL) {
240 var7 = 0; /* is null */
241 } else {
242 var7 = 1; /* arg is null and recv is not */
243 }
244 if (0) {
245 { /* Inline kernel#Object#!= (var_c,var6) on <var_c:nullable HashNode[Object]> */
246 var_other = var6;
247 {
248 var11 = ((short int (*)(val*, val*))(var_c->class->vft[COLOR_kernel__Object___61d_61d]))(var_c, var_other) /* == on <var_c:nullable HashNode[Object](HashNode[Object])>*/;
249 var10 = var11;
250 }
251 var12 = !var10;
252 var8 = var12;
253 goto RET_LABEL9;
254 RET_LABEL9:(void)0;
255 }
256 var7 = var8;
257 }
258 if (var7){
259 var13 = var_c->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var_c:nullable HashNode[Object](HashNode[Object])> */
260 if (unlikely(var13 == NULL)) {
261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
262 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 60);
263 show_backtrace(1);
264 }
265 var_ck = var13;
266 {
267 { /* Inline kernel#Object#is_same_instance (var_ck,var_k) on <var_ck:Object> */
268 var17 = var_ck == var_k || (var_ck->class == var_k->class && ((var_ck->class->box_kind == 1 && ((struct instance_kernel__Int*)var_ck)->value == ((struct instance_kernel__Int*)var_k)->value) || (var_ck->class->box_kind == 2 && ((struct instance_kernel__Bool*)var_ck)->value == ((struct instance_kernel__Bool*)var_k)->value) || (var_ck->class->box_kind == 3 && ((struct instance_kernel__Char*)var_ck)->value == ((struct instance_kernel__Char*)var_k)->value) || (var_ck->class->box_kind == 4 && ((struct instance_kernel__Float*)var_ck)->value == ((struct instance_kernel__Float*)var_k)->value) || (var_ck->class->box_kind == 5 && ((struct instance_string__NativeString*)var_ck)->value == ((struct instance_string__NativeString*)var_k)->value) || (var_ck->class->box_kind == 6 && ((struct instance_kernel__Pointer*)var_ck)->value == ((struct instance_kernel__Pointer*)var_k)->value)));
269 var15 = var17;
270 goto RET_LABEL16;
271 RET_LABEL16:(void)0;
272 }
273 }
274 var_ = var15;
275 if (var15){
276 var14 = var_;
277 } else {
278 {
279 var19 = ((short int (*)(val*, val*))(var_ck->class->vft[COLOR_kernel__Object___61d_61d]))(var_ck, var_k) /* == on <var_ck:Object>*/;
280 var18 = var19;
281 }
282 var14 = var18;
283 }
284 if (var14){
285 goto BREAK_label;
286 } else {
287 }
288 var20 = var_c->attrs[COLOR_hash_collection__HashNode___next_in_bucklet].val; /* _next_in_bucklet on <var_c:nullable HashNode[Object](HashNode[Object])> */
289 /* <var20:nullable HashNode[Object]> isa nullable N */
290 type_struct24 = self->type->resolution_table->types[COLOR_nullable_hash_collection__HashCollection_FT1];
291 cltype22 = type_struct24->color;
292 idtype23 = type_struct24->id;
293 if(var20 == NULL) {
294 var21 = 1;
295 } else {
296 if(cltype22 >= var20->type->table_size) {
297 var21 = 0;
298 } else {
299 var21 = var20->type->type_table[cltype22] == idtype23;
300 }
301 }
302 if (unlikely(!var21)) {
303 var_class_name25 = var20 == NULL ? "null" : var20->type->name;
304 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable N", var_class_name25);
305 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 64);
306 show_backtrace(1);
307 }
308 var_c = var20;
309 } else {
310 goto BREAK_label;
311 }
312 }
313 BREAK_label: (void)0;
314 var = var_c;
315 goto RET_LABEL;
316 RET_LABEL:;
317 return var;
318 }
319 /* method hash_collection#HashCollection#node_at_idx for (self: Object, Int, Object): nullable HashNode[Object] */
320 val* VIRTUAL_hash_collection__HashCollection__node_at_idx(val* self, long p0, val* p1) {
321 val* var /* : nullable HashNode[Object] */;
322 val* var1 /* : nullable HashNode[Object] */;
323 var1 = hash_collection__HashCollection__node_at_idx(self, p0, p1);
324 var = var1;
325 RET_LABEL:;
326 return var;
327 }
328 /* method hash_collection#HashCollection#store for (self: HashCollection[Object, HashNode[Object]], Int, HashNode[Object]) */
329 void hash_collection__HashCollection__store(val* self, long p0, val* p1) {
330 short int var /* : Bool */;
331 int cltype;
332 int idtype;
333 const struct type* type_struct;
334 const char* var_class_name;
335 long var_index /* var index: Int */;
336 val* var_node /* var node: HashNode[Object] */;
337 val* var1 /* : nullable HashNode[Object] */;
338 val* var2 /* : null */;
339 short int var3 /* : Bool */;
340 short int var4 /* : Bool */;
341 val* var_other /* var other: nullable Object */;
342 short int var6 /* : Bool */;
343 short int var8 /* : Bool */;
344 val* var9 /* : nullable HashNode[Object] */;
345 val* var10 /* : nullable HashNode[Object] */;
346 val* var11 /* : null */;
347 val* var12 /* : nullable NativeArray[nullable HashNode[Object]] */;
348 val* var13 /* : nullable Object */;
349 val* var15 /* : nullable HashNode[Object] */;
350 val* var_next /* var next: nullable HashNode[Object] */;
351 val* var16 /* : nullable NativeArray[nullable HashNode[Object]] */;
352 short int var18 /* : Bool */;
353 int cltype19;
354 int idtype20;
355 const struct type* type_struct21;
356 const char* var_class_name22;
357 val* var23 /* : null */;
358 short int var24 /* : Bool */;
359 short int var25 /* : Bool */;
360 val* var_other27 /* var other: nullable Object */;
361 short int var28 /* : Bool */;
362 short int var29 /* : Bool */;
363 short int var30 /* : Bool */;
364 val* var31 /* : Object */;
365 short int var32 /* : Bool */;
366 int cltype33;
367 int idtype34;
368 const struct type* type_struct35;
369 const char* var_class_name36;
370 long var37 /* : Int */;
371 long var_l /* var l: Int */;
372 long var38 /* : Int */;
373 long var39 /* : Int */;
374 short int var41 /* : Bool */;
375 int cltype42;
376 int idtype43;
377 const char* var_class_name44;
378 long var45 /* : Int */;
379 long var46 /* : Int */;
380 long var47 /* : Int */;
381 short int var49 /* : Bool */;
382 int cltype50;
383 int idtype51;
384 const char* var_class_name52;
385 long var53 /* : Int */;
386 long var54 /* : Int */;
387 long var55 /* : Int */;
388 short int var57 /* : Bool */;
389 int cltype58;
390 int idtype59;
391 const char* var_class_name60;
392 long var61 /* : Int */;
393 long var62 /* : Int */;
394 long var63 /* : Int */;
395 short int var65 /* : Bool */;
396 int cltype66;
397 int idtype67;
398 const char* var_class_name68;
399 long var69 /* : Int */;
400 long var70 /* : Int */;
401 short int var71 /* : Bool */;
402 short int var73 /* : Bool */;
403 int cltype74;
404 int idtype75;
405 const char* var_class_name76;
406 short int var77 /* : Bool */;
407 long var78 /* : Int */;
408 long var79 /* : Int */;
409 short int var81 /* : Bool */;
410 int cltype82;
411 int idtype83;
412 const char* var_class_name84;
413 long var85 /* : Int */;
414 long var86 /* : Int */;
415 long var87 /* : Int */;
416 short int var89 /* : Bool */;
417 int cltype90;
418 int idtype91;
419 const char* var_class_name92;
420 long var93 /* : Int */;
421 long var94 /* : Int */;
422 long var95 /* : Int */;
423 short int var97 /* : Bool */;
424 int cltype98;
425 int idtype99;
426 const char* var_class_name100;
427 long var101 /* : Int */;
428 /* Covariant cast for argument 1 (node) <p1:HashNode[Object]> isa N */
429 /* <p1:HashNode[Object]> isa N */
430 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashCollection_FT1];
431 cltype = type_struct->color;
432 idtype = type_struct->id;
433 if(cltype >= p1->type->table_size) {
434 var = 0;
435 } else {
436 var = p1->type->type_table[cltype] == idtype;
437 }
438 if (unlikely(!var)) {
439 var_class_name = p1 == NULL ? "null" : p1->type->name;
440 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "N", var_class_name);
441 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 69);
442 show_backtrace(1);
443 }
444 var_index = p0;
445 var_node = p1;
446 var1 = self->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <self:HashCollection[Object, HashNode[Object]]> */
447 var2 = NULL;
448 if (var1 == NULL) {
449 var3 = 1; /* is null */
450 } else {
451 var3 = 0; /* arg is null but recv is not */
452 }
453 if (0) {
454 { /* Inline kernel#Object#== (var1,var2) on <var1:nullable HashNode[Object]> */
455 var_other = var2;
456 {
457 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable HashNode[Object](HashNode[Object])> */
458 var8 = var1 == var_other;
459 var6 = var8;
460 goto RET_LABEL7;
461 RET_LABEL7:(void)0;
462 }
463 }
464 var4 = var6;
465 goto RET_LABEL5;
466 RET_LABEL5:(void)0;
467 }
468 var3 = var4;
469 }
470 if (var3){
471 self->attrs[COLOR_hash_collection__HashCollection___first_item].val = var_node; /* _first_item on <self:HashCollection[Object, HashNode[Object]]> */
472 } else {
473 var9 = self->attrs[COLOR_hash_collection__HashCollection___last_item].val; /* _last_item on <self:HashCollection[Object, HashNode[Object]]> */
474 if (unlikely(var9 == NULL)) {
475 PRINT_ERROR("Runtime error: %s", "Receiver is null");
476 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 76);
477 show_backtrace(1);
478 }
479 var9->attrs[COLOR_hash_collection__HashNode___next_item].val = var_node; /* _next_item on <var9:nullable HashNode[Object]> */
480 }
481 var10 = self->attrs[COLOR_hash_collection__HashCollection___last_item].val; /* _last_item on <self:HashCollection[Object, HashNode[Object]]> */
482 var_node->attrs[COLOR_hash_collection__HashNode___prev_item].val = var10; /* _prev_item on <var_node:HashNode[Object]> */
483 var11 = NULL;
484 var_node->attrs[COLOR_hash_collection__HashNode___next_item].val = var11; /* _next_item on <var_node:HashNode[Object]> */
485 self->attrs[COLOR_hash_collection__HashCollection___last_item].val = var_node; /* _last_item on <self:HashCollection[Object, HashNode[Object]]> */
486 var12 = self->attrs[COLOR_hash_collection__HashCollection___array].val; /* _array on <self:HashCollection[Object, HashNode[Object]]> */
487 if (var12 == NULL) {
488 PRINT_ERROR("Runtime error: %s", "Receiver is null");
489 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 83);
490 show_backtrace(1);
491 } else {
492 { /* Inline array#NativeArray#[] (var12,var_index) on <var12:nullable NativeArray[nullable HashNode[Object]]> */
493 var15 = ((struct instance_array__NativeArray*)var12)->values[var_index];
494 var13 = var15;
495 goto RET_LABEL14;
496 RET_LABEL14:(void)0;
497 }
498 }
499 var_next = var13;
500 var16 = self->attrs[COLOR_hash_collection__HashCollection___array].val; /* _array on <self:HashCollection[Object, HashNode[Object]]> */
501 if (var16 == NULL) {
502 PRINT_ERROR("Runtime error: %s", "Receiver is null");
503 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 84);
504 show_backtrace(1);
505 } else {
506 { /* Inline array#NativeArray#[]= (var16,var_index,var_node) on <var16:nullable NativeArray[nullable HashNode[Object]]> */
507 /* Covariant cast for argument 1 (item) <var_node:HashNode[Object]> isa E */
508 /* <var_node:HashNode[Object]> isa E */
509 type_struct21 = var16->type->resolution_table->types[COLOR_array__NativeArray_FT0];
510 cltype19 = type_struct21->color;
511 idtype20 = type_struct21->id;
512 if(cltype19 >= var_node->type->table_size) {
513 var18 = 0;
514 } else {
515 var18 = var_node->type->type_table[cltype19] == idtype20;
516 }
517 if (unlikely(!var18)) {
518 var_class_name22 = var_node == NULL ? "null" : var_node->type->name;
519 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name22);
520 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/array.nit", 778);
521 show_backtrace(1);
522 }
523 ((struct instance_array__NativeArray*)var16)->values[var_index]=var_node;
524 RET_LABEL17:(void)0;
525 }
526 }
527 var_node->attrs[COLOR_hash_collection__HashNode___next_in_bucklet].val = var_next; /* _next_in_bucklet on <var_node:HashNode[Object]> */
528 var23 = NULL;
529 if (var_next == NULL) {
530 var24 = 0; /* is null */
531 } else {
532 var24 = 1; /* arg is null and recv is not */
533 }
534 if (0) {
535 { /* Inline kernel#Object#!= (var_next,var23) on <var_next:nullable HashNode[Object]> */
536 var_other27 = var23;
537 {
538 var29 = ((short int (*)(val*, val*))(var_next->class->vft[COLOR_kernel__Object___61d_61d]))(var_next, var_other27) /* == on <var_next:nullable HashNode[Object](HashNode[Object])>*/;
539 var28 = var29;
540 }
541 var30 = !var28;
542 var25 = var30;
543 goto RET_LABEL26;
544 RET_LABEL26:(void)0;
545 }
546 var24 = var25;
547 }
548 if (var24){
549 var_next->attrs[COLOR_hash_collection__HashNode___prev_in_bucklet].val = var_node; /* _prev_in_bucklet on <var_next:nullable HashNode[Object](HashNode[Object])> */
550 } else {
551 }
552 var31 = var_node->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var_node:HashNode[Object]> */
553 if (unlikely(var31 == NULL)) {
554 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
555 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 88);
556 show_backtrace(1);
557 }
558 /* <var31:Object> isa nullable K */
559 type_struct35 = self->type->resolution_table->types[COLOR_nullable_hash_collection__HashCollection_FT0];
560 cltype33 = type_struct35->color;
561 idtype34 = type_struct35->id;
562 if(cltype33 >= var31->type->table_size) {
563 var32 = 0;
564 } else {
565 var32 = var31->type->type_table[cltype33] == idtype34;
566 }
567 if (unlikely(!var32)) {
568 var_class_name36 = var31 == NULL ? "null" : var31->type->name;
569 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable K", var_class_name36);
570 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 88);
571 show_backtrace(1);
572 }
573 self->attrs[COLOR_hash_collection__HashCollection___last_accessed_key].val = var31; /* _last_accessed_key on <self:HashCollection[Object, HashNode[Object]]> */
574 self->attrs[COLOR_hash_collection__HashCollection___last_accessed_node].val = var_node; /* _last_accessed_node on <self:HashCollection[Object, HashNode[Object]]> */
575 var37 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashCollection[Object, HashNode[Object]]> */
576 var_l = var37;
577 var38 = 1;
578 {
579 { /* Inline kernel#Int#+ (var_l,var38) on <var_l:Int> */
580 /* Covariant cast for argument 0 (i) <var38:Int> isa OTHER */
581 /* <var38:Int> isa OTHER */
582 var41 = 1; /* easy <var38:Int> isa OTHER*/
583 if (unlikely(!var41)) {
584 var_class_name44 = type_kernel__Int.name;
585 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name44);
586 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
587 show_backtrace(1);
588 }
589 var45 = var_l + var38;
590 var39 = var45;
591 goto RET_LABEL40;
592 RET_LABEL40:(void)0;
593 }
594 }
595 self->attrs[COLOR_hash_collection__HashCollection___the_length].l = var39; /* _the_length on <self:HashCollection[Object, HashNode[Object]]> */
596 var46 = 5;
597 {
598 { /* Inline kernel#Int#+ (var_l,var46) on <var_l:Int> */
599 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
600 /* <var46:Int> isa OTHER */
601 var49 = 1; /* easy <var46:Int> isa OTHER*/
602 if (unlikely(!var49)) {
603 var_class_name52 = type_kernel__Int.name;
604 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
605 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
606 show_backtrace(1);
607 }
608 var53 = var_l + var46;
609 var47 = var53;
610 goto RET_LABEL48;
611 RET_LABEL48:(void)0;
612 }
613 }
614 var54 = 2;
615 {
616 { /* Inline kernel#Int#* (var47,var54) on <var47:Int> */
617 /* Covariant cast for argument 0 (i) <var54:Int> isa OTHER */
618 /* <var54:Int> isa OTHER */
619 var57 = 1; /* easy <var54:Int> isa OTHER*/
620 if (unlikely(!var57)) {
621 var_class_name60 = type_kernel__Int.name;
622 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60);
623 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 378);
624 show_backtrace(1);
625 }
626 var61 = var47 * var54;
627 var55 = var61;
628 goto RET_LABEL56;
629 RET_LABEL56:(void)0;
630 }
631 }
632 var62 = 1;
633 {
634 { /* Inline kernel#Int#+ (var55,var62) on <var55:Int> */
635 /* Covariant cast for argument 0 (i) <var62:Int> isa OTHER */
636 /* <var62:Int> isa OTHER */
637 var65 = 1; /* easy <var62:Int> isa OTHER*/
638 if (unlikely(!var65)) {
639 var_class_name68 = type_kernel__Int.name;
640 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name68);
641 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
642 show_backtrace(1);
643 }
644 var69 = var55 + var62;
645 var63 = var69;
646 goto RET_LABEL64;
647 RET_LABEL64:(void)0;
648 }
649 }
650 var_l = var63;
651 var70 = self->attrs[COLOR_hash_collection__HashCollection___capacity].l; /* _capacity on <self:HashCollection[Object, HashNode[Object]]> */
652 {
653 { /* Inline kernel#Int#>= (var_l,var70) on <var_l:Int> */
654 /* Covariant cast for argument 0 (i) <var70:Int> isa OTHER */
655 /* <var70:Int> isa OTHER */
656 var73 = 1; /* easy <var70:Int> isa OTHER*/
657 if (unlikely(!var73)) {
658 var_class_name76 = type_kernel__Int.name;
659 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name76);
660 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
661 show_backtrace(1);
662 }
663 var77 = var_l >= var70;
664 var71 = var77;
665 goto RET_LABEL72;
666 RET_LABEL72:(void)0;
667 }
668 }
669 if (var71){
670 var78 = 3;
671 {
672 { /* Inline kernel#Int#* (var_l,var78) on <var_l:Int> */
673 /* Covariant cast for argument 0 (i) <var78:Int> isa OTHER */
674 /* <var78:Int> isa OTHER */
675 var81 = 1; /* easy <var78:Int> isa OTHER*/
676 if (unlikely(!var81)) {
677 var_class_name84 = type_kernel__Int.name;
678 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name84);
679 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 378);
680 show_backtrace(1);
681 }
682 var85 = var_l * var78;
683 var79 = var85;
684 goto RET_LABEL80;
685 RET_LABEL80:(void)0;
686 }
687 }
688 var86 = 2;
689 {
690 { /* Inline kernel#Int#/ (var79,var86) on <var79:Int> */
691 /* Covariant cast for argument 0 (i) <var86:Int> isa OTHER */
692 /* <var86:Int> isa OTHER */
693 var89 = 1; /* easy <var86:Int> isa OTHER*/
694 if (unlikely(!var89)) {
695 var_class_name92 = type_kernel__Int.name;
696 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name92);
697 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 379);
698 show_backtrace(1);
699 }
700 var93 = var79 / var86;
701 var87 = var93;
702 goto RET_LABEL88;
703 RET_LABEL88:(void)0;
704 }
705 }
706 var94 = 1;
707 {
708 { /* Inline kernel#Int#+ (var87,var94) on <var87:Int> */
709 /* Covariant cast for argument 0 (i) <var94:Int> isa OTHER */
710 /* <var94:Int> isa OTHER */
711 var97 = 1; /* easy <var94:Int> isa OTHER*/
712 if (unlikely(!var97)) {
713 var_class_name100 = type_kernel__Int.name;
714 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name100);
715 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
716 show_backtrace(1);
717 }
718 var101 = var87 + var94;
719 var95 = var101;
720 goto RET_LABEL96;
721 RET_LABEL96:(void)0;
722 }
723 }
724 {
725 hash_collection__HashCollection__enlarge(self, var95); /* Direct call hash_collection#HashCollection#enlarge on <self:HashCollection[Object, HashNode[Object]]>*/
726 }
727 } else {
728 }
729 RET_LABEL:;
730 }
731 /* method hash_collection#HashCollection#store for (self: Object, Int, HashNode[Object]) */
732 void VIRTUAL_hash_collection__HashCollection__store(val* self, long p0, val* p1) {
733 hash_collection__HashCollection__store(self, p0, p1); /* Direct call hash_collection#HashCollection#store on <self:Object(HashCollection[Object, HashNode[Object]])>*/
734 RET_LABEL:;
735 }
736 /* method hash_collection#HashCollection#remove_node for (self: HashCollection[Object, HashNode[Object]], Object) */
737 void hash_collection__HashCollection__remove_node(val* self, val* p0) {
738 short int var /* : Bool */;
739 int cltype;
740 int idtype;
741 const struct type* type_struct;
742 const char* var_class_name;
743 val* var_k /* var k: Object */;
744 long var1 /* : Int */;
745 long var_i /* var i: Int */;
746 val* var2 /* : nullable HashNode[Object] */;
747 val* var_node /* var node: nullable HashNode[Object] */;
748 val* var3 /* : null */;
749 short int var4 /* : Bool */;
750 short int var5 /* : Bool */;
751 val* var_other /* var other: nullable Object */;
752 short int var7 /* : Bool */;
753 short int var9 /* : Bool */;
754 val* var10 /* : nullable HashNode[Object] */;
755 val* var_prev /* var prev: nullable HashNode[Object] */;
756 val* var11 /* : nullable HashNode[Object] */;
757 val* var_next /* var next: nullable HashNode[Object] */;
758 val* var12 /* : null */;
759 short int var13 /* : Bool */;
760 short int var14 /* : Bool */;
761 val* var_other16 /* var other: nullable Object */;
762 short int var17 /* : Bool */;
763 short int var18 /* : Bool */;
764 short int var19 /* : Bool */;
765 short int var20 /* : Bool */;
766 int cltype21;
767 int idtype22;
768 const struct type* type_struct23;
769 const char* var_class_name24;
770 val* var25 /* : null */;
771 short int var26 /* : Bool */;
772 short int var27 /* : Bool */;
773 short int var29 /* : Bool */;
774 short int var30 /* : Bool */;
775 short int var31 /* : Bool */;
776 short int var32 /* : Bool */;
777 int cltype33;
778 int idtype34;
779 const struct type* type_struct35;
780 const char* var_class_name36;
781 val* var_ /* var : HashCollection[Object, HashNode[Object]] */;
782 long var37 /* : Int */;
783 long var38 /* : Int */;
784 long var39 /* : Int */;
785 short int var41 /* : Bool */;
786 int cltype42;
787 int idtype43;
788 const char* var_class_name44;
789 long var45 /* : Int */;
790 val* var46 /* : nullable HashNode[Object] */;
791 val* var47 /* : nullable HashNode[Object] */;
792 val* var48 /* : null */;
793 short int var49 /* : Bool */;
794 short int var50 /* : Bool */;
795 short int var52 /* : Bool */;
796 short int var53 /* : Bool */;
797 short int var54 /* : Bool */;
798 val* var55 /* : nullable NativeArray[nullable HashNode[Object]] */;
799 short int var56 /* : Bool */;
800 int cltype57;
801 int idtype58;
802 const struct type* type_struct59;
803 const char* var_class_name60;
804 short int var62 /* : Bool */;
805 int cltype63;
806 int idtype64;
807 const struct type* type_struct65;
808 short int is_nullable;
809 const char* var_class_name66;
810 val* var67 /* : null */;
811 short int var68 /* : Bool */;
812 short int var69 /* : Bool */;
813 short int var71 /* : Bool */;
814 short int var72 /* : Bool */;
815 short int var73 /* : Bool */;
816 val* var74 /* : null */;
817 /* Covariant cast for argument 0 (k) <p0:Object> isa K */
818 /* <p0:Object> isa K */
819 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashCollection_FT0];
820 cltype = type_struct->color;
821 idtype = type_struct->id;
822 if(cltype >= p0->type->table_size) {
823 var = 0;
824 } else {
825 var = p0->type->type_table[cltype] == idtype;
826 }
827 if (unlikely(!var)) {
828 var_class_name = p0 == NULL ? "null" : p0->type->name;
829 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
830 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 104);
831 show_backtrace(1);
832 }
833 var_k = p0;
834 {
835 var1 = hash_collection__HashCollection__index_at(self, var_k);
836 }
837 var_i = var1;
838 {
839 var2 = hash_collection__HashCollection__node_at_idx(self, var_i, var_k);
840 }
841 var_node = var2;
842 var3 = NULL;
843 if (var_node == NULL) {
844 var4 = 1; /* is null */
845 } else {
846 var4 = 0; /* arg is null but recv is not */
847 }
848 if (0) {
849 { /* Inline kernel#Object#== (var_node,var3) on <var_node:nullable HashNode[Object]> */
850 var_other = var3;
851 {
852 { /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable HashNode[Object](HashNode[Object])> */
853 var9 = var_node == var_other;
854 var7 = var9;
855 goto RET_LABEL8;
856 RET_LABEL8:(void)0;
857 }
858 }
859 var5 = var7;
860 goto RET_LABEL6;
861 RET_LABEL6:(void)0;
862 }
863 var4 = var5;
864 }
865 if (var4){
866 goto RET_LABEL;
867 } else {
868 }
869 var10 = var_node->attrs[COLOR_hash_collection__HashNode___prev_item].val; /* _prev_item on <var_node:nullable HashNode[Object](HashNode[Object])> */
870 var_prev = var10;
871 var11 = var_node->attrs[COLOR_hash_collection__HashNode___next_item].val; /* _next_item on <var_node:nullable HashNode[Object](HashNode[Object])> */
872 var_next = var11;
873 var12 = NULL;
874 if (var_prev == NULL) {
875 var13 = 0; /* is null */
876 } else {
877 var13 = 1; /* arg is null and recv is not */
878 }
879 if (0) {
880 { /* Inline kernel#Object#!= (var_prev,var12) on <var_prev:nullable HashNode[Object]> */
881 var_other16 = var12;
882 {
883 var18 = ((short int (*)(val*, val*))(var_prev->class->vft[COLOR_kernel__Object___61d_61d]))(var_prev, var_other16) /* == on <var_prev:nullable HashNode[Object](HashNode[Object])>*/;
884 var17 = var18;
885 }
886 var19 = !var17;
887 var14 = var19;
888 goto RET_LABEL15;
889 RET_LABEL15:(void)0;
890 }
891 var13 = var14;
892 }
893 if (var13){
894 var_prev->attrs[COLOR_hash_collection__HashNode___next_item].val = var_next; /* _next_item on <var_prev:nullable HashNode[Object](HashNode[Object])> */
895 } else {
896 /* <var_next:nullable HashNode[Object]> isa nullable N */
897 type_struct23 = self->type->resolution_table->types[COLOR_nullable_hash_collection__HashCollection_FT1];
898 cltype21 = type_struct23->color;
899 idtype22 = type_struct23->id;
900 if(var_next == NULL) {
901 var20 = 1;
902 } else {
903 if(cltype21 >= var_next->type->table_size) {
904 var20 = 0;
905 } else {
906 var20 = var_next->type->type_table[cltype21] == idtype22;
907 }
908 }
909 if (unlikely(!var20)) {
910 var_class_name24 = var_next == NULL ? "null" : var_next->type->name;
911 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable N", var_class_name24);
912 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 117);
913 show_backtrace(1);
914 }
915 self->attrs[COLOR_hash_collection__HashCollection___first_item].val = var_next; /* _first_item on <self:HashCollection[Object, HashNode[Object]]> */
916 }
917 var25 = NULL;
918 if (var_next == NULL) {
919 var26 = 0; /* is null */
920 } else {
921 var26 = 1; /* arg is null and recv is not */
922 }
923 if (0) {
924 { /* Inline kernel#Object#!= (var_next,var25) on <var_next:nullable HashNode[Object]> */
925 var_other16 = var25;
926 {
927 var30 = ((short int (*)(val*, val*))(var_next->class->vft[COLOR_kernel__Object___61d_61d]))(var_next, var_other16) /* == on <var_next:nullable HashNode[Object](HashNode[Object])>*/;
928 var29 = var30;
929 }
930 var31 = !var29;
931 var27 = var31;
932 goto RET_LABEL28;
933 RET_LABEL28:(void)0;
934 }
935 var26 = var27;
936 }
937 if (var26){
938 var_next->attrs[COLOR_hash_collection__HashNode___prev_item].val = var_prev; /* _prev_item on <var_next:nullable HashNode[Object](HashNode[Object])> */
939 } else {
940 /* <var_prev:nullable HashNode[Object]> isa nullable N */
941 type_struct35 = self->type->resolution_table->types[COLOR_nullable_hash_collection__HashCollection_FT1];
942 cltype33 = type_struct35->color;
943 idtype34 = type_struct35->id;
944 if(var_prev == NULL) {
945 var32 = 1;
946 } else {
947 if(cltype33 >= var_prev->type->table_size) {
948 var32 = 0;
949 } else {
950 var32 = var_prev->type->type_table[cltype33] == idtype34;
951 }
952 }
953 if (unlikely(!var32)) {
954 var_class_name36 = var_prev == NULL ? "null" : var_prev->type->name;
955 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable N", var_class_name36);
956 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 122);
957 show_backtrace(1);
958 }
959 self->attrs[COLOR_hash_collection__HashCollection___last_item].val = var_prev; /* _last_item on <self:HashCollection[Object, HashNode[Object]]> */
960 }
961 var_ = self;
962 var37 = var_->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <var_:HashCollection[Object, HashNode[Object]]> */
963 var38 = 1;
964 {
965 { /* Inline kernel#Int#- (var37,var38) on <var37:Int> */
966 /* Covariant cast for argument 0 (i) <var38:Int> isa OTHER */
967 /* <var38:Int> isa OTHER */
968 var41 = 1; /* easy <var38:Int> isa OTHER*/
969 if (unlikely(!var41)) {
970 var_class_name44 = type_kernel__Int.name;
971 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name44);
972 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
973 show_backtrace(1);
974 }
975 var45 = var37 - var38;
976 var39 = var45;
977 goto RET_LABEL40;
978 RET_LABEL40:(void)0;
979 }
980 }
981 var_->attrs[COLOR_hash_collection__HashCollection___the_length].l = var39; /* _the_length on <var_:HashCollection[Object, HashNode[Object]]> */
982 var46 = var_node->attrs[COLOR_hash_collection__HashNode___prev_in_bucklet].val; /* _prev_in_bucklet on <var_node:nullable HashNode[Object](HashNode[Object])> */
983 var_prev = var46;
984 var47 = var_node->attrs[COLOR_hash_collection__HashNode___next_in_bucklet].val; /* _next_in_bucklet on <var_node:nullable HashNode[Object](HashNode[Object])> */
985 var_next = var47;
986 var48 = NULL;
987 if (var_prev == NULL) {
988 var49 = 0; /* is null */
989 } else {
990 var49 = 1; /* arg is null and recv is not */
991 }
992 if (0) {
993 { /* Inline kernel#Object#!= (var_prev,var48) on <var_prev:nullable HashNode[Object]> */
994 var_other16 = var48;
995 {
996 var53 = ((short int (*)(val*, val*))(var_prev->class->vft[COLOR_kernel__Object___61d_61d]))(var_prev, var_other16) /* == on <var_prev:nullable HashNode[Object](HashNode[Object])>*/;
997 var52 = var53;
998 }
999 var54 = !var52;
1000 var50 = var54;
1001 goto RET_LABEL51;
1002 RET_LABEL51:(void)0;
1003 }
1004 var49 = var50;
1005 }
1006 if (var49){
1007 var_prev->attrs[COLOR_hash_collection__HashNode___next_in_bucklet].val = var_next; /* _next_in_bucklet on <var_prev:nullable HashNode[Object](HashNode[Object])> */
1008 } else {
1009 var55 = self->attrs[COLOR_hash_collection__HashCollection___array].val; /* _array on <self:HashCollection[Object, HashNode[Object]]> */
1010 /* <var_next:nullable HashNode[Object]> isa nullable N */
1011 type_struct59 = self->type->resolution_table->types[COLOR_nullable_hash_collection__HashCollection_FT1];
1012 cltype57 = type_struct59->color;
1013 idtype58 = type_struct59->id;
1014 if(var_next == NULL) {
1015 var56 = 1;
1016 } else {
1017 if(cltype57 >= var_next->type->table_size) {
1018 var56 = 0;
1019 } else {
1020 var56 = var_next->type->type_table[cltype57] == idtype58;
1021 }
1022 }
1023 if (unlikely(!var56)) {
1024 var_class_name60 = var_next == NULL ? "null" : var_next->type->name;
1025 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable N", var_class_name60);
1026 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 132);
1027 show_backtrace(1);
1028 }
1029 if (var55 == NULL) {
1030 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1031 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 132);
1032 show_backtrace(1);
1033 } else {
1034 { /* Inline array#NativeArray#[]= (var55,var_i,var_next) on <var55:nullable NativeArray[nullable HashNode[Object]]> */
1035 /* Covariant cast for argument 1 (item) <var_next:nullable HashNode[Object]> isa E */
1036 /* <var_next:nullable HashNode[Object]> isa E */
1037 type_struct65 = var55->type->resolution_table->types[COLOR_array__NativeArray_FT0];
1038 cltype63 = type_struct65->color;
1039 idtype64 = type_struct65->id;
1040 is_nullable = type_struct65->is_nullable;
1041 if(var_next == NULL) {
1042 var62 = is_nullable;
1043 } else {
1044 if(cltype63 >= var_next->type->table_size) {
1045 var62 = 0;
1046 } else {
1047 var62 = var_next->type->type_table[cltype63] == idtype64;
1048 }
1049 }
1050 if (unlikely(!var62)) {
1051 var_class_name66 = var_next == NULL ? "null" : var_next->type->name;
1052 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name66);
1053 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/array.nit", 778);
1054 show_backtrace(1);
1055 }
1056 ((struct instance_array__NativeArray*)var55)->values[var_i]=var_next;
1057 RET_LABEL61:(void)0;
1058 }
1059 }
1060 }
1061 var67 = NULL;
1062 if (var_next == NULL) {
1063 var68 = 0; /* is null */
1064 } else {
1065 var68 = 1; /* arg is null and recv is not */
1066 }
1067 if (0) {
1068 { /* Inline kernel#Object#!= (var_next,var67) on <var_next:nullable HashNode[Object]> */
1069 var_other16 = var67;
1070 {
1071 var72 = ((short int (*)(val*, val*))(var_next->class->vft[COLOR_kernel__Object___61d_61d]))(var_next, var_other16) /* == on <var_next:nullable HashNode[Object](HashNode[Object])>*/;
1072 var71 = var72;
1073 }
1074 var73 = !var71;
1075 var69 = var73;
1076 goto RET_LABEL70;
1077 RET_LABEL70:(void)0;
1078 }
1079 var68 = var69;
1080 }
1081 if (var68){
1082 var_next->attrs[COLOR_hash_collection__HashNode___prev_in_bucklet].val = var_prev; /* _prev_in_bucklet on <var_next:nullable HashNode[Object](HashNode[Object])> */
1083 } else {
1084 }
1085 var74 = NULL;
1086 self->attrs[COLOR_hash_collection__HashCollection___last_accessed_key].val = var74; /* _last_accessed_key on <self:HashCollection[Object, HashNode[Object]]> */
1087 RET_LABEL:;
1088 }
1089 /* method hash_collection#HashCollection#remove_node for (self: Object, Object) */
1090 void VIRTUAL_hash_collection__HashCollection__remove_node(val* self, val* p0) {
1091 hash_collection__HashCollection__remove_node(self, p0); /* Direct call hash_collection#HashCollection#remove_node on <self:Object(HashCollection[Object, HashNode[Object]])>*/
1092 RET_LABEL:;
1093 }
1094 /* method hash_collection#HashCollection#raz for (self: HashCollection[Object, HashNode[Object]]) */
1095 void hash_collection__HashCollection__raz(val* self) {
1096 long var /* : Int */;
1097 long var1 /* : Int */;
1098 long var2 /* : Int */;
1099 short int var4 /* : Bool */;
1100 int cltype;
1101 int idtype;
1102 const char* var_class_name;
1103 long var5 /* : Int */;
1104 long var_i /* var i: Int */;
1105 long var6 /* : Int */;
1106 short int var7 /* : Bool */;
1107 short int var9 /* : Bool */;
1108 int cltype10;
1109 int idtype11;
1110 const char* var_class_name12;
1111 short int var13 /* : Bool */;
1112 val* var14 /* : nullable NativeArray[nullable HashNode[Object]] */;
1113 val* var15 /* : null */;
1114 short int var17 /* : Bool */;
1115 int cltype18;
1116 int idtype19;
1117 const struct type* type_struct;
1118 short int is_nullable;
1119 const char* var_class_name20;
1120 long var21 /* : Int */;
1121 long var22 /* : Int */;
1122 short int var24 /* : Bool */;
1123 int cltype25;
1124 int idtype26;
1125 const char* var_class_name27;
1126 long var28 /* : Int */;
1127 long var29 /* : Int */;
1128 val* var30 /* : null */;
1129 val* var31 /* : null */;
1130 val* var32 /* : null */;
1131 var = self->attrs[COLOR_hash_collection__HashCollection___capacity].l; /* _capacity on <self:HashCollection[Object, HashNode[Object]]> */
1132 var1 = 1;
1133 {
1134 { /* Inline kernel#Int#- (var,var1) on <var:Int> */
1135 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
1136 /* <var1:Int> isa OTHER */
1137 var4 = 1; /* easy <var1:Int> isa OTHER*/
1138 if (unlikely(!var4)) {
1139 var_class_name = type_kernel__Int.name;
1140 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1141 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
1142 show_backtrace(1);
1143 }
1144 var5 = var - var1;
1145 var2 = var5;
1146 goto RET_LABEL3;
1147 RET_LABEL3:(void)0;
1148 }
1149 }
1150 var_i = var2;
1151 for(;;) {
1152 var6 = 0;
1153 {
1154 { /* Inline kernel#Int#>= (var_i,var6) on <var_i:Int> */
1155 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
1156 /* <var6:Int> isa OTHER */
1157 var9 = 1; /* easy <var6:Int> isa OTHER*/
1158 if (unlikely(!var9)) {
1159 var_class_name12 = type_kernel__Int.name;
1160 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
1161 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
1162 show_backtrace(1);
1163 }
1164 var13 = var_i >= var6;
1165 var7 = var13;
1166 goto RET_LABEL8;
1167 RET_LABEL8:(void)0;
1168 }
1169 }
1170 if (var7){
1171 var14 = self->attrs[COLOR_hash_collection__HashCollection___array].val; /* _array on <self:HashCollection[Object, HashNode[Object]]> */
1172 var15 = NULL;
1173 if (var14 == NULL) {
1174 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1175 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 146);
1176 show_backtrace(1);
1177 } else {
1178 { /* Inline array#NativeArray#[]= (var14,var_i,var15) on <var14:nullable NativeArray[nullable HashNode[Object]]> */
1179 /* Covariant cast for argument 1 (item) <var15:null> isa E */
1180 /* <var15:null> isa E */
1181 type_struct = var14->type->resolution_table->types[COLOR_array__NativeArray_FT0];
1182 cltype18 = type_struct->color;
1183 idtype19 = type_struct->id;
1184 is_nullable = type_struct->is_nullable;
1185 if(var15 == NULL) {
1186 var17 = is_nullable;
1187 } else {
1188 if(cltype18 >= var15->type->table_size) {
1189 var17 = 0;
1190 } else {
1191 var17 = var15->type->type_table[cltype18] == idtype19;
1192 }
1193 }
1194 if (unlikely(!var17)) {
1195 var_class_name20 = var15 == NULL ? "null" : var15->type->name;
1196 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name20);
1197 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/array.nit", 778);
1198 show_backtrace(1);
1199 }
1200 ((struct instance_array__NativeArray*)var14)->values[var_i]=var15;
1201 RET_LABEL16:(void)0;
1202 }
1203 }
1204 var21 = 1;
1205 {
1206 { /* Inline kernel#Int#- (var_i,var21) on <var_i:Int> */
1207 /* Covariant cast for argument 0 (i) <var21:Int> isa OTHER */
1208 /* <var21:Int> isa OTHER */
1209 var24 = 1; /* easy <var21:Int> isa OTHER*/
1210 if (unlikely(!var24)) {
1211 var_class_name27 = type_kernel__Int.name;
1212 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
1213 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
1214 show_backtrace(1);
1215 }
1216 var28 = var_i - var21;
1217 var22 = var28;
1218 goto RET_LABEL23;
1219 RET_LABEL23:(void)0;
1220 }
1221 }
1222 var_i = var22;
1223 } else {
1224 goto BREAK_label;
1225 }
1226 }
1227 BREAK_label: (void)0;
1228 var29 = 0;
1229 self->attrs[COLOR_hash_collection__HashCollection___the_length].l = var29; /* _the_length on <self:HashCollection[Object, HashNode[Object]]> */
1230 var30 = NULL;
1231 self->attrs[COLOR_hash_collection__HashCollection___first_item].val = var30; /* _first_item on <self:HashCollection[Object, HashNode[Object]]> */
1232 var31 = NULL;
1233 self->attrs[COLOR_hash_collection__HashCollection___last_item].val = var31; /* _last_item on <self:HashCollection[Object, HashNode[Object]]> */
1234 var32 = NULL;
1235 self->attrs[COLOR_hash_collection__HashCollection___last_accessed_key].val = var32; /* _last_accessed_key on <self:HashCollection[Object, HashNode[Object]]> */
1236 RET_LABEL:;
1237 }
1238 /* method hash_collection#HashCollection#raz for (self: Object) */
1239 void VIRTUAL_hash_collection__HashCollection__raz(val* self) {
1240 hash_collection__HashCollection__raz(self); /* Direct call hash_collection#HashCollection#raz on <self:Object(HashCollection[Object, HashNode[Object]])>*/
1241 RET_LABEL:;
1242 }
1243 /* method hash_collection#HashCollection#enlarge for (self: HashCollection[Object, HashNode[Object]], Int) */
1244 void hash_collection__HashCollection__enlarge(val* self, long p0) {
1245 long var_cap /* var cap: Int */;
1246 long var /* : Int */;
1247 long var_old_cap /* var old_cap: Int */;
1248 long var1 /* : Int */;
1249 long var2 /* : Int */;
1250 long var3 /* : Int */;
1251 short int var5 /* : Bool */;
1252 int cltype;
1253 int idtype;
1254 const char* var_class_name;
1255 long var6 /* : Int */;
1256 short int var7 /* : Bool */;
1257 short int var9 /* : Bool */;
1258 int cltype10;
1259 int idtype11;
1260 const char* var_class_name12;
1261 short int var13 /* : Bool */;
1262 long var14 /* : Int */;
1263 long var15 /* : Int */;
1264 long var16 /* : Int */;
1265 short int var18 /* : Bool */;
1266 int cltype19;
1267 int idtype20;
1268 const char* var_class_name21;
1269 long var22 /* : Int */;
1270 long var23 /* : Int */;
1271 short int var24 /* : Bool */;
1272 short int var26 /* : Bool */;
1273 int cltype27;
1274 int idtype28;
1275 const char* var_class_name29;
1276 short int var30 /* : Bool */;
1277 val* var31 /* : null */;
1278 val* var32 /* : NativeArray[nullable Object] */;
1279 val* var34 /* : NativeArray[nullable Object] */;
1280 val* var_new_array /* var new_array: NativeArray[nullable HashNode[Object]] */;
1281 long var35 /* : Int */;
1282 long var36 /* : Int */;
1283 short int var38 /* : Bool */;
1284 int cltype39;
1285 int idtype40;
1286 const char* var_class_name41;
1287 long var42 /* : Int */;
1288 long var_i /* var i: Int */;
1289 long var43 /* : Int */;
1290 short int var44 /* : Bool */;
1291 short int var46 /* : Bool */;
1292 int cltype47;
1293 int idtype48;
1294 const char* var_class_name49;
1295 short int var50 /* : Bool */;
1296 val* var51 /* : null */;
1297 short int var53 /* : Bool */;
1298 int cltype54;
1299 int idtype55;
1300 const struct type* type_struct;
1301 short int is_nullable;
1302 const char* var_class_name56;
1303 long var57 /* : Int */;
1304 long var58 /* : Int */;
1305 short int var60 /* : Bool */;
1306 int cltype61;
1307 int idtype62;
1308 const char* var_class_name63;
1309 long var64 /* : Int */;
1310 long var65 /* : Int */;
1311 short int var66 /* : Bool */;
1312 short int var68 /* : Bool */;
1313 int cltype69;
1314 int idtype70;
1315 const char* var_class_name71;
1316 short int var72 /* : Bool */;
1317 val* var73 /* : nullable HashNode[Object] */;
1318 val* var_node /* var node: nullable HashNode[Object] */;
1319 val* var74 /* : null */;
1320 short int var75 /* : Bool */;
1321 short int var76 /* : Bool */;
1322 val* var_other /* var other: nullable Object */;
1323 short int var78 /* : Bool */;
1324 short int var79 /* : Bool */;
1325 short int var80 /* : Bool */;
1326 val* var81 /* : Object */;
1327 short int var82 /* : Bool */;
1328 int cltype83;
1329 int idtype84;
1330 const struct type* type_struct85;
1331 const char* var_class_name86;
1332 long var87 /* : Int */;
1333 long var_index /* var index: Int */;
1334 val* var88 /* : nullable Object */;
1335 val* var90 /* : nullable HashNode[Object] */;
1336 val* var_next /* var next: nullable HashNode[Object] */;
1337 short int var92 /* : Bool */;
1338 int cltype93;
1339 int idtype94;
1340 const struct type* type_struct95;
1341 const char* var_class_name96;
1342 val* var97 /* : null */;
1343 val* var98 /* : null */;
1344 short int var99 /* : Bool */;
1345 short int var100 /* : Bool */;
1346 short int var102 /* : Bool */;
1347 short int var103 /* : Bool */;
1348 short int var104 /* : Bool */;
1349 val* var105 /* : nullable HashNode[Object] */;
1350 short int var106 /* : Bool */;
1351 int cltype107;
1352 int idtype108;
1353 const struct type* type_struct109;
1354 const char* var_class_name110;
1355 var_cap = p0;
1356 var = self->attrs[COLOR_hash_collection__HashCollection___capacity].l; /* _capacity on <self:HashCollection[Object, HashNode[Object]]> */
1357 var_old_cap = var;
1358 var1 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashCollection[Object, HashNode[Object]]> */
1359 var2 = 1;
1360 {
1361 { /* Inline kernel#Int#+ (var1,var2) on <var1:Int> */
1362 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1363 /* <var2:Int> isa OTHER */
1364 var5 = 1; /* easy <var2:Int> isa OTHER*/
1365 if (unlikely(!var5)) {
1366 var_class_name = type_kernel__Int.name;
1367 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1368 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1369 show_backtrace(1);
1370 }
1371 var6 = var1 + var2;
1372 var3 = var6;
1373 goto RET_LABEL4;
1374 RET_LABEL4:(void)0;
1375 }
1376 }
1377 {
1378 { /* Inline kernel#Int#< (var_cap,var3) on <var_cap:Int> */
1379 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
1380 /* <var3:Int> isa OTHER */
1381 var9 = 1; /* easy <var3:Int> isa OTHER*/
1382 if (unlikely(!var9)) {
1383 var_class_name12 = type_kernel__Int.name;
1384 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
1385 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
1386 show_backtrace(1);
1387 }
1388 var13 = var_cap < var3;
1389 var7 = var13;
1390 goto RET_LABEL8;
1391 RET_LABEL8:(void)0;
1392 }
1393 }
1394 if (var7){
1395 var14 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashCollection[Object, HashNode[Object]]> */
1396 var15 = 1;
1397 {
1398 { /* Inline kernel#Int#+ (var14,var15) on <var14:Int> */
1399 /* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
1400 /* <var15:Int> isa OTHER */
1401 var18 = 1; /* easy <var15:Int> isa OTHER*/
1402 if (unlikely(!var18)) {
1403 var_class_name21 = type_kernel__Int.name;
1404 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
1405 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1406 show_backtrace(1);
1407 }
1408 var22 = var14 + var15;
1409 var16 = var22;
1410 goto RET_LABEL17;
1411 RET_LABEL17:(void)0;
1412 }
1413 }
1414 var_cap = var16;
1415 } else {
1416 }
1417 var23 = self->attrs[COLOR_hash_collection__HashCollection___capacity].l; /* _capacity on <self:HashCollection[Object, HashNode[Object]]> */
1418 {
1419 { /* Inline kernel#Int#<= (var_cap,var23) on <var_cap:Int> */
1420 /* Covariant cast for argument 0 (i) <var23:Int> isa OTHER */
1421 /* <var23:Int> isa OTHER */
1422 var26 = 1; /* easy <var23:Int> isa OTHER*/
1423 if (unlikely(!var26)) {
1424 var_class_name29 = type_kernel__Int.name;
1425 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
1426 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
1427 show_backtrace(1);
1428 }
1429 var30 = var_cap <= var23;
1430 var24 = var30;
1431 goto RET_LABEL25;
1432 RET_LABEL25:(void)0;
1433 }
1434 }
1435 if (var24){
1436 goto RET_LABEL;
1437 } else {
1438 }
1439 self->attrs[COLOR_hash_collection__HashCollection___capacity].l = var_cap; /* _capacity on <self:HashCollection[Object, HashNode[Object]]> */
1440 var31 = NULL;
1441 self->attrs[COLOR_hash_collection__HashCollection___last_accessed_key].val = var31; /* _last_accessed_key on <self:HashCollection[Object, HashNode[Object]]> */
1442 {
1443 { /* Inline array#ArrayCapable#calloc_array (self,var_cap) on <self:HashCollection[Object, HashNode[Object]]> */
1444 var34 = NEW_array__NativeArray(var_cap, self->type->resolution_table->types[COLOR_array__NativeArrayarray__ArrayCapable_FT0]);
1445 var32 = var34;
1446 goto RET_LABEL33;
1447 RET_LABEL33:(void)0;
1448 }
1449 }
1450 var_new_array = var32;
1451 self->attrs[COLOR_hash_collection__HashCollection___array].val = var_new_array; /* _array on <self:HashCollection[Object, HashNode[Object]]> */
1452 var35 = 1;
1453 {
1454 { /* Inline kernel#Int#- (var_cap,var35) on <var_cap:Int> */
1455 /* Covariant cast for argument 0 (i) <var35:Int> isa OTHER */
1456 /* <var35:Int> isa OTHER */
1457 var38 = 1; /* easy <var35:Int> isa OTHER*/
1458 if (unlikely(!var38)) {
1459 var_class_name41 = type_kernel__Int.name;
1460 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
1461 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
1462 show_backtrace(1);
1463 }
1464 var42 = var_cap - var35;
1465 var36 = var42;
1466 goto RET_LABEL37;
1467 RET_LABEL37:(void)0;
1468 }
1469 }
1470 var_i = var36;
1471 for(;;) {
1472 var43 = 0;
1473 {
1474 { /* Inline kernel#Int#>= (var_i,var43) on <var_i:Int> */
1475 /* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
1476 /* <var43:Int> isa OTHER */
1477 var46 = 1; /* easy <var43:Int> isa OTHER*/
1478 if (unlikely(!var46)) {
1479 var_class_name49 = type_kernel__Int.name;
1480 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
1481 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
1482 show_backtrace(1);
1483 }
1484 var50 = var_i >= var43;
1485 var44 = var50;
1486 goto RET_LABEL45;
1487 RET_LABEL45:(void)0;
1488 }
1489 }
1490 if (var44){
1491 var51 = NULL;
1492 {
1493 { /* Inline array#NativeArray#[]= (var_new_array,var_i,var51) on <var_new_array:NativeArray[nullable HashNode[Object]]> */
1494 /* Covariant cast for argument 1 (item) <var51:null> isa E */
1495 /* <var51:null> isa E */
1496 type_struct = var_new_array->type->resolution_table->types[COLOR_array__NativeArray_FT0];
1497 cltype54 = type_struct->color;
1498 idtype55 = type_struct->id;
1499 is_nullable = type_struct->is_nullable;
1500 if(var51 == NULL) {
1501 var53 = is_nullable;
1502 } else {
1503 if(cltype54 >= var51->type->table_size) {
1504 var53 = 0;
1505 } else {
1506 var53 = var51->type->type_table[cltype54] == idtype55;
1507 }
1508 }
1509 if (unlikely(!var53)) {
1510 var_class_name56 = var51 == NULL ? "null" : var51->type->name;
1511 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name56);
1512 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/array.nit", 778);
1513 show_backtrace(1);
1514 }
1515 ((struct instance_array__NativeArray*)var_new_array)->values[var_i]=var51;
1516 RET_LABEL52:(void)0;
1517 }
1518 }
1519 var57 = 1;
1520 {
1521 { /* Inline kernel#Int#- (var_i,var57) on <var_i:Int> */
1522 /* Covariant cast for argument 0 (i) <var57:Int> isa OTHER */
1523 /* <var57:Int> isa OTHER */
1524 var60 = 1; /* easy <var57:Int> isa OTHER*/
1525 if (unlikely(!var60)) {
1526 var_class_name63 = type_kernel__Int.name;
1527 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name63);
1528 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
1529 show_backtrace(1);
1530 }
1531 var64 = var_i - var57;
1532 var58 = var64;
1533 goto RET_LABEL59;
1534 RET_LABEL59:(void)0;
1535 }
1536 }
1537 var_i = var58;
1538 } else {
1539 goto BREAK_label;
1540 }
1541 }
1542 BREAK_label: (void)0;
1543 var65 = self->attrs[COLOR_hash_collection__HashCollection___capacity].l; /* _capacity on <self:HashCollection[Object, HashNode[Object]]> */
1544 {
1545 { /* Inline kernel#Int#<= (var65,var_old_cap) on <var65:Int> */
1546 /* Covariant cast for argument 0 (i) <var_old_cap:Int> isa OTHER */
1547 /* <var_old_cap:Int> isa OTHER */
1548 var68 = 1; /* easy <var_old_cap:Int> isa OTHER*/
1549 if (unlikely(!var68)) {
1550 var_class_name71 = type_kernel__Int.name;
1551 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name71);
1552 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
1553 show_backtrace(1);
1554 }
1555 var72 = var65 <= var_old_cap;
1556 var66 = var72;
1557 goto RET_LABEL67;
1558 RET_LABEL67:(void)0;
1559 }
1560 }
1561 if (var66){
1562 goto RET_LABEL;
1563 } else {
1564 }
1565 var73 = self->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <self:HashCollection[Object, HashNode[Object]]> */
1566 var_node = var73;
1567 for(;;) {
1568 var74 = NULL;
1569 if (var_node == NULL) {
1570 var75 = 0; /* is null */
1571 } else {
1572 var75 = 1; /* arg is null and recv is not */
1573 }
1574 if (0) {
1575 { /* Inline kernel#Object#!= (var_node,var74) on <var_node:nullable HashNode[Object]> */
1576 var_other = var74;
1577 {
1578 var79 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable HashNode[Object](HashNode[Object])>*/;
1579 var78 = var79;
1580 }
1581 var80 = !var78;
1582 var76 = var80;
1583 goto RET_LABEL77;
1584 RET_LABEL77:(void)0;
1585 }
1586 var75 = var76;
1587 }
1588 if (var75){
1589 var81 = var_node->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var_node:nullable HashNode[Object](HashNode[Object])> */
1590 if (unlikely(var81 == NULL)) {
1591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
1592 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 181);
1593 show_backtrace(1);
1594 }
1595 /* <var81:Object> isa K */
1596 type_struct85 = self->type->resolution_table->types[COLOR_hash_collection__HashCollection_FT0];
1597 cltype83 = type_struct85->color;
1598 idtype84 = type_struct85->id;
1599 if(cltype83 >= var81->type->table_size) {
1600 var82 = 0;
1601 } else {
1602 var82 = var81->type->type_table[cltype83] == idtype84;
1603 }
1604 if (unlikely(!var82)) {
1605 var_class_name86 = var81 == NULL ? "null" : var81->type->name;
1606 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name86);
1607 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 181);
1608 show_backtrace(1);
1609 }
1610 {
1611 var87 = hash_collection__HashCollection__index_at(self, var81);
1612 }
1613 var_index = var87;
1614 {
1615 { /* Inline array#NativeArray#[] (var_new_array,var_index) on <var_new_array:NativeArray[nullable HashNode[Object]]> */
1616 var90 = ((struct instance_array__NativeArray*)var_new_array)->values[var_index];
1617 var88 = var90;
1618 goto RET_LABEL89;
1619 RET_LABEL89:(void)0;
1620 }
1621 }
1622 var_next = var88;
1623 {
1624 { /* Inline array#NativeArray#[]= (var_new_array,var_index,var_node) on <var_new_array:NativeArray[nullable HashNode[Object]]> */
1625 /* Covariant cast for argument 1 (item) <var_node:nullable HashNode[Object](HashNode[Object])> isa E */
1626 /* <var_node:nullable HashNode[Object](HashNode[Object])> isa E */
1627 type_struct95 = var_new_array->type->resolution_table->types[COLOR_array__NativeArray_FT0];
1628 cltype93 = type_struct95->color;
1629 idtype94 = type_struct95->id;
1630 if(cltype93 >= var_node->type->table_size) {
1631 var92 = 0;
1632 } else {
1633 var92 = var_node->type->type_table[cltype93] == idtype94;
1634 }
1635 if (unlikely(!var92)) {
1636 var_class_name96 = var_node == NULL ? "null" : var_node->type->name;
1637 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name96);
1638 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/array.nit", 778);
1639 show_backtrace(1);
1640 }
1641 ((struct instance_array__NativeArray*)var_new_array)->values[var_index]=var_node;
1642 RET_LABEL91:(void)0;
1643 }
1644 }
1645 var97 = NULL;
1646 var_node->attrs[COLOR_hash_collection__HashNode___prev_in_bucklet].val = var97; /* _prev_in_bucklet on <var_node:nullable HashNode[Object](HashNode[Object])> */
1647 var_node->attrs[COLOR_hash_collection__HashNode___next_in_bucklet].val = var_next; /* _next_in_bucklet on <var_node:nullable HashNode[Object](HashNode[Object])> */
1648 var98 = NULL;
1649 if (var_next == NULL) {
1650 var99 = 0; /* is null */
1651 } else {
1652 var99 = 1; /* arg is null and recv is not */
1653 }
1654 if (0) {
1655 { /* Inline kernel#Object#!= (var_next,var98) on <var_next:nullable HashNode[Object]> */
1656 var_other = var98;
1657 {
1658 var103 = ((short int (*)(val*, val*))(var_next->class->vft[COLOR_kernel__Object___61d_61d]))(var_next, var_other) /* == on <var_next:nullable HashNode[Object](HashNode[Object])>*/;
1659 var102 = var103;
1660 }
1661 var104 = !var102;
1662 var100 = var104;
1663 goto RET_LABEL101;
1664 RET_LABEL101:(void)0;
1665 }
1666 var99 = var100;
1667 }
1668 if (var99){
1669 var_next->attrs[COLOR_hash_collection__HashNode___prev_in_bucklet].val = var_node; /* _prev_in_bucklet on <var_next:nullable HashNode[Object](HashNode[Object])> */
1670 } else {
1671 }
1672 var105 = var_node->attrs[COLOR_hash_collection__HashNode___next_item].val; /* _next_item on <var_node:nullable HashNode[Object](HashNode[Object])> */
1673 /* <var105:nullable HashNode[Object]> isa nullable N */
1674 type_struct109 = self->type->resolution_table->types[COLOR_nullable_hash_collection__HashCollection_FT1];
1675 cltype107 = type_struct109->color;
1676 idtype108 = type_struct109->id;
1677 if(var105 == NULL) {
1678 var106 = 1;
1679 } else {
1680 if(cltype107 >= var105->type->table_size) {
1681 var106 = 0;
1682 } else {
1683 var106 = var105->type->type_table[cltype107] == idtype108;
1684 }
1685 }
1686 if (unlikely(!var106)) {
1687 var_class_name110 = var105 == NULL ? "null" : var105->type->name;
1688 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable N", var_class_name110);
1689 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 188);
1690 show_backtrace(1);
1691 }
1692 var_node = var105;
1693 } else {
1694 goto BREAK_label111;
1695 }
1696 }
1697 BREAK_label111: (void)0;
1698 RET_LABEL:;
1699 }
1700 /* method hash_collection#HashCollection#enlarge for (self: Object, Int) */
1701 void VIRTUAL_hash_collection__HashCollection__enlarge(val* self, long p0) {
1702 hash_collection__HashCollection__enlarge(self, p0); /* Direct call hash_collection#HashCollection#enlarge on <self:Object(HashCollection[Object, HashNode[Object]])>*/
1703 RET_LABEL:;
1704 }
1705 /* method hash_collection#HashNode#init for (self: HashNode[Object], Object) */
1706 void hash_collection__HashNode__init(val* self, val* p0) {
1707 short int var /* : Bool */;
1708 int cltype;
1709 int idtype;
1710 const struct type* type_struct;
1711 const char* var_class_name;
1712 val* var_k /* var k: Object */;
1713 /* Covariant cast for argument 0 (k) <p0:Object> isa K */
1714 /* <p0:Object> isa K */
1715 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashNode_FT0];
1716 cltype = type_struct->color;
1717 idtype = type_struct->id;
1718 if(cltype >= p0->type->table_size) {
1719 var = 0;
1720 } else {
1721 var = p0->type->type_table[cltype] == idtype;
1722 }
1723 if (unlikely(!var)) {
1724 var_class_name = p0 == NULL ? "null" : p0->type->name;
1725 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
1726 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 200);
1727 show_backtrace(1);
1728 }
1729 var_k = p0;
1730 self->attrs[COLOR_hash_collection__HashNode___key].val = var_k; /* _key on <self:HashNode[Object]> */
1731 RET_LABEL:;
1732 }
1733 /* method hash_collection#HashNode#init for (self: Object, Object) */
1734 void VIRTUAL_hash_collection__HashNode__init(val* self, val* p0) {
1735 hash_collection__HashNode__init(self, p0); /* Direct call hash_collection#HashNode#init on <self:Object(HashNode[Object])>*/
1736 RET_LABEL:;
1737 }
1738 /* method hash_collection#HashMap#[] for (self: HashMap[Object, nullable Object], Object): nullable Object */
1739 val* hash_collection__HashMap___91d_93d(val* self, val* p0) {
1740 val* var /* : nullable Object */;
1741 short int var1 /* : Bool */;
1742 int cltype;
1743 int idtype;
1744 const struct type* type_struct;
1745 const char* var_class_name;
1746 val* var_key /* var key: Object */;
1747 val* var2 /* : nullable HashNode[Object] */;
1748 val* var_c /* var c: nullable HashMapNode[Object, nullable Object] */;
1749 val* var3 /* : null */;
1750 short int var4 /* : Bool */;
1751 short int var5 /* : Bool */;
1752 val* var_other /* var other: nullable Object */;
1753 short int var7 /* : Bool */;
1754 short int var9 /* : Bool */;
1755 val* var10 /* : nullable Object */;
1756 val* var11 /* : nullable Object */;
1757 /* Covariant cast for argument 0 (key) <p0:Object> isa K */
1758 /* <p0:Object> isa K */
1759 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__MapRead_FT0];
1760 cltype = type_struct->color;
1761 idtype = type_struct->id;
1762 if(cltype >= p0->type->table_size) {
1763 var1 = 0;
1764 } else {
1765 var1 = p0->type->type_table[cltype] == idtype;
1766 }
1767 if (unlikely(!var1)) {
1768 var_class_name = p0 == NULL ? "null" : p0->type->name;
1769 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
1770 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 212);
1771 show_backtrace(1);
1772 }
1773 var_key = p0;
1774 {
1775 var2 = hash_collection__HashCollection__node_at(self, var_key);
1776 }
1777 var_c = var2;
1778 var3 = NULL;
1779 if (var_c == NULL) {
1780 var4 = 1; /* is null */
1781 } else {
1782 var4 = 0; /* arg is null but recv is not */
1783 }
1784 if (0) {
1785 { /* Inline kernel#Object#== (var_c,var3) on <var_c:nullable HashMapNode[Object, nullable Object]> */
1786 var_other = var3;
1787 {
1788 { /* Inline kernel#Object#is_same_instance (var_c,var_other) on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
1789 var9 = var_c == var_other;
1790 var7 = var9;
1791 goto RET_LABEL8;
1792 RET_LABEL8:(void)0;
1793 }
1794 }
1795 var5 = var7;
1796 goto RET_LABEL6;
1797 RET_LABEL6:(void)0;
1798 }
1799 var4 = var5;
1800 }
1801 if (var4){
1802 {
1803 var10 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__MapRead__provide_default_value]))(self, var_key) /* provide_default_value on <self:HashMap[Object, nullable Object]>*/;
1804 }
1805 var = var10;
1806 goto RET_LABEL;
1807 } else {
1808 var11 = var_c->attrs[COLOR_hash_collection__HashMapNode___value].val; /* _value on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
1809 var = var11;
1810 goto RET_LABEL;
1811 }
1812 RET_LABEL:;
1813 return var;
1814 }
1815 /* method hash_collection#HashMap#[] for (self: Object, Object): nullable Object */
1816 val* VIRTUAL_hash_collection__HashMap___91d_93d(val* self, val* p0) {
1817 val* var /* : nullable Object */;
1818 val* var1 /* : nullable Object */;
1819 var1 = hash_collection__HashMap___91d_93d(self, p0);
1820 var = var1;
1821 RET_LABEL:;
1822 return var;
1823 }
1824 /* method hash_collection#HashMap#iterator for (self: HashMap[Object, nullable Object]): HashMapIterator[Object, nullable Object] */
1825 val* hash_collection__HashMap__iterator(val* self) {
1826 val* var /* : HashMapIterator[Object, nullable Object] */;
1827 val* var1 /* : HashMapIterator[Object, nullable Object] */;
1828 var1 = NEW_hash_collection__HashMapIterator(self->type->resolution_table->types[COLOR_hash_collection__HashMapIteratorhash_collection__HashMap_FT0hash_collection__HashMap_FT1]);
1829 {
1830 hash_collection__HashMapIterator__init(var1, self); /* Direct call hash_collection#HashMapIterator#init on <var1:HashMapIterator[Object, nullable Object]>*/
1831 }
1832 var = var1;
1833 goto RET_LABEL;
1834 RET_LABEL:;
1835 return var;
1836 }
1837 /* method hash_collection#HashMap#iterator for (self: Object): MapIterator[Object, nullable Object] */
1838 val* VIRTUAL_hash_collection__HashMap__iterator(val* self) {
1839 val* var /* : MapIterator[Object, nullable Object] */;
1840 val* var1 /* : HashMapIterator[Object, nullable Object] */;
1841 var1 = hash_collection__HashMap__iterator(self);
1842 var = var1;
1843 RET_LABEL:;
1844 return var;
1845 }
1846 /* method hash_collection#HashMap#length for (self: HashMap[Object, nullable Object]): Int */
1847 long hash_collection__HashMap__length(val* self) {
1848 long var /* : Int */;
1849 long var1 /* : Int */;
1850 var1 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashMap[Object, nullable Object]> */
1851 var = var1;
1852 goto RET_LABEL;
1853 RET_LABEL:;
1854 return var;
1855 }
1856 /* method hash_collection#HashMap#length for (self: Object): Int */
1857 long VIRTUAL_hash_collection__HashMap__length(val* self) {
1858 long var /* : Int */;
1859 long var1 /* : Int */;
1860 var1 = hash_collection__HashMap__length(self);
1861 var = var1;
1862 RET_LABEL:;
1863 return var;
1864 }
1865 /* method hash_collection#HashMap#is_empty for (self: HashMap[Object, nullable Object]): Bool */
1866 short int hash_collection__HashMap__is_empty(val* self) {
1867 short int var /* : Bool */;
1868 long var1 /* : Int */;
1869 long var2 /* : Int */;
1870 short int var3 /* : Bool */;
1871 short int var4 /* : Bool */;
1872 short int var6 /* : Bool */;
1873 var1 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashMap[Object, nullable Object]> */
1874 var2 = 0;
1875 {
1876 { /* Inline kernel#Int#== (var1,var2) on <var1:Int> */
1877 var6 = var1 == var2;
1878 var4 = var6;
1879 goto RET_LABEL5;
1880 RET_LABEL5:(void)0;
1881 }
1882 var3 = var4;
1883 }
1884 var = var3;
1885 goto RET_LABEL;
1886 RET_LABEL:;
1887 return var;
1888 }
1889 /* method hash_collection#HashMap#is_empty for (self: Object): Bool */
1890 short int VIRTUAL_hash_collection__HashMap__is_empty(val* self) {
1891 short int var /* : Bool */;
1892 short int var1 /* : Bool */;
1893 var1 = hash_collection__HashMap__is_empty(self);
1894 var = var1;
1895 RET_LABEL:;
1896 return var;
1897 }
1898 /* method hash_collection#HashMap#[]= for (self: HashMap[Object, nullable Object], Object, nullable Object) */
1899 void hash_collection__HashMap___91d_93d_61d(val* self, val* p0, val* p1) {
1900 short int var /* : Bool */;
1901 int cltype;
1902 int idtype;
1903 const struct type* type_struct;
1904 const char* var_class_name;
1905 short int var1 /* : Bool */;
1906 int cltype2;
1907 int idtype3;
1908 const struct type* type_struct4;
1909 short int is_nullable;
1910 const char* var_class_name5;
1911 val* var_key /* var key: Object */;
1912 val* var_v /* var v: nullable Object */;
1913 long var6 /* : Int */;
1914 long var_i /* var i: Int */;
1915 val* var7 /* : nullable HashNode[Object] */;
1916 val* var_c /* var c: nullable HashMapNode[Object, nullable Object] */;
1917 val* var8 /* : null */;
1918 short int var9 /* : Bool */;
1919 short int var10 /* : Bool */;
1920 val* var_other /* var other: nullable Object */;
1921 short int var12 /* : Bool */;
1922 short int var13 /* : Bool */;
1923 short int var14 /* : Bool */;
1924 val* var15 /* : HashMapNode[Object, nullable Object] */;
1925 /* Covariant cast for argument 0 (key) <p0:Object> isa K */
1926 /* <p0:Object> isa K */
1927 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Map_FT0];
1928 cltype = type_struct->color;
1929 idtype = type_struct->id;
1930 if(cltype >= p0->type->table_size) {
1931 var = 0;
1932 } else {
1933 var = p0->type->type_table[cltype] == idtype;
1934 }
1935 if (unlikely(!var)) {
1936 var_class_name = p0 == NULL ? "null" : p0->type->name;
1937 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
1938 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 228);
1939 show_backtrace(1);
1940 }
1941 /* Covariant cast for argument 1 (v) <p1:nullable Object> isa V */
1942 /* <p1:nullable Object> isa V */
1943 type_struct4 = self->type->resolution_table->types[COLOR_abstract_collection__Map_FT1];
1944 cltype2 = type_struct4->color;
1945 idtype3 = type_struct4->id;
1946 is_nullable = type_struct4->is_nullable;
1947 if(p1 == NULL) {
1948 var1 = is_nullable;
1949 } else {
1950 if(cltype2 >= p1->type->table_size) {
1951 var1 = 0;
1952 } else {
1953 var1 = p1->type->type_table[cltype2] == idtype3;
1954 }
1955 }
1956 if (unlikely(!var1)) {
1957 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
1958 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name5);
1959 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 228);
1960 show_backtrace(1);
1961 }
1962 var_key = p0;
1963 var_v = p1;
1964 {
1965 var6 = hash_collection__HashCollection__index_at(self, var_key);
1966 }
1967 var_i = var6;
1968 {
1969 var7 = hash_collection__HashCollection__node_at_idx(self, var_i, var_key);
1970 }
1971 var_c = var7;
1972 var8 = NULL;
1973 if (var_c == NULL) {
1974 var9 = 0; /* is null */
1975 } else {
1976 var9 = 1; /* arg is null and recv is not */
1977 }
1978 if (0) {
1979 { /* Inline kernel#Object#!= (var_c,var8) on <var_c:nullable HashMapNode[Object, nullable Object]> */
1980 var_other = var8;
1981 {
1982 var13 = ((short int (*)(val*, val*))(var_c->class->vft[COLOR_kernel__Object___61d_61d]))(var_c, var_other) /* == on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])>*/;
1983 var12 = var13;
1984 }
1985 var14 = !var12;
1986 var10 = var14;
1987 goto RET_LABEL11;
1988 RET_LABEL11:(void)0;
1989 }
1990 var9 = var10;
1991 }
1992 if (var9){
1993 var_c->attrs[COLOR_hash_collection__HashNode___key].val = var_key; /* _key on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
1994 var_c->attrs[COLOR_hash_collection__HashMapNode___value].val = var_v; /* _value on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
1995 } else {
1996 var15 = NEW_hash_collection__HashMapNode(self->type->resolution_table->types[COLOR_hash_collection__HashMapNodehash_collection__HashMap_FT0hash_collection__HashMap_FT1]);
1997 {
1998 hash_collection__HashMapNode__init(var15, var_key, var_v); /* Direct call hash_collection#HashMapNode#init on <var15:HashMapNode[Object, nullable Object]>*/
1999 }
2000 {
2001 hash_collection__HashCollection__store(self, var_i, var15); /* Direct call hash_collection#HashCollection#store on <self:HashMap[Object, nullable Object]>*/
2002 }
2003 }
2004 RET_LABEL:;
2005 }
2006 /* method hash_collection#HashMap#[]= for (self: Object, Object, nullable Object) */
2007 void VIRTUAL_hash_collection__HashMap___91d_93d_61d(val* self, val* p0, val* p1) {
2008 hash_collection__HashMap___91d_93d_61d(self, p0, p1); /* Direct call hash_collection#HashMap#[]= on <self:Object(HashMap[Object, nullable Object])>*/
2009 RET_LABEL:;
2010 }
2011 /* method hash_collection#HashMap#clear for (self: HashMap[Object, nullable Object]) */
2012 void hash_collection__HashMap__clear(val* self) {
2013 {
2014 hash_collection__HashCollection__raz(self); /* Direct call hash_collection#HashCollection#raz on <self:HashMap[Object, nullable Object]>*/
2015 }
2016 RET_LABEL:;
2017 }
2018 /* method hash_collection#HashMap#clear for (self: Object) */
2019 void VIRTUAL_hash_collection__HashMap__clear(val* self) {
2020 hash_collection__HashMap__clear(self); /* Direct call hash_collection#HashMap#clear on <self:Object(HashMap[Object, nullable Object])>*/
2021 RET_LABEL:;
2022 }
2023 /* method hash_collection#HashMap#init for (self: HashMap[Object, nullable Object]) */
2024 void hash_collection__HashMap__init(val* self) {
2025 long var /* : Int */;
2026 long var1 /* : Int */;
2027 long var2 /* : Int */;
2028 {
2029 ((void (*)(val*))(self->class->vft[COLOR_hash_collection__HashMap__init]))(self) /* init on <self:HashMap[Object, nullable Object]>*/;
2030 }
2031 var = 0;
2032 self->attrs[COLOR_hash_collection__HashCollection___capacity].l = var; /* _capacity on <self:HashMap[Object, nullable Object]> */
2033 var1 = 0;
2034 self->attrs[COLOR_hash_collection__HashCollection___the_length].l = var1; /* _the_length on <self:HashMap[Object, nullable Object]> */
2035 var2 = 0;
2036 {
2037 hash_collection__HashCollection__enlarge(self, var2); /* Direct call hash_collection#HashCollection#enlarge on <self:HashMap[Object, nullable Object]>*/
2038 }
2039 RET_LABEL:;
2040 }
2041 /* method hash_collection#HashMap#init for (self: Object) */
2042 void VIRTUAL_hash_collection__HashMap__init(val* self) {
2043 hash_collection__HashMap__init(self); /* Direct call hash_collection#HashMap#init on <self:Object(HashMap[Object, nullable Object])>*/
2044 RET_LABEL:;
2045 }
2046 /* method hash_collection#HashMap#keys for (self: HashMap[Object, nullable Object]): RemovableCollection[Object] */
2047 val* hash_collection__HashMap__keys(val* self) {
2048 val* var /* : RemovableCollection[Object] */;
2049 val* var1 /* : RemovableCollection[Object] */;
2050 var1 = self->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <self:HashMap[Object, nullable Object]> */
2051 if (unlikely(var1 == NULL)) {
2052 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
2053 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 249);
2054 show_backtrace(1);
2055 }
2056 var = var1;
2057 RET_LABEL:;
2058 return var;
2059 }
2060 /* method hash_collection#HashMap#keys for (self: Object): Collection[Object] */
2061 val* VIRTUAL_hash_collection__HashMap__keys(val* self) {
2062 val* var /* : Collection[Object] */;
2063 val* var1 /* : RemovableCollection[Object] */;
2064 val* var3 /* : RemovableCollection[Object] */;
2065 { /* Inline hash_collection#HashMap#keys (self) on <self:Object(HashMap[Object, nullable Object])> */
2066 var3 = self->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <self:Object(HashMap[Object, nullable Object])> */
2067 if (unlikely(var3 == NULL)) {
2068 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
2069 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 249);
2070 show_backtrace(1);
2071 }
2072 var1 = var3;
2073 RET_LABEL2:(void)0;
2074 }
2075 var = var1;
2076 RET_LABEL:;
2077 return var;
2078 }
2079 /* method hash_collection#HashMap#values for (self: HashMap[Object, nullable Object]): RemovableCollection[nullable Object] */
2080 val* hash_collection__HashMap__values(val* self) {
2081 val* var /* : RemovableCollection[nullable Object] */;
2082 val* var1 /* : RemovableCollection[nullable Object] */;
2083 var1 = self->attrs[COLOR_hash_collection__HashMap___values].val; /* _values on <self:HashMap[Object, nullable Object]> */
2084 if (unlikely(var1 == NULL)) {
2085 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
2086 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 250);
2087 show_backtrace(1);
2088 }
2089 var = var1;
2090 RET_LABEL:;
2091 return var;
2092 }
2093 /* method hash_collection#HashMap#values for (self: Object): Collection[nullable Object] */
2094 val* VIRTUAL_hash_collection__HashMap__values(val* self) {
2095 val* var /* : Collection[nullable Object] */;
2096 val* var1 /* : RemovableCollection[nullable Object] */;
2097 val* var3 /* : RemovableCollection[nullable Object] */;
2098 { /* Inline hash_collection#HashMap#values (self) on <self:Object(HashMap[Object, nullable Object])> */
2099 var3 = self->attrs[COLOR_hash_collection__HashMap___values].val; /* _values on <self:Object(HashMap[Object, nullable Object])> */
2100 if (unlikely(var3 == NULL)) {
2101 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
2102 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 250);
2103 show_backtrace(1);
2104 }
2105 var1 = var3;
2106 RET_LABEL2:(void)0;
2107 }
2108 var = var1;
2109 RET_LABEL:;
2110 return var;
2111 }
2112 /* method hash_collection#HashMapKeys#map for (self: HashMapKeys[Object, nullable Object]): HashMap[Object, nullable Object] */
2113 val* hash_collection__HashMapKeys__map(val* self) {
2114 val* var /* : HashMap[Object, nullable Object] */;
2115 val* var1 /* : HashMap[Object, nullable Object] */;
2116 var1 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2117 if (unlikely(var1 == NULL)) {
2118 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2119 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2120 show_backtrace(1);
2121 }
2122 var = var1;
2123 RET_LABEL:;
2124 return var;
2125 }
2126 /* method hash_collection#HashMapKeys#map for (self: Object): HashMap[Object, nullable Object] */
2127 val* VIRTUAL_hash_collection__HashMapKeys__map(val* self) {
2128 val* var /* : HashMap[Object, nullable Object] */;
2129 val* var1 /* : HashMap[Object, nullable Object] */;
2130 val* var3 /* : HashMap[Object, nullable Object] */;
2131 { /* Inline hash_collection#HashMapKeys#map (self) on <self:Object(HashMapKeys[Object, nullable Object])> */
2132 var3 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:Object(HashMapKeys[Object, nullable Object])> */
2133 if (unlikely(var3 == NULL)) {
2134 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2135 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2136 show_backtrace(1);
2137 }
2138 var1 = var3;
2139 RET_LABEL2:(void)0;
2140 }
2141 var = var1;
2142 RET_LABEL:;
2143 return var;
2144 }
2145 /* method hash_collection#HashMapKeys#map= for (self: HashMapKeys[Object, nullable Object], HashMap[Object, nullable Object]) */
2146 void hash_collection__HashMapKeys__map_61d(val* self, val* p0) {
2147 short int var /* : Bool */;
2148 int cltype;
2149 int idtype;
2150 const struct type* type_struct;
2151 const char* var_class_name;
2152 /* Covariant cast for argument 0 (map) <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2153 /* <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2154 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMaphash_collection__HashMapKeys_FT0hash_collection__HashMapKeys_FT1];
2155 cltype = type_struct->color;
2156 idtype = type_struct->id;
2157 if(cltype >= p0->type->table_size) {
2158 var = 0;
2159 } else {
2160 var = p0->type->type_table[cltype] == idtype;
2161 }
2162 if (unlikely(!var)) {
2163 var_class_name = p0 == NULL ? "null" : p0->type->name;
2164 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap[K, V]", var_class_name);
2165 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2166 show_backtrace(1);
2167 }
2168 self->attrs[COLOR_hash_collection__HashMapKeys___map].val = p0; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2169 RET_LABEL:;
2170 }
2171 /* method hash_collection#HashMapKeys#map= for (self: Object, HashMap[Object, nullable Object]) */
2172 void VIRTUAL_hash_collection__HashMapKeys__map_61d(val* self, val* p0) {
2173 short int var /* : Bool */;
2174 int cltype;
2175 int idtype;
2176 const struct type* type_struct;
2177 const char* var_class_name;
2178 { /* Inline hash_collection#HashMapKeys#map= (self,p0) on <self:Object(HashMapKeys[Object, nullable Object])> */
2179 /* Covariant cast for argument 0 (map) <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2180 /* <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2181 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMaphash_collection__HashMapKeys_FT0hash_collection__HashMapKeys_FT1];
2182 cltype = type_struct->color;
2183 idtype = type_struct->id;
2184 if(cltype >= p0->type->table_size) {
2185 var = 0;
2186 } else {
2187 var = p0->type->type_table[cltype] == idtype;
2188 }
2189 if (unlikely(!var)) {
2190 var_class_name = p0 == NULL ? "null" : p0->type->name;
2191 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap[K, V]", var_class_name);
2192 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2193 show_backtrace(1);
2194 }
2195 self->attrs[COLOR_hash_collection__HashMapKeys___map].val = p0; /* _map on <self:Object(HashMapKeys[Object, nullable Object])> */
2196 RET_LABEL1:(void)0;
2197 }
2198 RET_LABEL:;
2199 }
2200 /* method hash_collection#HashMapKeys#first for (self: HashMapKeys[Object, nullable Object]): Object */
2201 val* hash_collection__HashMapKeys__first(val* self) {
2202 val* var /* : Object */;
2203 val* var1 /* : HashMap[Object, nullable Object] */;
2204 val* var3 /* : HashMap[Object, nullable Object] */;
2205 val* var4 /* : nullable HashNode[Object] */;
2206 val* var5 /* : Object */;
2207 {
2208 { /* Inline hash_collection#HashMapKeys#map (self) on <self:HashMapKeys[Object, nullable Object]> */
2209 var3 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2210 if (unlikely(var3 == NULL)) {
2211 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2212 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2213 show_backtrace(1);
2214 }
2215 var1 = var3;
2216 RET_LABEL2:(void)0;
2217 }
2218 }
2219 var4 = var1->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <var1:HashMap[Object, nullable Object]> */
2220 if (unlikely(var4 == NULL)) {
2221 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2222 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 260);
2223 show_backtrace(1);
2224 }
2225 var5 = var4->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var4:nullable HashNode[Object](nullable HashMapNode[Object, nullable Object])> */
2226 if (unlikely(var5 == NULL)) {
2227 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
2228 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 260);
2229 show_backtrace(1);
2230 }
2231 var = var5;
2232 goto RET_LABEL;
2233 RET_LABEL:;
2234 return var;
2235 }
2236 /* method hash_collection#HashMapKeys#first for (self: Object): nullable Object */
2237 val* VIRTUAL_hash_collection__HashMapKeys__first(val* self) {
2238 val* var /* : nullable Object */;
2239 val* var1 /* : Object */;
2240 var1 = hash_collection__HashMapKeys__first(self);
2241 var = var1;
2242 RET_LABEL:;
2243 return var;
2244 }
2245 /* method hash_collection#HashMapKeys#has for (self: HashMapKeys[Object, nullable Object], Object): Bool */
2246 short int hash_collection__HashMapKeys__has(val* self, val* p0) {
2247 short int var /* : Bool */;
2248 short int var1 /* : Bool */;
2249 int cltype;
2250 int idtype;
2251 const struct type* type_struct;
2252 const char* var_class_name;
2253 val* var_k /* var k: Object */;
2254 val* var2 /* : HashMap[Object, nullable Object] */;
2255 val* var4 /* : HashMap[Object, nullable Object] */;
2256 val* var5 /* : nullable HashNode[Object] */;
2257 val* var6 /* : null */;
2258 short int var7 /* : Bool */;
2259 short int var8 /* : Bool */;
2260 val* var_other /* var other: nullable Object */;
2261 short int var10 /* : Bool */;
2262 short int var11 /* : Bool */;
2263 short int var12 /* : Bool */;
2264 /* Covariant cast for argument 0 (k) <p0:Object> isa E */
2265 /* <p0:Object> isa E */
2266 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
2267 cltype = type_struct->color;
2268 idtype = type_struct->id;
2269 if(cltype >= p0->type->table_size) {
2270 var1 = 0;
2271 } else {
2272 var1 = p0->type->type_table[cltype] == idtype;
2273 }
2274 if (unlikely(!var1)) {
2275 var_class_name = p0 == NULL ? "null" : p0->type->name;
2276 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2277 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 261);
2278 show_backtrace(1);
2279 }
2280 var_k = p0;
2281 {
2282 { /* Inline hash_collection#HashMapKeys#map (self) on <self:HashMapKeys[Object, nullable Object]> */
2283 var4 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2284 if (unlikely(var4 == NULL)) {
2285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2286 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2287 show_backtrace(1);
2288 }
2289 var2 = var4;
2290 RET_LABEL3:(void)0;
2291 }
2292 }
2293 {
2294 var5 = hash_collection__HashCollection__node_at(var2, var_k);
2295 }
2296 var6 = NULL;
2297 if (var5 == NULL) {
2298 var7 = 0; /* is null */
2299 } else {
2300 var7 = 1; /* arg is null and recv is not */
2301 }
2302 if (0) {
2303 { /* Inline kernel#Object#!= (var5,var6) on <var5:nullable HashNode[Object](nullable HashMapNode[Object, nullable Object])> */
2304 var_other = var6;
2305 {
2306 var11 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_other) /* == on <var5:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])>*/;
2307 var10 = var11;
2308 }
2309 var12 = !var10;
2310 var8 = var12;
2311 goto RET_LABEL9;
2312 RET_LABEL9:(void)0;
2313 }
2314 var7 = var8;
2315 }
2316 var = var7;
2317 goto RET_LABEL;
2318 RET_LABEL:;
2319 return var;
2320 }
2321 /* method hash_collection#HashMapKeys#has for (self: Object, nullable Object): Bool */
2322 short int VIRTUAL_hash_collection__HashMapKeys__has(val* self, val* p0) {
2323 short int var /* : Bool */;
2324 short int var1 /* : Bool */;
2325 var1 = hash_collection__HashMapKeys__has(self, p0);
2326 var = var1;
2327 RET_LABEL:;
2328 return var;
2329 }
2330 /* method hash_collection#HashMapKeys#is_empty for (self: HashMapKeys[Object, nullable Object]): Bool */
2331 short int hash_collection__HashMapKeys__is_empty(val* self) {
2332 short int var /* : Bool */;
2333 val* var1 /* : HashMap[Object, nullable Object] */;
2334 val* var3 /* : HashMap[Object, nullable Object] */;
2335 short int var4 /* : Bool */;
2336 {
2337 { /* Inline hash_collection#HashMapKeys#map (self) on <self:HashMapKeys[Object, nullable Object]> */
2338 var3 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2339 if (unlikely(var3 == NULL)) {
2340 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2341 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2342 show_backtrace(1);
2343 }
2344 var1 = var3;
2345 RET_LABEL2:(void)0;
2346 }
2347 }
2348 {
2349 var4 = hash_collection__HashMap__is_empty(var1);
2350 }
2351 var = var4;
2352 goto RET_LABEL;
2353 RET_LABEL:;
2354 return var;
2355 }
2356 /* method hash_collection#HashMapKeys#is_empty for (self: Object): Bool */
2357 short int VIRTUAL_hash_collection__HashMapKeys__is_empty(val* self) {
2358 short int var /* : Bool */;
2359 short int var1 /* : Bool */;
2360 var1 = hash_collection__HashMapKeys__is_empty(self);
2361 var = var1;
2362 RET_LABEL:;
2363 return var;
2364 }
2365 /* method hash_collection#HashMapKeys#length for (self: HashMapKeys[Object, nullable Object]): Int */
2366 long hash_collection__HashMapKeys__length(val* self) {
2367 long var /* : Int */;
2368 val* var1 /* : HashMap[Object, nullable Object] */;
2369 val* var3 /* : HashMap[Object, nullable Object] */;
2370 long var4 /* : Int */;
2371 {
2372 { /* Inline hash_collection#HashMapKeys#map (self) on <self:HashMapKeys[Object, nullable Object]> */
2373 var3 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2374 if (unlikely(var3 == NULL)) {
2375 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2376 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2377 show_backtrace(1);
2378 }
2379 var1 = var3;
2380 RET_LABEL2:(void)0;
2381 }
2382 }
2383 {
2384 var4 = hash_collection__HashMap__length(var1);
2385 }
2386 var = var4;
2387 goto RET_LABEL;
2388 RET_LABEL:;
2389 return var;
2390 }
2391 /* method hash_collection#HashMapKeys#length for (self: Object): Int */
2392 long VIRTUAL_hash_collection__HashMapKeys__length(val* self) {
2393 long var /* : Int */;
2394 long var1 /* : Int */;
2395 var1 = hash_collection__HashMapKeys__length(self);
2396 var = var1;
2397 RET_LABEL:;
2398 return var;
2399 }
2400 /* method hash_collection#HashMapKeys#iterator for (self: HashMapKeys[Object, nullable Object]): Iterator[Object] */
2401 val* hash_collection__HashMapKeys__iterator(val* self) {
2402 val* var /* : Iterator[Object] */;
2403 val* var1 /* : MapKeysIterator[Object, nullable Object] */;
2404 val* var2 /* : HashMap[Object, nullable Object] */;
2405 val* var4 /* : HashMap[Object, nullable Object] */;
2406 val* var5 /* : HashMapIterator[Object, nullable Object] */;
2407 var1 = NEW_abstract_collection__MapKeysIterator(self->type->resolution_table->types[COLOR_abstract_collection__MapKeysIteratorhash_collection__HashMapKeys_FT0hash_collection__HashMapKeys_FT1]);
2408 {
2409 { /* Inline hash_collection#HashMapKeys#map (self) on <self:HashMapKeys[Object, nullable Object]> */
2410 var4 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2411 if (unlikely(var4 == NULL)) {
2412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2413 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2414 show_backtrace(1);
2415 }
2416 var2 = var4;
2417 RET_LABEL3:(void)0;
2418 }
2419 }
2420 {
2421 var5 = hash_collection__HashMap__iterator(var2);
2422 }
2423 {
2424 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapKeysIterator__original_iterator_61d]))(var1, var5) /* original_iterator= on <var1:MapKeysIterator[Object, nullable Object]>*/;
2425 }
2426 {
2427 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:MapKeysIterator[Object, nullable Object]>*/;
2428 }
2429 var = var1;
2430 goto RET_LABEL;
2431 RET_LABEL:;
2432 return var;
2433 }
2434 /* method hash_collection#HashMapKeys#iterator for (self: Object): Iterator[nullable Object] */
2435 val* VIRTUAL_hash_collection__HashMapKeys__iterator(val* self) {
2436 val* var /* : Iterator[nullable Object] */;
2437 val* var1 /* : Iterator[Object] */;
2438 var1 = hash_collection__HashMapKeys__iterator(self);
2439 var = var1;
2440 RET_LABEL:;
2441 return var;
2442 }
2443 /* method hash_collection#HashMapKeys#clear for (self: HashMapKeys[Object, nullable Object]) */
2444 void hash_collection__HashMapKeys__clear(val* self) {
2445 val* var /* : HashMap[Object, nullable Object] */;
2446 val* var2 /* : HashMap[Object, nullable Object] */;
2447 {
2448 { /* Inline hash_collection#HashMapKeys#map (self) on <self:HashMapKeys[Object, nullable Object]> */
2449 var2 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2450 if (unlikely(var2 == NULL)) {
2451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2452 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2453 show_backtrace(1);
2454 }
2455 var = var2;
2456 RET_LABEL1:(void)0;
2457 }
2458 }
2459 {
2460 hash_collection__HashMap__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, nullable Object]>*/
2461 }
2462 RET_LABEL:;
2463 }
2464 /* method hash_collection#HashMapKeys#clear for (self: Object) */
2465 void VIRTUAL_hash_collection__HashMapKeys__clear(val* self) {
2466 hash_collection__HashMapKeys__clear(self); /* Direct call hash_collection#HashMapKeys#clear on <self:Object(HashMapKeys[Object, nullable Object])>*/
2467 RET_LABEL:;
2468 }
2469 /* method hash_collection#HashMapKeys#remove for (self: HashMapKeys[Object, nullable Object], Object) */
2470 void hash_collection__HashMapKeys__remove(val* self, val* p0) {
2471 short int var /* : Bool */;
2472 int cltype;
2473 int idtype;
2474 const struct type* type_struct;
2475 const char* var_class_name;
2476 val* var_key /* var key: Object */;
2477 val* var1 /* : HashMap[Object, nullable Object] */;
2478 val* var3 /* : HashMap[Object, nullable Object] */;
2479 /* Covariant cast for argument 0 (key) <p0:Object> isa E */
2480 /* <p0:Object> isa E */
2481 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
2482 cltype = type_struct->color;
2483 idtype = type_struct->id;
2484 if(cltype >= p0->type->table_size) {
2485 var = 0;
2486 } else {
2487 var = p0->type->type_table[cltype] == idtype;
2488 }
2489 if (unlikely(!var)) {
2490 var_class_name = p0 == NULL ? "null" : p0->type->name;
2491 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2492 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 270);
2493 show_backtrace(1);
2494 }
2495 var_key = p0;
2496 {
2497 { /* Inline hash_collection#HashMapKeys#map (self) on <self:HashMapKeys[Object, nullable Object]> */
2498 var3 = self->attrs[COLOR_hash_collection__HashMapKeys___map].val; /* _map on <self:HashMapKeys[Object, nullable Object]> */
2499 if (unlikely(var3 == NULL)) {
2500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2501 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 256);
2502 show_backtrace(1);
2503 }
2504 var1 = var3;
2505 RET_LABEL2:(void)0;
2506 }
2507 }
2508 {
2509 hash_collection__HashCollection__remove_node(var1, var_key); /* Direct call hash_collection#HashCollection#remove_node on <var1:HashMap[Object, nullable Object]>*/
2510 }
2511 RET_LABEL:;
2512 }
2513 /* method hash_collection#HashMapKeys#remove for (self: Object, nullable Object) */
2514 void VIRTUAL_hash_collection__HashMapKeys__remove(val* self, val* p0) {
2515 hash_collection__HashMapKeys__remove(self, p0); /* Direct call hash_collection#HashMapKeys#remove on <self:Object(HashMapKeys[Object, nullable Object])>*/
2516 RET_LABEL:;
2517 }
2518 /* method hash_collection#HashMapKeys#init for (self: HashMapKeys[Object, nullable Object]) */
2519 void hash_collection__HashMapKeys__init(val* self) {
2520 {
2521 ((void (*)(val*))(self->class->vft[COLOR_hash_collection__HashMapKeys__init]))(self) /* init on <self:HashMapKeys[Object, nullable Object]>*/;
2522 }
2523 RET_LABEL:;
2524 }
2525 /* method hash_collection#HashMapKeys#init for (self: Object) */
2526 void VIRTUAL_hash_collection__HashMapKeys__init(val* self) {
2527 { /* Inline hash_collection#HashMapKeys#init (self) on <self:Object(HashMapKeys[Object, nullable Object])> */
2528 {
2529 ((void (*)(val*))(self->class->vft[COLOR_hash_collection__HashMapKeys__init]))(self) /* init on <self:Object(HashMapKeys[Object, nullable Object])>*/;
2530 }
2531 RET_LABEL1:(void)0;
2532 }
2533 RET_LABEL:;
2534 }
2535 /* method hash_collection#HashMapValues#map for (self: HashMapValues[Object, nullable Object]): HashMap[Object, nullable Object] */
2536 val* hash_collection__HashMapValues__map(val* self) {
2537 val* var /* : HashMap[Object, nullable Object] */;
2538 val* var1 /* : HashMap[Object, nullable Object] */;
2539 var1 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2540 if (unlikely(var1 == NULL)) {
2541 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2542 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2543 show_backtrace(1);
2544 }
2545 var = var1;
2546 RET_LABEL:;
2547 return var;
2548 }
2549 /* method hash_collection#HashMapValues#map for (self: Object): HashMap[Object, nullable Object] */
2550 val* VIRTUAL_hash_collection__HashMapValues__map(val* self) {
2551 val* var /* : HashMap[Object, nullable Object] */;
2552 val* var1 /* : HashMap[Object, nullable Object] */;
2553 val* var3 /* : HashMap[Object, nullable Object] */;
2554 { /* Inline hash_collection#HashMapValues#map (self) on <self:Object(HashMapValues[Object, nullable Object])> */
2555 var3 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:Object(HashMapValues[Object, nullable Object])> */
2556 if (unlikely(var3 == NULL)) {
2557 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2558 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2559 show_backtrace(1);
2560 }
2561 var1 = var3;
2562 RET_LABEL2:(void)0;
2563 }
2564 var = var1;
2565 RET_LABEL:;
2566 return var;
2567 }
2568 /* method hash_collection#HashMapValues#map= for (self: HashMapValues[Object, nullable Object], HashMap[Object, nullable Object]) */
2569 void hash_collection__HashMapValues__map_61d(val* self, val* p0) {
2570 short int var /* : Bool */;
2571 int cltype;
2572 int idtype;
2573 const struct type* type_struct;
2574 const char* var_class_name;
2575 /* Covariant cast for argument 0 (map) <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2576 /* <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2577 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMaphash_collection__HashMapValues_FT0hash_collection__HashMapValues_FT1];
2578 cltype = type_struct->color;
2579 idtype = type_struct->id;
2580 if(cltype >= p0->type->table_size) {
2581 var = 0;
2582 } else {
2583 var = p0->type->type_table[cltype] == idtype;
2584 }
2585 if (unlikely(!var)) {
2586 var_class_name = p0 == NULL ? "null" : p0->type->name;
2587 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap[K, V]", var_class_name);
2588 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2589 show_backtrace(1);
2590 }
2591 self->attrs[COLOR_hash_collection__HashMapValues___map].val = p0; /* _map on <self:HashMapValues[Object, nullable Object]> */
2592 RET_LABEL:;
2593 }
2594 /* method hash_collection#HashMapValues#map= for (self: Object, HashMap[Object, nullable Object]) */
2595 void VIRTUAL_hash_collection__HashMapValues__map_61d(val* self, val* p0) {
2596 short int var /* : Bool */;
2597 int cltype;
2598 int idtype;
2599 const struct type* type_struct;
2600 const char* var_class_name;
2601 { /* Inline hash_collection#HashMapValues#map= (self,p0) on <self:Object(HashMapValues[Object, nullable Object])> */
2602 /* Covariant cast for argument 0 (map) <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2603 /* <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
2604 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMaphash_collection__HashMapValues_FT0hash_collection__HashMapValues_FT1];
2605 cltype = type_struct->color;
2606 idtype = type_struct->id;
2607 if(cltype >= p0->type->table_size) {
2608 var = 0;
2609 } else {
2610 var = p0->type->type_table[cltype] == idtype;
2611 }
2612 if (unlikely(!var)) {
2613 var_class_name = p0 == NULL ? "null" : p0->type->name;
2614 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap[K, V]", var_class_name);
2615 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2616 show_backtrace(1);
2617 }
2618 self->attrs[COLOR_hash_collection__HashMapValues___map].val = p0; /* _map on <self:Object(HashMapValues[Object, nullable Object])> */
2619 RET_LABEL1:(void)0;
2620 }
2621 RET_LABEL:;
2622 }
2623 /* method hash_collection#HashMapValues#first for (self: HashMapValues[Object, nullable Object]): nullable Object */
2624 val* hash_collection__HashMapValues__first(val* self) {
2625 val* var /* : nullable Object */;
2626 val* var1 /* : HashMap[Object, nullable Object] */;
2627 val* var3 /* : HashMap[Object, nullable Object] */;
2628 val* var4 /* : nullable HashNode[Object] */;
2629 val* var5 /* : nullable Object */;
2630 {
2631 { /* Inline hash_collection#HashMapValues#map (self) on <self:HashMapValues[Object, nullable Object]> */
2632 var3 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2633 if (unlikely(var3 == NULL)) {
2634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2635 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2636 show_backtrace(1);
2637 }
2638 var1 = var3;
2639 RET_LABEL2:(void)0;
2640 }
2641 }
2642 var4 = var1->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <var1:HashMap[Object, nullable Object]> */
2643 if (unlikely(var4 == NULL)) {
2644 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2645 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 290);
2646 show_backtrace(1);
2647 }
2648 var5 = var4->attrs[COLOR_hash_collection__HashMapNode___value].val; /* _value on <var4:nullable HashNode[Object](nullable HashMapNode[Object, nullable Object])> */
2649 var = var5;
2650 goto RET_LABEL;
2651 RET_LABEL:;
2652 return var;
2653 }
2654 /* method hash_collection#HashMapValues#first for (self: Object): nullable Object */
2655 val* VIRTUAL_hash_collection__HashMapValues__first(val* self) {
2656 val* var /* : nullable Object */;
2657 val* var1 /* : nullable Object */;
2658 var1 = hash_collection__HashMapValues__first(self);
2659 var = var1;
2660 RET_LABEL:;
2661 return var;
2662 }
2663 /* method hash_collection#HashMapValues#has for (self: HashMapValues[Object, nullable Object], nullable Object): Bool */
2664 short int hash_collection__HashMapValues__has(val* self, val* p0) {
2665 short int var /* : Bool */;
2666 short int var1 /* : Bool */;
2667 int cltype;
2668 int idtype;
2669 const struct type* type_struct;
2670 short int is_nullable;
2671 const char* var_class_name;
2672 val* var_item /* var item: nullable Object */;
2673 val* var2 /* : HashMap[Object, nullable Object] */;
2674 val* var4 /* : HashMap[Object, nullable Object] */;
2675 val* var5 /* : nullable HashNode[Object] */;
2676 val* var_c /* var c: nullable HashMapNode[Object, nullable Object] */;
2677 val* var6 /* : null */;
2678 short int var7 /* : Bool */;
2679 short int var8 /* : Bool */;
2680 val* var_other /* var other: nullable Object */;
2681 short int var10 /* : Bool */;
2682 short int var11 /* : Bool */;
2683 short int var12 /* : Bool */;
2684 val* var13 /* : nullable Object */;
2685 short int var14 /* : Bool */;
2686 short int var15 /* : Bool */;
2687 short int var16 /* : Bool */;
2688 val* var17 /* : nullable HashNode[Object] */;
2689 short int var18 /* : Bool */;
2690 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa E */
2691 /* <p0:nullable Object> isa E */
2692 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
2693 cltype = type_struct->color;
2694 idtype = type_struct->id;
2695 is_nullable = type_struct->is_nullable;
2696 if(p0 == NULL) {
2697 var1 = is_nullable;
2698 } else {
2699 if(cltype >= p0->type->table_size) {
2700 var1 = 0;
2701 } else {
2702 var1 = p0->type->type_table[cltype] == idtype;
2703 }
2704 }
2705 if (unlikely(!var1)) {
2706 var_class_name = p0 == NULL ? "null" : p0->type->name;
2707 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2708 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 292);
2709 show_backtrace(1);
2710 }
2711 var_item = p0;
2712 {
2713 { /* Inline hash_collection#HashMapValues#map (self) on <self:HashMapValues[Object, nullable Object]> */
2714 var4 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2715 if (unlikely(var4 == NULL)) {
2716 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2717 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2718 show_backtrace(1);
2719 }
2720 var2 = var4;
2721 RET_LABEL3:(void)0;
2722 }
2723 }
2724 var5 = var2->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <var2:HashMap[Object, nullable Object]> */
2725 var_c = var5;
2726 for(;;) {
2727 var6 = NULL;
2728 if (var_c == NULL) {
2729 var7 = 0; /* is null */
2730 } else {
2731 var7 = 1; /* arg is null and recv is not */
2732 }
2733 if (0) {
2734 { /* Inline kernel#Object#!= (var_c,var6) on <var_c:nullable HashMapNode[Object, nullable Object]> */
2735 var_other = var6;
2736 {
2737 var11 = ((short int (*)(val*, val*))(var_c->class->vft[COLOR_kernel__Object___61d_61d]))(var_c, var_other) /* == on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])>*/;
2738 var10 = var11;
2739 }
2740 var12 = !var10;
2741 var8 = var12;
2742 goto RET_LABEL9;
2743 RET_LABEL9:(void)0;
2744 }
2745 var7 = var8;
2746 }
2747 if (var7){
2748 var13 = var_c->attrs[COLOR_hash_collection__HashMapNode___value].val; /* _value on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
2749 if (var13 == NULL) {
2750 var14 = (var_item == NULL);
2751 } else {
2752 var15 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var_item) /* == on <var13:nullable Object>*/;
2753 var14 = var15;
2754 }
2755 if (var14){
2756 var16 = 1;
2757 var = var16;
2758 goto RET_LABEL;
2759 } else {
2760 }
2761 var17 = var_c->attrs[COLOR_hash_collection__HashNode___next_item].val; /* _next_item on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
2762 var_c = var17;
2763 } else {
2764 goto BREAK_label;
2765 }
2766 }
2767 BREAK_label: (void)0;
2768 var18 = 0;
2769 var = var18;
2770 goto RET_LABEL;
2771 RET_LABEL:;
2772 return var;
2773 }
2774 /* method hash_collection#HashMapValues#has for (self: Object, nullable Object): Bool */
2775 short int VIRTUAL_hash_collection__HashMapValues__has(val* self, val* p0) {
2776 short int var /* : Bool */;
2777 short int var1 /* : Bool */;
2778 var1 = hash_collection__HashMapValues__has(self, p0);
2779 var = var1;
2780 RET_LABEL:;
2781 return var;
2782 }
2783 /* method hash_collection#HashMapValues#is_empty for (self: HashMapValues[Object, nullable Object]): Bool */
2784 short int hash_collection__HashMapValues__is_empty(val* self) {
2785 short int var /* : Bool */;
2786 val* var1 /* : HashMap[Object, nullable Object] */;
2787 val* var3 /* : HashMap[Object, nullable Object] */;
2788 short int var4 /* : Bool */;
2789 {
2790 { /* Inline hash_collection#HashMapValues#map (self) on <self:HashMapValues[Object, nullable Object]> */
2791 var3 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2792 if (unlikely(var3 == NULL)) {
2793 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2794 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2795 show_backtrace(1);
2796 }
2797 var1 = var3;
2798 RET_LABEL2:(void)0;
2799 }
2800 }
2801 {
2802 var4 = hash_collection__HashMap__is_empty(var1);
2803 }
2804 var = var4;
2805 goto RET_LABEL;
2806 RET_LABEL:;
2807 return var;
2808 }
2809 /* method hash_collection#HashMapValues#is_empty for (self: Object): Bool */
2810 short int VIRTUAL_hash_collection__HashMapValues__is_empty(val* self) {
2811 short int var /* : Bool */;
2812 short int var1 /* : Bool */;
2813 var1 = hash_collection__HashMapValues__is_empty(self);
2814 var = var1;
2815 RET_LABEL:;
2816 return var;
2817 }
2818 /* method hash_collection#HashMapValues#length for (self: HashMapValues[Object, nullable Object]): Int */
2819 long hash_collection__HashMapValues__length(val* self) {
2820 long var /* : Int */;
2821 val* var1 /* : HashMap[Object, nullable Object] */;
2822 val* var3 /* : HashMap[Object, nullable Object] */;
2823 long var4 /* : Int */;
2824 {
2825 { /* Inline hash_collection#HashMapValues#map (self) on <self:HashMapValues[Object, nullable Object]> */
2826 var3 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2827 if (unlikely(var3 == NULL)) {
2828 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2829 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2830 show_backtrace(1);
2831 }
2832 var1 = var3;
2833 RET_LABEL2:(void)0;
2834 }
2835 }
2836 {
2837 var4 = hash_collection__HashMap__length(var1);
2838 }
2839 var = var4;
2840 goto RET_LABEL;
2841 RET_LABEL:;
2842 return var;
2843 }
2844 /* method hash_collection#HashMapValues#length for (self: Object): Int */
2845 long VIRTUAL_hash_collection__HashMapValues__length(val* self) {
2846 long var /* : Int */;
2847 long var1 /* : Int */;
2848 var1 = hash_collection__HashMapValues__length(self);
2849 var = var1;
2850 RET_LABEL:;
2851 return var;
2852 }
2853 /* method hash_collection#HashMapValues#iterator for (self: HashMapValues[Object, nullable Object]): Iterator[nullable Object] */
2854 val* hash_collection__HashMapValues__iterator(val* self) {
2855 val* var /* : Iterator[nullable Object] */;
2856 val* var1 /* : MapValuesIterator[Object, nullable Object] */;
2857 val* var2 /* : HashMap[Object, nullable Object] */;
2858 val* var4 /* : HashMap[Object, nullable Object] */;
2859 val* var5 /* : HashMapIterator[Object, nullable Object] */;
2860 var1 = NEW_abstract_collection__MapValuesIterator(self->type->resolution_table->types[COLOR_abstract_collection__MapValuesIteratorhash_collection__HashMapValues_FT0hash_collection__HashMapValues_FT1]);
2861 {
2862 { /* Inline hash_collection#HashMapValues#map (self) on <self:HashMapValues[Object, nullable Object]> */
2863 var4 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2864 if (unlikely(var4 == NULL)) {
2865 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2866 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2867 show_backtrace(1);
2868 }
2869 var2 = var4;
2870 RET_LABEL3:(void)0;
2871 }
2872 }
2873 {
2874 var5 = hash_collection__HashMap__iterator(var2);
2875 }
2876 {
2877 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapValuesIterator__original_iterator_61d]))(var1, var5) /* original_iterator= on <var1:MapValuesIterator[Object, nullable Object]>*/;
2878 }
2879 {
2880 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:MapValuesIterator[Object, nullable Object]>*/;
2881 }
2882 var = var1;
2883 goto RET_LABEL;
2884 RET_LABEL:;
2885 return var;
2886 }
2887 /* method hash_collection#HashMapValues#iterator for (self: Object): Iterator[nullable Object] */
2888 val* VIRTUAL_hash_collection__HashMapValues__iterator(val* self) {
2889 val* var /* : Iterator[nullable Object] */;
2890 val* var1 /* : Iterator[nullable Object] */;
2891 var1 = hash_collection__HashMapValues__iterator(self);
2892 var = var1;
2893 RET_LABEL:;
2894 return var;
2895 }
2896 /* method hash_collection#HashMapValues#clear for (self: HashMapValues[Object, nullable Object]) */
2897 void hash_collection__HashMapValues__clear(val* self) {
2898 val* var /* : HashMap[Object, nullable Object] */;
2899 val* var2 /* : HashMap[Object, nullable Object] */;
2900 {
2901 { /* Inline hash_collection#HashMapValues#map (self) on <self:HashMapValues[Object, nullable Object]> */
2902 var2 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2903 if (unlikely(var2 == NULL)) {
2904 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2905 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2906 show_backtrace(1);
2907 }
2908 var = var2;
2909 RET_LABEL1:(void)0;
2910 }
2911 }
2912 {
2913 hash_collection__HashMap__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, nullable Object]>*/
2914 }
2915 RET_LABEL:;
2916 }
2917 /* method hash_collection#HashMapValues#clear for (self: Object) */
2918 void VIRTUAL_hash_collection__HashMapValues__clear(val* self) {
2919 hash_collection__HashMapValues__clear(self); /* Direct call hash_collection#HashMapValues#clear on <self:Object(HashMapValues[Object, nullable Object])>*/
2920 RET_LABEL:;
2921 }
2922 /* method hash_collection#HashMapValues#remove for (self: HashMapValues[Object, nullable Object], nullable Object) */
2923 void hash_collection__HashMapValues__remove(val* self, val* p0) {
2924 short int var /* : Bool */;
2925 int cltype;
2926 int idtype;
2927 const struct type* type_struct;
2928 short int is_nullable;
2929 const char* var_class_name;
2930 val* var_item /* var item: nullable Object */;
2931 val* var1 /* : HashMap[Object, nullable Object] */;
2932 val* var3 /* : HashMap[Object, nullable Object] */;
2933 val* var_map /* var map: HashMap[Object, nullable Object] */;
2934 val* var4 /* : nullable HashNode[Object] */;
2935 val* var_c /* var c: nullable HashMapNode[Object, nullable Object] */;
2936 val* var5 /* : null */;
2937 short int var6 /* : Bool */;
2938 short int var7 /* : Bool */;
2939 val* var_other /* var other: nullable Object */;
2940 short int var9 /* : Bool */;
2941 short int var10 /* : Bool */;
2942 short int var11 /* : Bool */;
2943 val* var12 /* : nullable Object */;
2944 short int var13 /* : Bool */;
2945 short int var14 /* : Bool */;
2946 val* var15 /* : Object */;
2947 val* var16 /* : nullable HashNode[Object] */;
2948 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa E */
2949 /* <p0:nullable Object> isa E */
2950 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
2951 cltype = type_struct->color;
2952 idtype = type_struct->id;
2953 is_nullable = type_struct->is_nullable;
2954 if(p0 == NULL) {
2955 var = is_nullable;
2956 } else {
2957 if(cltype >= p0->type->table_size) {
2958 var = 0;
2959 } else {
2960 var = p0->type->type_table[cltype] == idtype;
2961 }
2962 }
2963 if (unlikely(!var)) {
2964 var_class_name = p0 == NULL ? "null" : p0->type->name;
2965 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2966 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 319);
2967 show_backtrace(1);
2968 }
2969 var_item = p0;
2970 {
2971 { /* Inline hash_collection#HashMapValues#map (self) on <self:HashMapValues[Object, nullable Object]> */
2972 var3 = self->attrs[COLOR_hash_collection__HashMapValues___map].val; /* _map on <self:HashMapValues[Object, nullable Object]> */
2973 if (unlikely(var3 == NULL)) {
2974 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
2975 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 277);
2976 show_backtrace(1);
2977 }
2978 var1 = var3;
2979 RET_LABEL2:(void)0;
2980 }
2981 }
2982 var_map = var1;
2983 var4 = var_map->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <var_map:HashMap[Object, nullable Object]> */
2984 var_c = var4;
2985 for(;;) {
2986 var5 = NULL;
2987 if (var_c == NULL) {
2988 var6 = 0; /* is null */
2989 } else {
2990 var6 = 1; /* arg is null and recv is not */
2991 }
2992 if (0) {
2993 { /* Inline kernel#Object#!= (var_c,var5) on <var_c:nullable HashMapNode[Object, nullable Object]> */
2994 var_other = var5;
2995 {
2996 var10 = ((short int (*)(val*, val*))(var_c->class->vft[COLOR_kernel__Object___61d_61d]))(var_c, var_other) /* == on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])>*/;
2997 var9 = var10;
2998 }
2999 var11 = !var9;
3000 var7 = var11;
3001 goto RET_LABEL8;
3002 RET_LABEL8:(void)0;
3003 }
3004 var6 = var7;
3005 }
3006 if (var6){
3007 var12 = var_c->attrs[COLOR_hash_collection__HashMapNode___value].val; /* _value on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
3008 if (var12 == NULL) {
3009 var13 = (var_item == NULL);
3010 } else {
3011 var14 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_item) /* == on <var12:nullable Object>*/;
3012 var13 = var14;
3013 }
3014 if (var13){
3015 var15 = var_c->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
3016 if (unlikely(var15 == NULL)) {
3017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
3018 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 325);
3019 show_backtrace(1);
3020 }
3021 {
3022 hash_collection__HashCollection__remove_node(var_map, var15); /* Direct call hash_collection#HashCollection#remove_node on <var_map:HashMap[Object, nullable Object]>*/
3023 }
3024 goto RET_LABEL;
3025 } else {
3026 }
3027 var16 = var_c->attrs[COLOR_hash_collection__HashNode___next_item].val; /* _next_item on <var_c:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])> */
3028 var_c = var16;
3029 } else {
3030 goto BREAK_label;
3031 }
3032 }
3033 BREAK_label: (void)0;
3034 RET_LABEL:;
3035 }
3036 /* method hash_collection#HashMapValues#remove for (self: Object, nullable Object) */
3037 void VIRTUAL_hash_collection__HashMapValues__remove(val* self, val* p0) {
3038 hash_collection__HashMapValues__remove(self, p0); /* Direct call hash_collection#HashMapValues#remove on <self:Object(HashMapValues[Object, nullable Object])>*/
3039 RET_LABEL:;
3040 }
3041 /* method hash_collection#HashMapValues#init for (self: HashMapValues[Object, nullable Object]) */
3042 void hash_collection__HashMapValues__init(val* self) {
3043 {
3044 ((void (*)(val*))(self->class->vft[COLOR_hash_collection__HashMapValues__init]))(self) /* init on <self:HashMapValues[Object, nullable Object]>*/;
3045 }
3046 RET_LABEL:;
3047 }
3048 /* method hash_collection#HashMapValues#init for (self: Object) */
3049 void VIRTUAL_hash_collection__HashMapValues__init(val* self) {
3050 { /* Inline hash_collection#HashMapValues#init (self) on <self:Object(HashMapValues[Object, nullable Object])> */
3051 {
3052 ((void (*)(val*))(self->class->vft[COLOR_hash_collection__HashMapValues__init]))(self) /* init on <self:Object(HashMapValues[Object, nullable Object])>*/;
3053 }
3054 RET_LABEL1:(void)0;
3055 }
3056 RET_LABEL:;
3057 }
3058 /* method hash_collection#HashMapNode#init for (self: HashMapNode[Object, nullable Object], Object, nullable Object) */
3059 void hash_collection__HashMapNode__init(val* self, val* p0, val* p1) {
3060 short int var /* : Bool */;
3061 int cltype;
3062 int idtype;
3063 const struct type* type_struct;
3064 const char* var_class_name;
3065 short int var1 /* : Bool */;
3066 int cltype2;
3067 int idtype3;
3068 const struct type* type_struct4;
3069 short int is_nullable;
3070 const char* var_class_name5;
3071 val* var_k /* var k: Object */;
3072 val* var_v /* var v: nullable Object */;
3073 /* Covariant cast for argument 0 (k) <p0:Object> isa K */
3074 /* <p0:Object> isa K */
3075 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMapNode_FT0];
3076 cltype = type_struct->color;
3077 idtype = type_struct->id;
3078 if(cltype >= p0->type->table_size) {
3079 var = 0;
3080 } else {
3081 var = p0->type->type_table[cltype] == idtype;
3082 }
3083 if (unlikely(!var)) {
3084 var_class_name = p0 == NULL ? "null" : p0->type->name;
3085 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name);
3086 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 350);
3087 show_backtrace(1);
3088 }
3089 /* Covariant cast for argument 1 (v) <p1:nullable Object> isa V */
3090 /* <p1:nullable Object> isa V */
3091 type_struct4 = self->type->resolution_table->types[COLOR_hash_collection__HashMapNode_FT1];
3092 cltype2 = type_struct4->color;
3093 idtype3 = type_struct4->id;
3094 is_nullable = type_struct4->is_nullable;
3095 if(p1 == NULL) {
3096 var1 = is_nullable;
3097 } else {
3098 if(cltype2 >= p1->type->table_size) {
3099 var1 = 0;
3100 } else {
3101 var1 = p1->type->type_table[cltype2] == idtype3;
3102 }
3103 }
3104 if (unlikely(!var1)) {
3105 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
3106 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name5);
3107 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 350);
3108 show_backtrace(1);
3109 }
3110 var_k = p0;
3111 var_v = p1;
3112 {
3113 hash_collection__HashNode__init(self, var_k); /* Direct call hash_collection#HashNode#init on <self:HashMapNode[Object, nullable Object]>*/
3114 }
3115 self->attrs[COLOR_hash_collection__HashMapNode___value].val = var_v; /* _value on <self:HashMapNode[Object, nullable Object]> */
3116 RET_LABEL:;
3117 }
3118 /* method hash_collection#HashMapNode#init for (self: Object, Object, nullable Object) */
3119 void VIRTUAL_hash_collection__HashMapNode__init(val* self, val* p0, val* p1) {
3120 hash_collection__HashMapNode__init(self, p0, p1); /* Direct call hash_collection#HashMapNode#init on <self:Object(HashMapNode[Object, nullable Object])>*/
3121 RET_LABEL:;
3122 }
3123 /* method hash_collection#HashMapIterator#is_ok for (self: HashMapIterator[Object, nullable Object]): Bool */
3124 short int hash_collection__HashMapIterator__is_ok(val* self) {
3125 short int var /* : Bool */;
3126 val* var1 /* : nullable HashMapNode[Object, nullable Object] */;
3127 val* var2 /* : null */;
3128 short int var3 /* : Bool */;
3129 short int var4 /* : Bool */;
3130 val* var_other /* var other: nullable Object */;
3131 short int var6 /* : Bool */;
3132 short int var7 /* : Bool */;
3133 short int var8 /* : Bool */;
3134 var1 = self->attrs[COLOR_hash_collection__HashMapIterator___node].val; /* _node on <self:HashMapIterator[Object, nullable Object]> */
3135 var2 = NULL;
3136 if (var1 == NULL) {
3137 var3 = 0; /* is null */
3138 } else {
3139 var3 = 1; /* arg is null and recv is not */
3140 }
3141 if (0) {
3142 { /* Inline kernel#Object#!= (var1,var2) on <var1:nullable HashMapNode[Object, nullable Object]> */
3143 var_other = var2;
3144 {
3145 var7 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_other) /* == on <var1:nullable HashMapNode[Object, nullable Object](HashMapNode[Object, nullable Object])>*/;
3146 var6 = var7;
3147 }
3148 var8 = !var6;
3149 var4 = var8;
3150 goto RET_LABEL5;
3151 RET_LABEL5:(void)0;
3152 }
3153 var3 = var4;
3154 }
3155 var = var3;
3156 goto RET_LABEL;
3157 RET_LABEL:;
3158 return var;
3159 }
3160 /* method hash_collection#HashMapIterator#is_ok for (self: Object): Bool */
3161 short int VIRTUAL_hash_collection__HashMapIterator__is_ok(val* self) {
3162 short int var /* : Bool */;
3163 short int var1 /* : Bool */;
3164 var1 = hash_collection__HashMapIterator__is_ok(self);
3165 var = var1;
3166 RET_LABEL:;
3167 return var;
3168 }
3169 /* method hash_collection#HashMapIterator#item for (self: HashMapIterator[Object, nullable Object]): nullable Object */
3170 val* hash_collection__HashMapIterator__item(val* self) {
3171 val* var /* : nullable Object */;
3172 short int var1 /* : Bool */;
3173 val* var2 /* : nullable HashMapNode[Object, nullable Object] */;
3174 val* var3 /* : nullable Object */;
3175 {
3176 var1 = hash_collection__HashMapIterator__is_ok(self);
3177 }
3178 if (unlikely(!var1)) {
3179 PRINT_ERROR("Runtime error: %s", "Assert failed");
3180 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 363);
3181 show_backtrace(1);
3182 }
3183 var2 = self->attrs[COLOR_hash_collection__HashMapIterator___node].val; /* _node on <self:HashMapIterator[Object, nullable Object]> */
3184 if (unlikely(var2 == NULL)) {
3185 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3186 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 364);
3187 show_backtrace(1);
3188 }
3189 var3 = var2->attrs[COLOR_hash_collection__HashMapNode___value].val; /* _value on <var2:nullable HashMapNode[Object, nullable Object]> */
3190 var = var3;
3191 goto RET_LABEL;
3192 RET_LABEL:;
3193 return var;
3194 }
3195 /* method hash_collection#HashMapIterator#item for (self: Object): nullable Object */
3196 val* VIRTUAL_hash_collection__HashMapIterator__item(val* self) {
3197 val* var /* : nullable Object */;
3198 val* var1 /* : nullable Object */;
3199 var1 = hash_collection__HashMapIterator__item(self);
3200 var = var1;
3201 RET_LABEL:;
3202 return var;
3203 }
3204 /* method hash_collection#HashMapIterator#key for (self: HashMapIterator[Object, nullable Object]): Object */
3205 val* hash_collection__HashMapIterator__key(val* self) {
3206 val* var /* : Object */;
3207 short int var1 /* : Bool */;
3208 val* var2 /* : nullable HashMapNode[Object, nullable Object] */;
3209 val* var3 /* : Object */;
3210 {
3211 var1 = hash_collection__HashMapIterator__is_ok(self);
3212 }
3213 if (unlikely(!var1)) {
3214 PRINT_ERROR("Runtime error: %s", "Assert failed");
3215 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 375);
3216 show_backtrace(1);
3217 }
3218 var2 = self->attrs[COLOR_hash_collection__HashMapIterator___node].val; /* _node on <self:HashMapIterator[Object, nullable Object]> */
3219 if (unlikely(var2 == NULL)) {
3220 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3221 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 376);
3222 show_backtrace(1);
3223 }
3224 var3 = var2->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var2:nullable HashMapNode[Object, nullable Object]> */
3225 if (unlikely(var3 == NULL)) {
3226 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
3227 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 376);
3228 show_backtrace(1);
3229 }
3230 var = var3;
3231 goto RET_LABEL;
3232 RET_LABEL:;
3233 return var;
3234 }
3235 /* method hash_collection#HashMapIterator#key for (self: Object): Object */
3236 val* VIRTUAL_hash_collection__HashMapIterator__key(val* self) {
3237 val* var /* : Object */;
3238 val* var1 /* : Object */;
3239 var1 = hash_collection__HashMapIterator__key(self);
3240 var = var1;
3241 RET_LABEL:;
3242 return var;
3243 }
3244 /* method hash_collection#HashMapIterator#next for (self: HashMapIterator[Object, nullable Object]) */
3245 void hash_collection__HashMapIterator__next(val* self) {
3246 short int var /* : Bool */;
3247 val* var1 /* : nullable HashMapNode[Object, nullable Object] */;
3248 val* var2 /* : nullable HashNode[Object] */;
3249 {
3250 var = hash_collection__HashMapIterator__is_ok(self);
3251 }
3252 if (unlikely(!var)) {
3253 PRINT_ERROR("Runtime error: %s", "Assert failed");
3254 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 381);
3255 show_backtrace(1);
3256 }
3257 var1 = self->attrs[COLOR_hash_collection__HashMapIterator___node].val; /* _node on <self:HashMapIterator[Object, nullable Object]> */
3258 if (unlikely(var1 == NULL)) {
3259 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3260 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 382);
3261 show_backtrace(1);
3262 }
3263 var2 = var1->attrs[COLOR_hash_collection__HashNode___next_item].val; /* _next_item on <var1:nullable HashMapNode[Object, nullable Object]> */
3264 self->attrs[COLOR_hash_collection__HashMapIterator___node].val = var2; /* _node on <self:HashMapIterator[Object, nullable Object]> */
3265 RET_LABEL:;
3266 }
3267 /* method hash_collection#HashMapIterator#next for (self: Object) */
3268 void VIRTUAL_hash_collection__HashMapIterator__next(val* self) {
3269 hash_collection__HashMapIterator__next(self); /* Direct call hash_collection#HashMapIterator#next on <self:Object(HashMapIterator[Object, nullable Object])>*/
3270 RET_LABEL:;
3271 }
3272 /* method hash_collection#HashMapIterator#init for (self: HashMapIterator[Object, nullable Object], HashMap[Object, nullable Object]) */
3273 void hash_collection__HashMapIterator__init(val* self, val* p0) {
3274 short int var /* : Bool */;
3275 int cltype;
3276 int idtype;
3277 const struct type* type_struct;
3278 const char* var_class_name;
3279 val* var_map /* var map: HashMap[Object, nullable Object] */;
3280 val* var1 /* : nullable HashNode[Object] */;
3281 /* Covariant cast for argument 0 (map) <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
3282 /* <p0:HashMap[Object, nullable Object]> isa HashMap[K, V] */
3283 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMaphash_collection__HashMapIterator_FT0hash_collection__HashMapIterator_FT1];
3284 cltype = type_struct->color;
3285 idtype = type_struct->id;
3286 if(cltype >= p0->type->table_size) {
3287 var = 0;
3288 } else {
3289 var = p0->type->type_table[cltype] == idtype;
3290 }
3291 if (unlikely(!var)) {
3292 var_class_name = p0 == NULL ? "null" : p0->type->name;
3293 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap[K, V]", var_class_name);
3294 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 391);
3295 show_backtrace(1);
3296 }
3297 var_map = p0;
3298 self->attrs[COLOR_hash_collection__HashMapIterator___map].val = var_map; /* _map on <self:HashMapIterator[Object, nullable Object]> */
3299 var1 = var_map->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <var_map:HashMap[Object, nullable Object]> */
3300 self->attrs[COLOR_hash_collection__HashMapIterator___node].val = var1; /* _node on <self:HashMapIterator[Object, nullable Object]> */
3301 RET_LABEL:;
3302 }
3303 /* method hash_collection#HashMapIterator#init for (self: Object, HashMap[Object, nullable Object]) */
3304 void VIRTUAL_hash_collection__HashMapIterator__init(val* self, val* p0) {
3305 hash_collection__HashMapIterator__init(self, p0); /* Direct call hash_collection#HashMapIterator#init on <self:Object(HashMapIterator[Object, nullable Object])>*/
3306 RET_LABEL:;
3307 }
3308 /* method hash_collection#HashSet#length for (self: HashSet[Object]): Int */
3309 long hash_collection__HashSet__length(val* self) {
3310 long var /* : Int */;
3311 long var1 /* : Int */;
3312 var1 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashSet[Object]> */
3313 var = var1;
3314 goto RET_LABEL;
3315 RET_LABEL:;
3316 return var;
3317 }
3318 /* method hash_collection#HashSet#length for (self: Object): Int */
3319 long VIRTUAL_hash_collection__HashSet__length(val* self) {
3320 long var /* : Int */;
3321 long var1 /* : Int */;
3322 var1 = hash_collection__HashSet__length(self);
3323 var = var1;
3324 RET_LABEL:;
3325 return var;
3326 }
3327 /* method hash_collection#HashSet#is_empty for (self: HashSet[Object]): Bool */
3328 short int hash_collection__HashSet__is_empty(val* self) {
3329 short int var /* : Bool */;
3330 long var1 /* : Int */;
3331 long var2 /* : Int */;
3332 short int var3 /* : Bool */;
3333 short int var4 /* : Bool */;
3334 short int var6 /* : Bool */;
3335 var1 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashSet[Object]> */
3336 var2 = 0;
3337 {
3338 { /* Inline kernel#Int#== (var1,var2) on <var1:Int> */
3339 var6 = var1 == var2;
3340 var4 = var6;
3341 goto RET_LABEL5;
3342 RET_LABEL5:(void)0;
3343 }
3344 var3 = var4;
3345 }
3346 var = var3;
3347 goto RET_LABEL;
3348 RET_LABEL:;
3349 return var;
3350 }
3351 /* method hash_collection#HashSet#is_empty for (self: Object): Bool */
3352 short int VIRTUAL_hash_collection__HashSet__is_empty(val* self) {
3353 short int var /* : Bool */;
3354 short int var1 /* : Bool */;
3355 var1 = hash_collection__HashSet__is_empty(self);
3356 var = var1;
3357 RET_LABEL:;
3358 return var;
3359 }
3360 /* method hash_collection#HashSet#first for (self: HashSet[Object]): Object */
3361 val* hash_collection__HashSet__first(val* self) {
3362 val* var /* : Object */;
3363 long var1 /* : Int */;
3364 long var2 /* : Int */;
3365 short int var3 /* : Bool */;
3366 short int var5 /* : Bool */;
3367 int cltype;
3368 int idtype;
3369 const char* var_class_name;
3370 short int var6 /* : Bool */;
3371 val* var7 /* : nullable HashNode[Object] */;
3372 val* var8 /* : Object */;
3373 var1 = self->attrs[COLOR_hash_collection__HashCollection___the_length].l; /* _the_length on <self:HashSet[Object]> */
3374 var2 = 0;
3375 {
3376 { /* Inline kernel#Int#> (var1,var2) on <var1:Int> */
3377 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
3378 /* <var2:Int> isa OTHER */
3379 var5 = 1; /* easy <var2:Int> isa OTHER*/
3380 if (unlikely(!var5)) {
3381 var_class_name = type_kernel__Int.name;
3382 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3383 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
3384 show_backtrace(1);
3385 }
3386 var6 = var1 > var2;
3387 var3 = var6;
3388 goto RET_LABEL4;
3389 RET_LABEL4:(void)0;
3390 }
3391 }
3392 if (unlikely(!var3)) {
3393 PRINT_ERROR("Runtime error: %s", "Assert failed");
3394 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 410);
3395 show_backtrace(1);
3396 }
3397 var7 = self->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <self:HashSet[Object]> */
3398 if (unlikely(var7 == NULL)) {
3399 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3400 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 411);
3401 show_backtrace(1);
3402 }
3403 var8 = var7->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var7:nullable HashNode[Object](nullable HashSetNode[Object])> */
3404 if (unlikely(var8 == NULL)) {
3405 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
3406 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 411);
3407 show_backtrace(1);
3408 }
3409 var = var8;
3410 goto RET_LABEL;
3411 RET_LABEL:;
3412 return var;
3413 }
3414 /* method hash_collection#HashSet#first for (self: Object): nullable Object */
3415 val* VIRTUAL_hash_collection__HashSet__first(val* self) {
3416 val* var /* : nullable Object */;
3417 val* var1 /* : Object */;
3418 var1 = hash_collection__HashSet__first(self);
3419 var = var1;
3420 RET_LABEL:;
3421 return var;
3422 }
3423 /* method hash_collection#HashSet#has for (self: HashSet[Object], Object): Bool */
3424 short int hash_collection__HashSet__has(val* self, val* p0) {
3425 short int var /* : Bool */;
3426 short int var1 /* : Bool */;
3427 int cltype;
3428 int idtype;
3429 const struct type* type_struct;
3430 const char* var_class_name;
3431 val* var_item /* var item: Object */;
3432 val* var2 /* : nullable HashNode[Object] */;
3433 val* var3 /* : null */;
3434 short int var4 /* : Bool */;
3435 short int var5 /* : Bool */;
3436 val* var_other /* var other: nullable Object */;
3437 short int var7 /* : Bool */;
3438 short int var8 /* : Bool */;
3439 short int var9 /* : Bool */;
3440 /* Covariant cast for argument 0 (item) <p0:Object> isa E */
3441 /* <p0:Object> isa E */
3442 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
3443 cltype = type_struct->color;
3444 idtype = type_struct->id;
3445 if(cltype >= p0->type->table_size) {
3446 var1 = 0;
3447 } else {
3448 var1 = p0->type->type_table[cltype] == idtype;
3449 }
3450 if (unlikely(!var1)) {
3451 var_class_name = p0 == NULL ? "null" : p0->type->name;
3452 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
3453 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 414);
3454 show_backtrace(1);
3455 }
3456 var_item = p0;
3457 {
3458 var2 = hash_collection__HashCollection__node_at(self, var_item);
3459 }
3460 var3 = NULL;
3461 if (var2 == NULL) {
3462 var4 = 0; /* is null */
3463 } else {
3464 var4 = 1; /* arg is null and recv is not */
3465 }
3466 if (0) {
3467 { /* Inline kernel#Object#!= (var2,var3) on <var2:nullable HashNode[Object](nullable HashSetNode[Object])> */
3468 var_other = var3;
3469 {
3470 var8 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var_other) /* == on <var2:nullable HashSetNode[Object](HashSetNode[Object])>*/;
3471 var7 = var8;
3472 }
3473 var9 = !var7;
3474 var5 = var9;
3475 goto RET_LABEL6;
3476 RET_LABEL6:(void)0;
3477 }
3478 var4 = var5;
3479 }
3480 var = var4;
3481 goto RET_LABEL;
3482 RET_LABEL:;
3483 return var;
3484 }
3485 /* method hash_collection#HashSet#has for (self: Object, nullable Object): Bool */
3486 short int VIRTUAL_hash_collection__HashSet__has(val* self, val* p0) {
3487 short int var /* : Bool */;
3488 short int var1 /* : Bool */;
3489 var1 = hash_collection__HashSet__has(self, p0);
3490 var = var1;
3491 RET_LABEL:;
3492 return var;
3493 }
3494 /* method hash_collection#HashSet#add for (self: HashSet[Object], Object) */
3495 void hash_collection__HashSet__add(val* self, val* p0) {
3496 short int var /* : Bool */;
3497 int cltype;
3498 int idtype;
3499 const struct type* type_struct;
3500 const char* var_class_name;
3501 val* var_item /* var item: Object */;
3502 long var1 /* : Int */;
3503 long var_i /* var i: Int */;
3504 val* var2 /* : nullable HashNode[Object] */;
3505 val* var_c /* var c: nullable HashSetNode[Object] */;
3506 val* var3 /* : null */;
3507 short int var4 /* : Bool */;
3508 short int var5 /* : Bool */;
3509 val* var_other /* var other: nullable Object */;
3510 short int var7 /* : Bool */;
3511 short int var8 /* : Bool */;
3512 short int var9 /* : Bool */;
3513 val* var10 /* : HashSetNode[Object] */;
3514 /* Covariant cast for argument 0 (item) <p0:Object> isa E */
3515 /* <p0:Object> isa E */
3516 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SimpleCollection_FT0];
3517 cltype = type_struct->color;
3518 idtype = type_struct->id;
3519 if(cltype >= p0->type->table_size) {
3520 var = 0;
3521 } else {
3522 var = p0->type->type_table[cltype] == idtype;
3523 }
3524 if (unlikely(!var)) {
3525 var_class_name = p0 == NULL ? "null" : p0->type->name;
3526 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
3527 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 419);
3528 show_backtrace(1);
3529 }
3530 var_item = p0;
3531 {
3532 var1 = hash_collection__HashCollection__index_at(self, var_item);
3533 }
3534 var_i = var1;
3535 {
3536 var2 = hash_collection__HashCollection__node_at_idx(self, var_i, var_item);
3537 }
3538 var_c = var2;
3539 var3 = NULL;
3540 if (var_c == NULL) {
3541 var4 = 0; /* is null */
3542 } else {
3543 var4 = 1; /* arg is null and recv is not */
3544 }
3545 if (0) {
3546 { /* Inline kernel#Object#!= (var_c,var3) on <var_c:nullable HashSetNode[Object]> */
3547 var_other = var3;
3548 {
3549 var8 = ((short int (*)(val*, val*))(var_c->class->vft[COLOR_kernel__Object___61d_61d]))(var_c, var_other) /* == on <var_c:nullable HashSetNode[Object](HashSetNode[Object])>*/;
3550 var7 = var8;
3551 }
3552 var9 = !var7;
3553 var5 = var9;
3554 goto RET_LABEL6;
3555 RET_LABEL6:(void)0;
3556 }
3557 var4 = var5;
3558 }
3559 if (var4){
3560 var_c->attrs[COLOR_hash_collection__HashNode___key].val = var_item; /* _key on <var_c:nullable HashSetNode[Object](HashSetNode[Object])> */
3561 } else {
3562 var10 = NEW_hash_collection__HashSetNode(self->type->resolution_table->types[COLOR_hash_collection__HashSetNodehash_collection__HashSet_FT0]);
3563 {
3564 hash_collection__HashSetNode__init(var10, var_item); /* Direct call hash_collection#HashSetNode#init on <var10:HashSetNode[Object]>*/
3565 }
3566 {
3567 hash_collection__HashCollection__store(self, var_i, var10); /* Direct call hash_collection#HashCollection#store on <self:HashSet[Object]>*/
3568 }
3569 }
3570 RET_LABEL:;
3571 }
3572 /* method hash_collection#HashSet#add for (self: Object, nullable Object) */
3573 void VIRTUAL_hash_collection__HashSet__add(val* self, val* p0) {
3574 hash_collection__HashSet__add(self, p0); /* Direct call hash_collection#HashSet#add on <self:Object(HashSet[Object])>*/
3575 RET_LABEL:;
3576 }
3577 /* method hash_collection#HashSet#remove for (self: HashSet[Object], Object) */
3578 void hash_collection__HashSet__remove(val* self, val* p0) {
3579 short int var /* : Bool */;
3580 int cltype;
3581 int idtype;
3582 const struct type* type_struct;
3583 const char* var_class_name;
3584 val* var_item /* var item: Object */;
3585 /* Covariant cast for argument 0 (item) <p0:Object> isa E */
3586 /* <p0:Object> isa E */
3587 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
3588 cltype = type_struct->color;
3589 idtype = type_struct->id;
3590 if(cltype >= p0->type->table_size) {
3591 var = 0;
3592 } else {
3593 var = p0->type->type_table[cltype] == idtype;
3594 }
3595 if (unlikely(!var)) {
3596 var_class_name = p0 == NULL ? "null" : p0->type->name;
3597 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
3598 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 430);
3599 show_backtrace(1);
3600 }
3601 var_item = p0;
3602 {
3603 hash_collection__HashCollection__remove_node(self, var_item); /* Direct call hash_collection#HashCollection#remove_node on <self:HashSet[Object]>*/
3604 }
3605 RET_LABEL:;
3606 }
3607 /* method hash_collection#HashSet#remove for (self: Object, nullable Object) */
3608 void VIRTUAL_hash_collection__HashSet__remove(val* self, val* p0) {
3609 hash_collection__HashSet__remove(self, p0); /* Direct call hash_collection#HashSet#remove on <self:Object(HashSet[Object])>*/
3610 RET_LABEL:;
3611 }
3612 /* method hash_collection#HashSet#clear for (self: HashSet[Object]) */
3613 void hash_collection__HashSet__clear(val* self) {
3614 {
3615 hash_collection__HashCollection__raz(self); /* Direct call hash_collection#HashCollection#raz on <self:HashSet[Object]>*/
3616 }
3617 RET_LABEL:;
3618 }
3619 /* method hash_collection#HashSet#clear for (self: Object) */
3620 void VIRTUAL_hash_collection__HashSet__clear(val* self) {
3621 hash_collection__HashSet__clear(self); /* Direct call hash_collection#HashSet#clear on <self:Object(HashSet[Object])>*/
3622 RET_LABEL:;
3623 }
3624 /* method hash_collection#HashSet#iterator for (self: HashSet[Object]): Iterator[Object] */
3625 val* hash_collection__HashSet__iterator(val* self) {
3626 val* var /* : Iterator[Object] */;
3627 val* var1 /* : HashSetIterator[Object] */;
3628 var1 = NEW_hash_collection__HashSetIterator(self->type->resolution_table->types[COLOR_hash_collection__HashSetIteratorhash_collection__HashSet_FT0]);
3629 {
3630 hash_collection__HashSetIterator__init(var1, self); /* Direct call hash_collection#HashSetIterator#init on <var1:HashSetIterator[Object]>*/
3631 }
3632 var = var1;
3633 goto RET_LABEL;
3634 RET_LABEL:;
3635 return var;
3636 }
3637 /* method hash_collection#HashSet#iterator for (self: Object): Iterator[nullable Object] */
3638 val* VIRTUAL_hash_collection__HashSet__iterator(val* self) {
3639 val* var /* : Iterator[nullable Object] */;
3640 val* var1 /* : Iterator[Object] */;
3641 var1 = hash_collection__HashSet__iterator(self);
3642 var = var1;
3643 RET_LABEL:;
3644 return var;
3645 }
3646 /* method hash_collection#HashSet#init for (self: HashSet[Object]) */
3647 void hash_collection__HashSet__init(val* self) {
3648 long var /* : Int */;
3649 long var1 /* : Int */;
3650 long var2 /* : Int */;
3651 {
3652 ((void (*)(val*))(self->class->vft[COLOR_hash_collection__HashSet__init]))(self) /* init on <self:HashSet[Object]>*/;
3653 }
3654 var = 0;
3655 self->attrs[COLOR_hash_collection__HashCollection___capacity].l = var; /* _capacity on <self:HashSet[Object]> */
3656 var1 = 0;
3657 self->attrs[COLOR_hash_collection__HashCollection___the_length].l = var1; /* _the_length on <self:HashSet[Object]> */
3658 var2 = 0;
3659 {
3660 hash_collection__HashCollection__enlarge(self, var2); /* Direct call hash_collection#HashCollection#enlarge on <self:HashSet[Object]>*/
3661 }
3662 RET_LABEL:;
3663 }
3664 /* method hash_collection#HashSet#init for (self: Object) */
3665 void VIRTUAL_hash_collection__HashSet__init(val* self) {
3666 hash_collection__HashSet__init(self); /* Direct call hash_collection#HashSet#init on <self:Object(HashSet[Object])>*/
3667 RET_LABEL:;
3668 }
3669 /* method hash_collection#HashSet#from for (self: HashSet[Object], Collection[Object]) */
3670 void hash_collection__HashSet__from(val* self, val* p0) {
3671 short int var /* : Bool */;
3672 int cltype;
3673 int idtype;
3674 const struct type* type_struct;
3675 const char* var_class_name;
3676 val* var_coll /* var coll: Collection[Object] */;
3677 /* Covariant cast for argument 0 (coll) <p0:Collection[Object]> isa Collection[E] */
3678 /* <p0:Collection[Object]> isa Collection[E] */
3679 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectionhash_collection__HashSet_FT0];
3680 cltype = type_struct->color;
3681 idtype = type_struct->id;
3682 if(cltype >= p0->type->table_size) {
3683 var = 0;
3684 } else {
3685 var = p0->type->type_table[cltype] == idtype;
3686 }
3687 if (unlikely(!var)) {
3688 var_class_name = p0 == NULL ? "null" : p0->type->name;
3689 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
3690 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 443);
3691 show_backtrace(1);
3692 }
3693 var_coll = p0;
3694 {
3695 ((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:HashSet[Object]>*/;
3696 }
3697 {
3698 abstract_collection__SimpleCollection__add_all(self, var_coll); /* Direct call abstract_collection#SimpleCollection#add_all on <self:HashSet[Object]>*/
3699 }
3700 RET_LABEL:;
3701 }
3702 /* method hash_collection#HashSet#from for (self: Object, Collection[Object]) */
3703 void VIRTUAL_hash_collection__HashSet__from(val* self, val* p0) {
3704 hash_collection__HashSet__from(self, p0); /* Direct call hash_collection#HashSet#from on <self:Object(HashSet[Object])>*/
3705 RET_LABEL:;
3706 }
3707 /* method hash_collection#HashSetNode#init for (self: HashSetNode[Object], Object) */
3708 void hash_collection__HashSetNode__init(val* self, val* p0) {
3709 short int var /* : Bool */;
3710 int cltype;
3711 int idtype;
3712 const struct type* type_struct;
3713 const char* var_class_name;
3714 val* var_e /* var e: Object */;
3715 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
3716 /* <p0:Object> isa E */
3717 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSetNode_FT0];
3718 cltype = type_struct->color;
3719 idtype = type_struct->id;
3720 if(cltype >= p0->type->table_size) {
3721 var = 0;
3722 } else {
3723 var = p0->type->type_table[cltype] == idtype;
3724 }
3725 if (unlikely(!var)) {
3726 var_class_name = p0 == NULL ? "null" : p0->type->name;
3727 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
3728 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 456);
3729 show_backtrace(1);
3730 }
3731 {
3732 hash_collection__HashNode__init(self, p0); /* Direct call hash_collection#HashNode#init on <self:HashSetNode[Object]>*/
3733 }
3734 var_e = p0;
3735 self->attrs[COLOR_hash_collection__HashNode___key].val = var_e; /* _key on <self:HashSetNode[Object]> */
3736 RET_LABEL:;
3737 }
3738 /* method hash_collection#HashSetNode#init for (self: Object, Object) */
3739 void VIRTUAL_hash_collection__HashSetNode__init(val* self, val* p0) {
3740 hash_collection__HashSetNode__init(self, p0); /* Direct call hash_collection#HashSetNode#init on <self:Object(HashSetNode[Object])>*/
3741 RET_LABEL:;
3742 }
3743 /* method hash_collection#HashSetIterator#is_ok for (self: HashSetIterator[Object]): Bool */
3744 short int hash_collection__HashSetIterator__is_ok(val* self) {
3745 short int var /* : Bool */;
3746 val* var1 /* : nullable HashSetNode[Object] */;
3747 val* var2 /* : null */;
3748 short int var3 /* : Bool */;
3749 short int var4 /* : Bool */;
3750 val* var_other /* var other: nullable Object */;
3751 short int var6 /* : Bool */;
3752 short int var7 /* : Bool */;
3753 short int var8 /* : Bool */;
3754 var1 = self->attrs[COLOR_hash_collection__HashSetIterator___node].val; /* _node on <self:HashSetIterator[Object]> */
3755 var2 = NULL;
3756 if (var1 == NULL) {
3757 var3 = 0; /* is null */
3758 } else {
3759 var3 = 1; /* arg is null and recv is not */
3760 }
3761 if (0) {
3762 { /* Inline kernel#Object#!= (var1,var2) on <var1:nullable HashSetNode[Object]> */
3763 var_other = var2;
3764 {
3765 var7 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_other) /* == on <var1:nullable HashSetNode[Object](HashSetNode[Object])>*/;
3766 var6 = var7;
3767 }
3768 var8 = !var6;
3769 var4 = var8;
3770 goto RET_LABEL5;
3771 RET_LABEL5:(void)0;
3772 }
3773 var3 = var4;
3774 }
3775 var = var3;
3776 goto RET_LABEL;
3777 RET_LABEL:;
3778 return var;
3779 }
3780 /* method hash_collection#HashSetIterator#is_ok for (self: Object): Bool */
3781 short int VIRTUAL_hash_collection__HashSetIterator__is_ok(val* self) {
3782 short int var /* : Bool */;
3783 short int var1 /* : Bool */;
3784 var1 = hash_collection__HashSetIterator__is_ok(self);
3785 var = var1;
3786 RET_LABEL:;
3787 return var;
3788 }
3789 /* method hash_collection#HashSetIterator#item for (self: HashSetIterator[Object]): Object */
3790 val* hash_collection__HashSetIterator__item(val* self) {
3791 val* var /* : Object */;
3792 short int var1 /* : Bool */;
3793 val* var2 /* : nullable HashSetNode[Object] */;
3794 val* var3 /* : Object */;
3795 {
3796 var1 = hash_collection__HashSetIterator__is_ok(self);
3797 }
3798 if (unlikely(!var1)) {
3799 PRINT_ERROR("Runtime error: %s", "Assert failed");
3800 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 468);
3801 show_backtrace(1);
3802 }
3803 var2 = self->attrs[COLOR_hash_collection__HashSetIterator___node].val; /* _node on <self:HashSetIterator[Object]> */
3804 if (unlikely(var2 == NULL)) {
3805 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3806 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 469);
3807 show_backtrace(1);
3808 }
3809 var3 = var2->attrs[COLOR_hash_collection__HashNode___key].val; /* _key on <var2:nullable HashSetNode[Object]> */
3810 if (unlikely(var3 == NULL)) {
3811 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _key");
3812 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 469);
3813 show_backtrace(1);
3814 }
3815 var = var3;
3816 goto RET_LABEL;
3817 RET_LABEL:;
3818 return var;
3819 }
3820 /* method hash_collection#HashSetIterator#item for (self: Object): nullable Object */
3821 val* VIRTUAL_hash_collection__HashSetIterator__item(val* self) {
3822 val* var /* : nullable Object */;
3823 val* var1 /* : Object */;
3824 var1 = hash_collection__HashSetIterator__item(self);
3825 var = var1;
3826 RET_LABEL:;
3827 return var;
3828 }
3829 /* method hash_collection#HashSetIterator#next for (self: HashSetIterator[Object]) */
3830 void hash_collection__HashSetIterator__next(val* self) {
3831 short int var /* : Bool */;
3832 val* var1 /* : nullable HashSetNode[Object] */;
3833 val* var2 /* : nullable HashNode[Object] */;
3834 {
3835 var = hash_collection__HashSetIterator__is_ok(self);
3836 }
3837 if (unlikely(!var)) {
3838 PRINT_ERROR("Runtime error: %s", "Assert failed");
3839 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 474);
3840 show_backtrace(1);
3841 }
3842 var1 = self->attrs[COLOR_hash_collection__HashSetIterator___node].val; /* _node on <self:HashSetIterator[Object]> */
3843 if (unlikely(var1 == NULL)) {
3844 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3845 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 475);
3846 show_backtrace(1);
3847 }
3848 var2 = var1->attrs[COLOR_hash_collection__HashNode___next_item].val; /* _next_item on <var1:nullable HashSetNode[Object]> */
3849 self->attrs[COLOR_hash_collection__HashSetIterator___node].val = var2; /* _node on <self:HashSetIterator[Object]> */
3850 RET_LABEL:;
3851 }
3852 /* method hash_collection#HashSetIterator#next for (self: Object) */
3853 void VIRTUAL_hash_collection__HashSetIterator__next(val* self) {
3854 hash_collection__HashSetIterator__next(self); /* Direct call hash_collection#HashSetIterator#next on <self:Object(HashSetIterator[Object])>*/
3855 RET_LABEL:;
3856 }
3857 /* method hash_collection#HashSetIterator#init for (self: HashSetIterator[Object], HashSet[Object]) */
3858 void hash_collection__HashSetIterator__init(val* self, val* p0) {
3859 short int var /* : Bool */;
3860 int cltype;
3861 int idtype;
3862 const struct type* type_struct;
3863 const char* var_class_name;
3864 val* var_set /* var set: HashSet[Object] */;
3865 val* var1 /* : nullable HashNode[Object] */;
3866 /* Covariant cast for argument 0 (set) <p0:HashSet[Object]> isa HashSet[E] */
3867 /* <p0:HashSet[Object]> isa HashSet[E] */
3868 type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashSethash_collection__HashSetIterator_FT0];
3869 cltype = type_struct->color;
3870 idtype = type_struct->id;
3871 if(cltype >= p0->type->table_size) {
3872 var = 0;
3873 } else {
3874 var = p0->type->type_table[cltype] == idtype;
3875 }
3876 if (unlikely(!var)) {
3877 var_class_name = p0 == NULL ? "null" : p0->type->name;
3878 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "HashSet[E]", var_class_name);
3879 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/hash_collection.nit", 484);
3880 show_backtrace(1);
3881 }
3882 var_set = p0;
3883 self->attrs[COLOR_hash_collection__HashSetIterator___set].val = var_set; /* _set on <self:HashSetIterator[Object]> */
3884 var1 = var_set->attrs[COLOR_hash_collection__HashCollection___first_item].val; /* _first_item on <var_set:HashSet[Object]> */
3885 self->attrs[COLOR_hash_collection__HashSetIterator___node].val = var1; /* _node on <self:HashSetIterator[Object]> */
3886 RET_LABEL:;
3887 }
3888 /* method hash_collection#HashSetIterator#init for (self: Object, HashSet[Object]) */
3889 void VIRTUAL_hash_collection__HashSetIterator__init(val* self, val* p0) {
3890 hash_collection__HashSetIterator__init(self, p0); /* Direct call hash_collection#HashSetIterator#init on <self:Object(HashSetIterator[Object])>*/
3891 RET_LABEL:;
3892 }