update NOTICE and LICENSE
[nit.git] / c_src / hash_collection._sep.c
1 /* This C file is generated by NIT to compile module hash_collection. */
2 #include "hash_collection._sep.h"
3 val_t hash_collection___HashCollection___length(val_t p0){
4 struct {struct stack_frame_t me;} fra;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_hash_collection;
9 fra.me.line = 25;
10 fra.me.meth = LOCATE_hash_collection___HashCollection___length;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 /* ./../lib/standard//collection//hash_collection.nit:25 */
16 REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
17 if (UNTAG_Bool(REGB0)) {
18 } else {
19 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 25);
20 }
21 REGB0 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return REGB0;
24 }
25 val_t hash_collection___HashCollection___first_item(val_t p0){
26 struct {struct stack_frame_t me;} fra;
27 val_t tmp;
28 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
29 fra.me.file = LOCATE_hash_collection;
30 fra.me.line = 27;
31 fra.me.meth = LOCATE_hash_collection___HashCollection___first_item;
32 fra.me.has_broke = 0;
33 fra.me.REG_size = 1;
34 fra.me.REG[0] = NIT_NULL;
35 fra.me.REG[0] = p0;
36 /* ./../lib/standard//collection//hash_collection.nit:27 */
37 fra.me.REG[0] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
38 stack_frame_head = fra.me.prev;
39 return fra.me.REG[0];
40 }
41 val_t hash_collection___HashCollection___index_at(val_t p0, val_t p1){
42 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
43 val_t REGB0;
44 val_t REGB1;
45 val_t tmp;
46 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
47 fra.me.file = LOCATE_hash_collection;
48 fra.me.line = 36;
49 fra.me.meth = LOCATE_hash_collection___HashCollection___index_at;
50 fra.me.has_broke = 0;
51 fra.me.REG_size = 2;
52 fra.me.REG[0] = NIT_NULL;
53 fra.me.REG[1] = NIT_NULL;
54 fra.me.REG[0] = p0;
55 fra.me.REG[1] = p1;
56 /* ./../lib/standard//collection//hash_collection.nit:39 */
57 REGB0 = CALL_hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
58 REGB1 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
59 if (UNTAG_Bool(REGB1)) {
60 } else {
61 nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_hash_collection, 39);
62 }
63 REGB1 = ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]);
64 /* ./../lib/standard//kernel.nit:220 */
65 REGB1 = TAG_Int(UNTAG_Int(REGB0)%UNTAG_Int(REGB1));
66 /* ./../lib/standard//collection//hash_collection.nit:40 */
67 REGB0 = TAG_Int(0);
68 /* ./../lib/standard//kernel.nit:212 */
69 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
70 /* ./../lib/standard//collection//hash_collection.nit:40 */
71 if (UNTAG_Bool(REGB0)) {
72 /* ./../lib/standard//kernel.nit:216 */
73 REGB0 = TAG_Int(-UNTAG_Int(REGB1));
74 /* ./../lib/standard//collection//hash_collection.nit:40 */
75 REGB1 = REGB0;
76 }
77 /* ./../lib/standard//collection//hash_collection.nit:41 */
78 goto label1;
79 label1: while(0);
80 stack_frame_head = fra.me.prev;
81 return REGB1;
82 }
83 val_t hash_collection___HashCollection___node_at(val_t p0, val_t p1){
84 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
85 val_t REGB0;
86 val_t tmp;
87 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
88 fra.me.file = LOCATE_hash_collection;
89 fra.me.line = 44;
90 fra.me.meth = LOCATE_hash_collection___HashCollection___node_at;
91 fra.me.has_broke = 0;
92 fra.me.REG_size = 4;
93 fra.me.REG[0] = NIT_NULL;
94 fra.me.REG[1] = NIT_NULL;
95 fra.me.REG[2] = NIT_NULL;
96 fra.me.REG[3] = NIT_NULL;
97 fra.me.REG[0] = p0;
98 fra.me.REG[1] = p1;
99 /* ./../lib/standard//collection//hash_collection.nit:48 */
100 fra.me.REG[2] = ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]);
101 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[2]));
102 if (UNTAG_Bool(REGB0)) {
103 fra.me.REG[2] = ATTR_hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]);
104 goto label1;
105 }
106 /* ./../lib/standard//collection//hash_collection.nit:50 */
107 REGB0 = CALL_hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
108 fra.me.REG[3] = CALL_hash_collection___HashCollection___node_at_idx(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
109 /* ./../lib/standard//collection//hash_collection.nit:51 */
110 ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
111 /* ./../lib/standard//collection//hash_collection.nit:52 */
112 ATTR_hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[3];
113 /* ./../lib/standard//collection//hash_collection.nit:53 */
114 fra.me.REG[2] = fra.me.REG[3];
115 goto label1;
116 label1: while(0);
117 stack_frame_head = fra.me.prev;
118 return fra.me.REG[2];
119 }
120 val_t hash_collection___HashCollection___node_at_idx(val_t p0, val_t p1, val_t p2){
121 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
122 val_t REGB0;
123 val_t REGB1;
124 val_t REGB2;
125 val_t tmp;
126 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
127 fra.me.file = LOCATE_hash_collection;
128 fra.me.line = 56;
129 fra.me.meth = LOCATE_hash_collection___HashCollection___node_at_idx;
130 fra.me.has_broke = 0;
131 fra.me.REG_size = 3;
132 fra.me.REG[0] = NIT_NULL;
133 fra.me.REG[1] = NIT_NULL;
134 fra.me.REG[2] = NIT_NULL;
135 fra.me.REG[0] = p0;
136 REGB0 = p1;
137 fra.me.REG[1] = p2;
138 /* ./../lib/standard//collection//hash_collection.nit:59 */
139 fra.me.REG[0] = ATTR_hash_collection___HashCollection____array(fra.me.REG[0]);
140 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
141 if (UNTAG_Bool(REGB1)) {
142 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 59);
143 }
144 /* ./../lib/standard//collection//array.nit:654 */
145 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
146 /* ./../lib/standard//collection//hash_collection.nit:60 */
147 while(1) {
148 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
149 if (UNTAG_Bool(REGB0)) {
150 } else {
151 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
152 if (UNTAG_Bool(REGB1)) {
153 REGB1 = TAG_Bool(false);
154 REGB0 = REGB1;
155 } else {
156 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
157 REGB0 = REGB1;
158 }
159 }
160 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
161 if (UNTAG_Bool(REGB0)) {
162 /* ./../lib/standard//collection//hash_collection.nit:61 */
163 REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
164 if (UNTAG_Bool(REGB0)) {
165 } else {
166 nit_abort("Uninitialized attribute %s", "_key", LOCATE_hash_collection, 61);
167 }
168 fra.me.REG[2] = ATTR_hash_collection___HashNode____key(fra.me.REG[0]);
169 /* ./../lib/standard//collection//hash_collection.nit:62 */
170 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
171 if (UNTAG_Bool(REGB0)) {
172 REGB0 = TAG_Bool(true);
173 } else {
174 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
175 if (UNTAG_Bool(REGB1)) {
176 } else {
177 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
178 REGB1 = REGB2;
179 }
180 REGB0 = REGB1;
181 }
182 if (UNTAG_Bool(REGB0)) {
183 /* ./../lib/standard//collection//hash_collection.nit:63 */
184 goto label1;
185 }
186 /* ./../lib/standard//collection//hash_collection.nit:65 */
187 fra.me.REG[2] = ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]);
188 fra.me.REG[0] = fra.me.REG[2];
189 } else {
190 /* ./../lib/standard//collection//hash_collection.nit:60 */
191 goto label1;
192 }
193 }
194 label1: while(0);
195 /* ./../lib/standard//collection//hash_collection.nit:67 */
196 goto label2;
197 label2: while(0);
198 stack_frame_head = fra.me.prev;
199 return fra.me.REG[0];
200 }
201 void hash_collection___HashCollection___store(val_t p0, val_t p1, val_t p2){
202 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
203 val_t REGB0;
204 val_t REGB1;
205 val_t REGB2;
206 val_t tmp;
207 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
208 fra.me.file = LOCATE_hash_collection;
209 fra.me.line = 70;
210 fra.me.meth = LOCATE_hash_collection___HashCollection___store;
211 fra.me.has_broke = 0;
212 fra.me.REG_size = 4;
213 fra.me.REG[0] = NIT_NULL;
214 fra.me.REG[1] = NIT_NULL;
215 fra.me.REG[2] = NIT_NULL;
216 fra.me.REG[3] = NIT_NULL;
217 fra.me.REG[0] = p0;
218 REGB0 = p1;
219 fra.me.REG[1] = p2;
220 /* ./../lib/standard//collection//hash_collection.nit:74 */
221 fra.me.REG[2] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
222 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
223 if (UNTAG_Bool(REGB1)) {
224 } else {
225 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
226 if (UNTAG_Bool(REGB2)) {
227 REGB2 = TAG_Bool(false);
228 REGB1 = REGB2;
229 } else {
230 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
231 REGB1 = REGB2;
232 }
233 }
234 if (UNTAG_Bool(REGB1)) {
235 /* ./../lib/standard//collection//hash_collection.nit:75 */
236 ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]) = fra.me.REG[1];
237 } else {
238 /* ./../lib/standard//collection//hash_collection.nit:77 */
239 fra.me.REG[2] = ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]);
240 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
241 if (UNTAG_Bool(REGB1)) {
242 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 77);
243 }
244 ATTR_hash_collection___HashNode____next_item(fra.me.REG[2]) = fra.me.REG[1];
245 }
246 /* ./../lib/standard//collection//hash_collection.nit:79 */
247 fra.me.REG[2] = ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]);
248 ATTR_hash_collection___HashNode____prev_item(fra.me.REG[1]) = fra.me.REG[2];
249 /* ./../lib/standard//collection//hash_collection.nit:80 */
250 ATTR_hash_collection___HashNode____next_item(fra.me.REG[1]) = NIT_NULL;
251 /* ./../lib/standard//collection//hash_collection.nit:81 */
252 ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
253 /* ./../lib/standard//collection//hash_collection.nit:84 */
254 fra.me.REG[2] = ATTR_hash_collection___HashCollection____array(fra.me.REG[0]);
255 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
256 if (UNTAG_Bool(REGB1)) {
257 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 84);
258 }
259 /* ./../lib/standard//collection//array.nit:654 */
260 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
261 /* ./../lib/standard//collection//hash_collection.nit:85 */
262 fra.me.REG[3] = ATTR_hash_collection___HashCollection____array(fra.me.REG[0]);
263 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
264 if (UNTAG_Bool(REGB1)) {
265 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 85);
266 }
267 /* ./../lib/standard//collection//array.nit:655 */
268 ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
269 /* ./../lib/standard//collection//hash_collection.nit:86 */
270 ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[1]) = fra.me.REG[2];
271 /* ./../lib/standard//collection//hash_collection.nit:87 */
272 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
273 if (UNTAG_Bool(REGB0)) {
274 } else {
275 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
276 if (UNTAG_Bool(REGB1)) {
277 REGB1 = TAG_Bool(false);
278 REGB0 = REGB1;
279 } else {
280 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
281 REGB0 = REGB1;
282 }
283 }
284 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
285 if (UNTAG_Bool(REGB0)) {
286 ATTR_hash_collection___HashNode____prev_in_bucklet(fra.me.REG[2]) = fra.me.REG[1];
287 }
288 /* ./../lib/standard//collection//hash_collection.nit:89 */
289 REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[1])!=NIT_NULL);
290 if (UNTAG_Bool(REGB0)) {
291 } else {
292 nit_abort("Uninitialized attribute %s", "_key", LOCATE_hash_collection, 89);
293 }
294 fra.me.REG[2] = ATTR_hash_collection___HashNode____key(fra.me.REG[1]);
295 ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[2];
296 /* ./../lib/standard//collection//hash_collection.nit:90 */
297 ATTR_hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
298 /* ./../lib/standard//collection//hash_collection.nit:93 */
299 REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
300 if (UNTAG_Bool(REGB0)) {
301 } else {
302 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 93);
303 }
304 REGB0 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
305 /* ./../lib/standard//collection//hash_collection.nit:94 */
306 REGB1 = TAG_Int(1);
307 /* ./../lib/standard//kernel.nit:215 */
308 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
309 /* ./../lib/standard//collection//hash_collection.nit:94 */
310 ATTR_hash_collection___HashCollection____length(fra.me.REG[0]) = REGB1;
311 /* ./../lib/standard//collection//hash_collection.nit:95 */
312 REGB1 = TAG_Int(5);
313 /* ./../lib/standard//kernel.nit:215 */
314 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
315 /* ./../lib/standard//collection//hash_collection.nit:95 */
316 REGB2 = TAG_Int(3);
317 /* ./../lib/standard//kernel.nit:218 */
318 REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
319 /* ./../lib/standard//collection//hash_collection.nit:95 */
320 REGB1 = TAG_Int(2);
321 /* ./../lib/standard//kernel.nit:219 */
322 REGB1 = TAG_Int(UNTAG_Int(REGB2)/UNTAG_Int(REGB1));
323 /* ./../lib/standard//collection//hash_collection.nit:95 */
324 REGB0 = REGB1;
325 /* ./../lib/standard//collection//hash_collection.nit:96 */
326 REGB1 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
327 if (UNTAG_Bool(REGB1)) {
328 } else {
329 nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_hash_collection, 96);
330 }
331 REGB1 = ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]);
332 /* ./../lib/standard//kernel.nit:213 */
333 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
334 /* ./../lib/standard//collection//hash_collection.nit:96 */
335 if (UNTAG_Bool(REGB1)) {
336 /* ./../lib/standard//collection//hash_collection.nit:97 */
337 REGB1 = TAG_Int(2);
338 /* ./../lib/standard//kernel.nit:218 */
339 REGB1 = TAG_Int(UNTAG_Int(REGB0)*UNTAG_Int(REGB1));
340 /* ./../lib/standard//collection//hash_collection.nit:97 */
341 CALL_hash_collection___HashCollection___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB1);
342 }
343 stack_frame_head = fra.me.prev;
344 return;
345 }
346 void hash_collection___HashCollection___remove_node(val_t p0, val_t p1){
347 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
348 val_t REGB0;
349 val_t REGB1;
350 val_t REGB2;
351 val_t tmp;
352 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
353 fra.me.file = LOCATE_hash_collection;
354 fra.me.line = 101;
355 fra.me.meth = LOCATE_hash_collection___HashCollection___remove_node;
356 fra.me.has_broke = 0;
357 fra.me.REG_size = 5;
358 fra.me.REG[0] = NIT_NULL;
359 fra.me.REG[1] = NIT_NULL;
360 fra.me.REG[2] = NIT_NULL;
361 fra.me.REG[3] = NIT_NULL;
362 fra.me.REG[4] = NIT_NULL;
363 fra.me.REG[0] = p0;
364 fra.me.REG[1] = p1;
365 /* ./../lib/standard//collection//hash_collection.nit:104 */
366 REGB0 = CALL_hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
367 /* ./../lib/standard//collection//hash_collection.nit:105 */
368 fra.me.REG[1] = CALL_hash_collection___HashCollection___node_at_idx(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
369 /* ./../lib/standard//collection//hash_collection.nit:106 */
370 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
371 if (UNTAG_Bool(REGB1)) {
372 } else {
373 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
374 if (UNTAG_Bool(REGB2)) {
375 REGB2 = TAG_Bool(false);
376 REGB1 = REGB2;
377 } else {
378 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
379 REGB1 = REGB2;
380 }
381 }
382 if (UNTAG_Bool(REGB1)) {
383 goto label1;
384 }
385 /* ./../lib/standard//collection//hash_collection.nit:109 */
386 fra.me.REG[2] = ATTR_hash_collection___HashNode____prev_item(fra.me.REG[1]);
387 /* ./../lib/standard//collection//hash_collection.nit:110 */
388 fra.me.REG[3] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[1]);
389 /* ./../lib/standard//collection//hash_collection.nit:111 */
390 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
391 if (UNTAG_Bool(REGB1)) {
392 } else {
393 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
394 if (UNTAG_Bool(REGB2)) {
395 REGB2 = TAG_Bool(false);
396 REGB1 = REGB2;
397 } else {
398 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
399 REGB1 = REGB2;
400 }
401 }
402 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
403 if (UNTAG_Bool(REGB1)) {
404 /* ./../lib/standard//collection//hash_collection.nit:112 */
405 ATTR_hash_collection___HashNode____next_item(fra.me.REG[2]) = fra.me.REG[3];
406 } else {
407 /* ./../lib/standard//collection//hash_collection.nit:114 */
408 ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]) = fra.me.REG[3];
409 }
410 /* ./../lib/standard//collection//hash_collection.nit:116 */
411 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
412 if (UNTAG_Bool(REGB1)) {
413 } else {
414 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
415 if (UNTAG_Bool(REGB2)) {
416 REGB2 = TAG_Bool(false);
417 REGB1 = REGB2;
418 } else {
419 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
420 REGB1 = REGB2;
421 }
422 }
423 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
424 if (UNTAG_Bool(REGB1)) {
425 /* ./../lib/standard//collection//hash_collection.nit:117 */
426 ATTR_hash_collection___HashNode____prev_item(fra.me.REG[3]) = fra.me.REG[2];
427 } else {
428 /* ./../lib/standard//collection//hash_collection.nit:119 */
429 ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[2];
430 }
431 /* ./../lib/standard//collection//hash_collection.nit:123 */
432 REGB1 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
433 REGB2 = TAG_Int(1);
434 /* ./../lib/standard//kernel.nit:217 */
435 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
436 /* ./../lib/standard//collection//hash_collection.nit:123 */
437 ATTR_hash_collection___HashCollection____length(fra.me.REG[0]) = REGB2;
438 /* ./../lib/standard//collection//hash_collection.nit:124 */
439 fra.me.REG[4] = ATTR_hash_collection___HashNode____prev_in_bucklet(fra.me.REG[1]);
440 fra.me.REG[2] = fra.me.REG[4];
441 /* ./../lib/standard//collection//hash_collection.nit:125 */
442 fra.me.REG[1] = ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[1]);
443 fra.me.REG[3] = fra.me.REG[1];
444 /* ./../lib/standard//collection//hash_collection.nit:126 */
445 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
446 if (UNTAG_Bool(REGB2)) {
447 } else {
448 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
449 if (UNTAG_Bool(REGB1)) {
450 REGB1 = TAG_Bool(false);
451 REGB2 = REGB1;
452 } else {
453 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
454 REGB2 = REGB1;
455 }
456 }
457 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
458 if (UNTAG_Bool(REGB2)) {
459 /* ./../lib/standard//collection//hash_collection.nit:127 */
460 ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[2]) = fra.me.REG[3];
461 } else {
462 /* ./../lib/standard//collection//hash_collection.nit:129 */
463 fra.me.REG[1] = ATTR_hash_collection___HashCollection____array(fra.me.REG[0]);
464 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
465 if (UNTAG_Bool(REGB2)) {
466 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 129);
467 }
468 /* ./../lib/standard//collection//array.nit:655 */
469 ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)]=fra.me.REG[3];
470 }
471 /* ./../lib/standard//collection//hash_collection.nit:131 */
472 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
473 if (UNTAG_Bool(REGB0)) {
474 } else {
475 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
476 if (UNTAG_Bool(REGB2)) {
477 REGB2 = TAG_Bool(false);
478 REGB0 = REGB2;
479 } else {
480 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
481 REGB0 = REGB2;
482 }
483 }
484 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
485 if (UNTAG_Bool(REGB0)) {
486 /* ./../lib/standard//collection//hash_collection.nit:132 */
487 ATTR_hash_collection___HashNode____prev_in_bucklet(fra.me.REG[3]) = fra.me.REG[2];
488 }
489 /* ./../lib/standard//collection//hash_collection.nit:135 */
490 ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = NIT_NULL;
491 label1: while(0);
492 stack_frame_head = fra.me.prev;
493 return;
494 }
495 void hash_collection___HashCollection___raz(val_t p0){
496 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
497 val_t REGB0;
498 val_t REGB1;
499 val_t tmp;
500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
501 fra.me.file = LOCATE_hash_collection;
502 fra.me.line = 138;
503 fra.me.meth = LOCATE_hash_collection___HashCollection___raz;
504 fra.me.has_broke = 0;
505 fra.me.REG_size = 2;
506 fra.me.REG[0] = NIT_NULL;
507 fra.me.REG[1] = NIT_NULL;
508 fra.me.REG[0] = p0;
509 /* ./../lib/standard//collection//hash_collection.nit:140 */
510 REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
511 if (UNTAG_Bool(REGB0)) {
512 } else {
513 nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_hash_collection, 140);
514 }
515 REGB0 = ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]);
516 REGB1 = TAG_Int(1);
517 /* ./../lib/standard//kernel.nit:217 */
518 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
519 /* ./../lib/standard//collection//hash_collection.nit:141 */
520 while(1) {
521 REGB0 = TAG_Int(0);
522 /* ./../lib/standard//kernel.nit:213 */
523 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
524 /* ./../lib/standard//collection//hash_collection.nit:141 */
525 if (UNTAG_Bool(REGB0)) {
526 /* ./../lib/standard//collection//hash_collection.nit:142 */
527 fra.me.REG[1] = ATTR_hash_collection___HashCollection____array(fra.me.REG[0]);
528 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
529 if (UNTAG_Bool(REGB0)) {
530 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 142);
531 }
532 /* ./../lib/standard//collection//array.nit:655 */
533 ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)]=NIT_NULL;
534 /* ./../lib/standard//collection//hash_collection.nit:143 */
535 REGB0 = TAG_Int(1);
536 /* ./../lib/standard//kernel.nit:217 */
537 REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
538 /* ./../lib/standard//collection//hash_collection.nit:143 */
539 REGB1 = REGB0;
540 } else {
541 /* ./../lib/standard//collection//hash_collection.nit:141 */
542 goto label1;
543 }
544 }
545 label1: while(0);
546 /* ./../lib/standard//collection//hash_collection.nit:145 */
547 REGB1 = TAG_Int(0);
548 ATTR_hash_collection___HashCollection____length(fra.me.REG[0]) = REGB1;
549 /* ./../lib/standard//collection//hash_collection.nit:146 */
550 ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]) = NIT_NULL;
551 /* ./../lib/standard//collection//hash_collection.nit:147 */
552 ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]) = NIT_NULL;
553 /* ./../lib/standard//collection//hash_collection.nit:148 */
554 ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = NIT_NULL;
555 stack_frame_head = fra.me.prev;
556 return;
557 }
558 void hash_collection___HashCollection___enlarge(val_t p0, val_t p1){
559 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
560 val_t REGB0;
561 val_t REGB1;
562 val_t REGB2;
563 val_t REGB3;
564 val_t tmp;
565 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
566 fra.me.file = LOCATE_hash_collection;
567 fra.me.line = 151;
568 fra.me.meth = LOCATE_hash_collection___HashCollection___enlarge;
569 fra.me.has_broke = 0;
570 fra.me.REG_size = 4;
571 fra.me.REG[0] = NIT_NULL;
572 fra.me.REG[1] = NIT_NULL;
573 fra.me.REG[2] = NIT_NULL;
574 fra.me.REG[3] = NIT_NULL;
575 fra.me.REG[0] = p0;
576 REGB0 = p1;
577 /* ./../lib/standard//collection//hash_collection.nit:153 */
578 REGB1 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
579 if (UNTAG_Bool(REGB1)) {
580 } else {
581 nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_hash_collection, 153);
582 }
583 REGB1 = ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]);
584 /* ./../lib/standard//collection//hash_collection.nit:155 */
585 REGB2 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
586 if (UNTAG_Bool(REGB2)) {
587 } else {
588 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 155);
589 }
590 REGB2 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
591 REGB3 = TAG_Int(1);
592 /* ./../lib/standard//kernel.nit:215 */
593 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
594 /* ./../lib/standard//kernel.nit:212 */
595 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
596 /* ./../lib/standard//collection//hash_collection.nit:155 */
597 if (UNTAG_Bool(REGB3)) {
598 REGB3 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
599 if (UNTAG_Bool(REGB3)) {
600 } else {
601 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 155);
602 }
603 REGB3 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
604 REGB2 = TAG_Int(1);
605 /* ./../lib/standard//kernel.nit:215 */
606 REGB2 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
607 /* ./../lib/standard//collection//hash_collection.nit:155 */
608 REGB0 = REGB2;
609 }
610 /* ./../lib/standard//collection//hash_collection.nit:156 */
611 REGB2 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
612 if (UNTAG_Bool(REGB2)) {
613 } else {
614 nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_hash_collection, 156);
615 }
616 REGB2 = ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]);
617 /* ./../lib/standard//kernel.nit:211 */
618 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB2));
619 /* ./../lib/standard//collection//hash_collection.nit:156 */
620 if (UNTAG_Bool(REGB2)) {
621 goto label1;
622 }
623 /* ./../lib/standard//collection//hash_collection.nit:157 */
624 ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
625 /* ./../lib/standard//collection//hash_collection.nit:158 */
626 ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = NIT_NULL;
627 /* ./../lib/standard//collection//array.nit:648 */
628 fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
629 /* ./../lib/standard//collection//hash_collection.nit:162 */
630 ATTR_hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
631 /* ./../lib/standard//collection//hash_collection.nit:165 */
632 REGB2 = TAG_Int(1);
633 /* ./../lib/standard//kernel.nit:217 */
634 REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
635 /* ./../lib/standard//collection//hash_collection.nit:166 */
636 while(1) {
637 REGB0 = TAG_Int(0);
638 /* ./../lib/standard//kernel.nit:213 */
639 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
640 /* ./../lib/standard//collection//hash_collection.nit:166 */
641 if (UNTAG_Bool(REGB0)) {
642 /* ./../lib/standard//collection//array.nit:655 */
643 ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB2)]=NIT_NULL;
644 /* ./../lib/standard//collection//hash_collection.nit:168 */
645 REGB0 = TAG_Int(1);
646 /* ./../lib/standard//kernel.nit:217 */
647 REGB0 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
648 /* ./../lib/standard//collection//hash_collection.nit:168 */
649 REGB2 = REGB0;
650 } else {
651 /* ./../lib/standard//collection//hash_collection.nit:166 */
652 goto label2;
653 }
654 }
655 label2: while(0);
656 /* ./../lib/standard//collection//hash_collection.nit:171 */
657 REGB2 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
658 if (UNTAG_Bool(REGB2)) {
659 } else {
660 nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_hash_collection, 171);
661 }
662 REGB2 = ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]);
663 /* ./../lib/standard//kernel.nit:211 */
664 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
665 /* ./../lib/standard//collection//hash_collection.nit:171 */
666 if (UNTAG_Bool(REGB1)) {
667 goto label1;
668 }
669 /* ./../lib/standard//collection//hash_collection.nit:174 */
670 fra.me.REG[2] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
671 /* ./../lib/standard//collection//hash_collection.nit:175 */
672 while(1) {
673 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
674 if (UNTAG_Bool(REGB1)) {
675 } else {
676 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
677 if (UNTAG_Bool(REGB2)) {
678 REGB2 = TAG_Bool(false);
679 REGB1 = REGB2;
680 } else {
681 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
682 REGB1 = REGB2;
683 }
684 }
685 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
686 if (UNTAG_Bool(REGB1)) {
687 /* ./../lib/standard//collection//hash_collection.nit:176 */
688 REGB1 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[2])!=NIT_NULL);
689 if (UNTAG_Bool(REGB1)) {
690 } else {
691 nit_abort("Uninitialized attribute %s", "_key", LOCATE_hash_collection, 176);
692 }
693 fra.me.REG[3] = ATTR_hash_collection___HashNode____key(fra.me.REG[2]);
694 REGB1 = CALL_hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
695 /* ./../lib/standard//collection//array.nit:654 */
696 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
697 /* ./../lib/standard//collection//array.nit:655 */
698 ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)]=fra.me.REG[2];
699 /* ./../lib/standard//collection//hash_collection.nit:180 */
700 ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[2]) = fra.me.REG[3];
701 /* ./../lib/standard//collection//hash_collection.nit:181 */
702 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
703 if (UNTAG_Bool(REGB1)) {
704 } else {
705 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
706 if (UNTAG_Bool(REGB2)) {
707 REGB2 = TAG_Bool(false);
708 REGB1 = REGB2;
709 } else {
710 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
711 REGB1 = REGB2;
712 }
713 }
714 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
715 if (UNTAG_Bool(REGB1)) {
716 ATTR_hash_collection___HashNode____prev_in_bucklet(fra.me.REG[3]) = fra.me.REG[2];
717 }
718 /* ./../lib/standard//collection//hash_collection.nit:182 */
719 fra.me.REG[3] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[2]);
720 fra.me.REG[2] = fra.me.REG[3];
721 } else {
722 /* ./../lib/standard//collection//hash_collection.nit:175 */
723 goto label3;
724 }
725 }
726 label3: while(0);
727 label1: while(0);
728 stack_frame_head = fra.me.prev;
729 return;
730 }
731 void hash_collection___HashCollection___init(val_t p0, int* init_table){
732 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashCollection].i;
733 struct {struct stack_frame_t me;} fra;
734 val_t tmp;
735 if (init_table[itpos0]) return;
736 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
737 fra.me.file = LOCATE_hash_collection;
738 fra.me.line = 0;
739 fra.me.meth = LOCATE_hash_collection___HashCollection___init;
740 fra.me.has_broke = 0;
741 fra.me.REG_size = 0;
742 stack_frame_head = fra.me.prev;
743 init_table[itpos0] = 1;
744 return;
745 }
746 val_t hash_collection___HashNode___next_item(val_t p0){
747 struct {struct stack_frame_t me;} fra;
748 val_t tmp;
749 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
750 fra.me.file = LOCATE_hash_collection;
751 fra.me.line = 190;
752 fra.me.meth = LOCATE_hash_collection___HashNode___next_item;
753 fra.me.has_broke = 0;
754 fra.me.REG_size = 1;
755 fra.me.REG[0] = NIT_NULL;
756 fra.me.REG[0] = p0;
757 /* ./../lib/standard//collection//hash_collection.nit:190 */
758 fra.me.REG[0] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]);
759 stack_frame_head = fra.me.prev;
760 return fra.me.REG[0];
761 }
762 void hash_collection___HashNode___next_item__eq(val_t p0, val_t p1){
763 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
764 val_t tmp;
765 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
766 fra.me.file = LOCATE_hash_collection;
767 fra.me.line = 190;
768 fra.me.meth = LOCATE_hash_collection___HashNode___next_item__eq;
769 fra.me.has_broke = 0;
770 fra.me.REG_size = 2;
771 fra.me.REG[0] = NIT_NULL;
772 fra.me.REG[1] = NIT_NULL;
773 fra.me.REG[0] = p0;
774 fra.me.REG[1] = p1;
775 /* ./../lib/standard//collection//hash_collection.nit:190 */
776 ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
777 stack_frame_head = fra.me.prev;
778 return;
779 }
780 val_t hash_collection___HashNode___prev_item(val_t p0){
781 struct {struct stack_frame_t me;} fra;
782 val_t tmp;
783 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
784 fra.me.file = LOCATE_hash_collection;
785 fra.me.line = 191;
786 fra.me.meth = LOCATE_hash_collection___HashNode___prev_item;
787 fra.me.has_broke = 0;
788 fra.me.REG_size = 1;
789 fra.me.REG[0] = NIT_NULL;
790 fra.me.REG[0] = p0;
791 /* ./../lib/standard//collection//hash_collection.nit:191 */
792 fra.me.REG[0] = ATTR_hash_collection___HashNode____prev_item(fra.me.REG[0]);
793 stack_frame_head = fra.me.prev;
794 return fra.me.REG[0];
795 }
796 void hash_collection___HashNode___prev_item__eq(val_t p0, val_t p1){
797 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
798 val_t tmp;
799 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
800 fra.me.file = LOCATE_hash_collection;
801 fra.me.line = 191;
802 fra.me.meth = LOCATE_hash_collection___HashNode___prev_item__eq;
803 fra.me.has_broke = 0;
804 fra.me.REG_size = 2;
805 fra.me.REG[0] = NIT_NULL;
806 fra.me.REG[1] = NIT_NULL;
807 fra.me.REG[0] = p0;
808 fra.me.REG[1] = p1;
809 /* ./../lib/standard//collection//hash_collection.nit:191 */
810 ATTR_hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
811 stack_frame_head = fra.me.prev;
812 return;
813 }
814 void hash_collection___HashNode___init(val_t p0, val_t p1, int* init_table){
815 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashNode].i;
816 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
817 val_t tmp;
818 if (init_table[itpos1]) return;
819 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
820 fra.me.file = LOCATE_hash_collection;
821 fra.me.line = 194;
822 fra.me.meth = LOCATE_hash_collection___HashNode___init;
823 fra.me.has_broke = 0;
824 fra.me.REG_size = 2;
825 fra.me.REG[0] = NIT_NULL;
826 fra.me.REG[1] = NIT_NULL;
827 fra.me.REG[0] = p0;
828 fra.me.REG[1] = p1;
829 /* ./../lib/standard//collection//hash_collection.nit:196 */
830 ATTR_hash_collection___HashNode____key(fra.me.REG[0]) = fra.me.REG[1];
831 stack_frame_head = fra.me.prev;
832 init_table[itpos1] = 1;
833 return;
834 }
835 val_t hash_collection___HashMap_____bra(val_t p0, val_t p1){
836 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
837 val_t REGB0;
838 val_t REGB1;
839 val_t tmp;
840 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
841 fra.me.file = LOCATE_hash_collection;
842 fra.me.line = 204;
843 fra.me.meth = LOCATE_hash_collection___HashMap_____bra;
844 fra.me.has_broke = 0;
845 fra.me.REG_size = 2;
846 fra.me.REG[0] = NIT_NULL;
847 fra.me.REG[1] = NIT_NULL;
848 fra.me.REG[0] = p0;
849 fra.me.REG[1] = p1;
850 /* ./../lib/standard//collection//hash_collection.nit:206 */
851 fra.me.REG[1] = CALL_hash_collection___HashCollection___node_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
852 /* ./../lib/standard//collection//hash_collection.nit:207 */
853 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
854 if (UNTAG_Bool(REGB0)) {
855 } else {
856 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
857 if (UNTAG_Bool(REGB1)) {
858 REGB1 = TAG_Bool(false);
859 REGB0 = REGB1;
860 } else {
861 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
862 REGB0 = REGB1;
863 }
864 }
865 if (UNTAG_Bool(REGB0)) {
866 /* ./../lib/standard//collection//hash_collection.nit:208 */
867 nit_abort("Aborted", NULL, LOCATE_hash_collection, 208);
868 } else {
869 /* ./../lib/standard//collection//hash_collection.nit:210 */
870 fra.me.REG[1] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[1]);
871 goto label1;
872 }
873 label1: while(0);
874 stack_frame_head = fra.me.prev;
875 return fra.me.REG[1];
876 }
877 val_t hash_collection___HashMap___has_key(val_t p0, val_t p1){
878 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
879 val_t REGB0;
880 val_t REGB1;
881 val_t tmp;
882 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
883 fra.me.file = LOCATE_hash_collection;
884 fra.me.line = 214;
885 fra.me.meth = LOCATE_hash_collection___HashMap___has_key;
886 fra.me.has_broke = 0;
887 fra.me.REG_size = 2;
888 fra.me.REG[0] = NIT_NULL;
889 fra.me.REG[1] = NIT_NULL;
890 fra.me.REG[0] = p0;
891 fra.me.REG[1] = p1;
892 /* ./../lib/standard//collection//hash_collection.nit:214 */
893 fra.me.REG[1] = CALL_hash_collection___HashCollection___node_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
894 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
895 if (UNTAG_Bool(REGB0)) {
896 } else {
897 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
898 if (UNTAG_Bool(REGB1)) {
899 REGB1 = TAG_Bool(false);
900 REGB0 = REGB1;
901 } else {
902 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
903 REGB0 = REGB1;
904 }
905 }
906 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
907 goto label1;
908 label1: while(0);
909 stack_frame_head = fra.me.prev;
910 return REGB0;
911 }
912 val_t hash_collection___HashMap___iterator(val_t p0){
913 struct {struct stack_frame_t me;} fra;
914 val_t tmp;
915 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
916 fra.me.file = LOCATE_hash_collection;
917 fra.me.line = 216;
918 fra.me.meth = LOCATE_hash_collection___HashMap___iterator;
919 fra.me.has_broke = 0;
920 fra.me.REG_size = 1;
921 fra.me.REG[0] = NIT_NULL;
922 fra.me.REG[0] = p0;
923 /* ./../lib/standard//collection//hash_collection.nit:216 */
924 fra.me.REG[0] = NEW_HashMapIterator_hash_collection___HashMapIterator___init(fra.me.REG[0]);
925 goto label1;
926 label1: while(0);
927 stack_frame_head = fra.me.prev;
928 return fra.me.REG[0];
929 }
930 void hash_collection___HashMap___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
931 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
932 val_t REGB0;
933 val_t REGB1;
934 fun_t CREG[1];
935 val_t tmp;
936 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
937 fra.me.file = LOCATE_hash_collection;
938 fra.me.line = 218;
939 fra.me.meth = LOCATE_hash_collection___HashMap___iterate;
940 fra.me.has_broke = 0;
941 fra.me.REG_size = 2;
942 fra.me.REG[0] = NIT_NULL;
943 fra.me.REG[1] = NIT_NULL;
944 fra.me.closure_ctx = closctx_param;
945 fra.me.closure_funs = CREG;
946 fra.me.REG[0] = p0;
947 CREG[0] = clos_fun0;
948 /* ./../lib/standard//collection//hash_collection.nit:221 */
949 fra.me.REG[0] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
950 /* ./../lib/standard//collection//hash_collection.nit:222 */
951 while(1) {
952 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
953 if (UNTAG_Bool(REGB0)) {
954 } else {
955 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
956 if (UNTAG_Bool(REGB1)) {
957 REGB1 = TAG_Bool(false);
958 REGB0 = REGB1;
959 } else {
960 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
961 REGB0 = REGB1;
962 }
963 }
964 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
965 if (UNTAG_Bool(REGB0)) {
966 /* ./../lib/standard//collection//hash_collection.nit:223 */
967 fra.me.REG[1] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[0]);
968 ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, fra.me.REG[1]);
969 if (closctx_param->has_broke) {
970 goto label1;
971 }
972 /* ./../lib/standard//collection//hash_collection.nit:224 */
973 fra.me.REG[1] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]);
974 fra.me.REG[0] = fra.me.REG[1];
975 } else {
976 /* ./../lib/standard//collection//hash_collection.nit:222 */
977 goto label2;
978 }
979 }
980 label2: while(0);
981 label1: while(0);
982 stack_frame_head = fra.me.prev;
983 return;
984 }
985 val_t hash_collection___HashMap___first(val_t p0){
986 struct {struct stack_frame_t me;} fra;
987 val_t REGB0;
988 val_t REGB1;
989 val_t tmp;
990 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
991 fra.me.file = LOCATE_hash_collection;
992 fra.me.line = 228;
993 fra.me.meth = LOCATE_hash_collection___HashMap___first;
994 fra.me.has_broke = 0;
995 fra.me.REG_size = 1;
996 fra.me.REG[0] = NIT_NULL;
997 fra.me.REG[0] = p0;
998 /* ./../lib/standard//collection//hash_collection.nit:230 */
999 REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
1000 if (UNTAG_Bool(REGB0)) {
1001 } else {
1002 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 230);
1003 }
1004 REGB0 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
1005 REGB1 = TAG_Int(0);
1006 /* ./../lib/standard//kernel.nit:214 */
1007 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
1008 /* ./../lib/standard//collection//hash_collection.nit:230 */
1009 if (UNTAG_Bool(REGB1)) {
1010 } else {
1011 nit_abort("Assert failed", NULL, LOCATE_hash_collection, 230);
1012 }
1013 /* ./../lib/standard//collection//hash_collection.nit:231 */
1014 fra.me.REG[0] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
1015 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1016 if (UNTAG_Bool(REGB1)) {
1017 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 231);
1018 }
1019 fra.me.REG[0] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[0]);
1020 goto label1;
1021 label1: while(0);
1022 stack_frame_head = fra.me.prev;
1023 return fra.me.REG[0];
1024 }
1025 val_t hash_collection___HashMap___is_empty(val_t p0){
1026 struct {struct stack_frame_t me;} fra;
1027 val_t REGB0;
1028 val_t REGB1;
1029 val_t REGB2;
1030 val_t tmp;
1031 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1032 fra.me.file = LOCATE_hash_collection;
1033 fra.me.line = 234;
1034 fra.me.meth = LOCATE_hash_collection___HashMap___is_empty;
1035 fra.me.has_broke = 0;
1036 fra.me.REG_size = 1;
1037 fra.me.REG[0] = NIT_NULL;
1038 fra.me.REG[0] = p0;
1039 /* ./../lib/standard//collection//hash_collection.nit:234 */
1040 REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
1041 if (UNTAG_Bool(REGB0)) {
1042 } else {
1043 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 234);
1044 }
1045 REGB0 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
1046 REGB1 = TAG_Int(0);
1047 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1048 if (UNTAG_Bool(REGB2)) {
1049 } else {
1050 /* ./../lib/standard//kernel.nit:207 */
1051 REGB1 = TAG_Bool((REGB0)==(REGB1));
1052 /* ./../lib/standard//collection//hash_collection.nit:234 */
1053 REGB2 = REGB1;
1054 }
1055 goto label1;
1056 label1: while(0);
1057 stack_frame_head = fra.me.prev;
1058 return REGB2;
1059 }
1060 val_t hash_collection___HashMap___count(val_t p0, val_t p1){
1061 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1062 val_t REGB0;
1063 val_t REGB1;
1064 val_t REGB2;
1065 val_t tmp;
1066 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1067 fra.me.file = LOCATE_hash_collection;
1068 fra.me.line = 236;
1069 fra.me.meth = LOCATE_hash_collection___HashMap___count;
1070 fra.me.has_broke = 0;
1071 fra.me.REG_size = 3;
1072 fra.me.REG[0] = NIT_NULL;
1073 fra.me.REG[1] = NIT_NULL;
1074 fra.me.REG[2] = NIT_NULL;
1075 fra.me.REG[0] = p0;
1076 fra.me.REG[1] = p1;
1077 /* ./../lib/standard//collection//hash_collection.nit:238 */
1078 REGB0 = TAG_Int(0);
1079 /* ./../lib/standard//collection//hash_collection.nit:239 */
1080 fra.me.REG[0] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
1081 /* ./../lib/standard//collection//hash_collection.nit:240 */
1082 while(1) {
1083 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1084 if (UNTAG_Bool(REGB1)) {
1085 } else {
1086 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1087 if (UNTAG_Bool(REGB2)) {
1088 REGB2 = TAG_Bool(false);
1089 REGB1 = REGB2;
1090 } else {
1091 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1092 REGB1 = REGB2;
1093 }
1094 }
1095 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1096 if (UNTAG_Bool(REGB1)) {
1097 /* ./../lib/standard//collection//hash_collection.nit:241 */
1098 fra.me.REG[2] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[0]);
1099 REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
1100 if (UNTAG_Bool(REGB1)) {
1101 } else {
1102 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1103 if (UNTAG_Bool(REGB2)) {
1104 REGB2 = TAG_Bool(false);
1105 REGB1 = REGB2;
1106 } else {
1107 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1108 REGB1 = REGB2;
1109 }
1110 }
1111 if (UNTAG_Bool(REGB1)) {
1112 REGB1 = TAG_Int(1);
1113 /* ./../lib/standard//kernel.nit:215 */
1114 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1115 /* ./../lib/standard//collection//hash_collection.nit:241 */
1116 REGB0 = REGB1;
1117 }
1118 /* ./../lib/standard//collection//hash_collection.nit:242 */
1119 fra.me.REG[2] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]);
1120 fra.me.REG[0] = fra.me.REG[2];
1121 } else {
1122 /* ./../lib/standard//collection//hash_collection.nit:240 */
1123 goto label1;
1124 }
1125 }
1126 label1: while(0);
1127 /* ./../lib/standard//collection//hash_collection.nit:244 */
1128 goto label2;
1129 label2: while(0);
1130 stack_frame_head = fra.me.prev;
1131 return REGB0;
1132 }
1133 val_t hash_collection___HashMap___has(val_t p0, val_t p1){
1134 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1135 val_t REGB0;
1136 val_t REGB1;
1137 val_t tmp;
1138 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1139 fra.me.file = LOCATE_hash_collection;
1140 fra.me.line = 247;
1141 fra.me.meth = LOCATE_hash_collection___HashMap___has;
1142 fra.me.has_broke = 0;
1143 fra.me.REG_size = 3;
1144 fra.me.REG[0] = NIT_NULL;
1145 fra.me.REG[1] = NIT_NULL;
1146 fra.me.REG[2] = NIT_NULL;
1147 fra.me.REG[0] = p0;
1148 fra.me.REG[1] = p1;
1149 /* ./../lib/standard//collection//hash_collection.nit:249 */
1150 fra.me.REG[0] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
1151 /* ./../lib/standard//collection//hash_collection.nit:250 */
1152 while(1) {
1153 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1154 if (UNTAG_Bool(REGB0)) {
1155 } else {
1156 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1157 if (UNTAG_Bool(REGB1)) {
1158 REGB1 = TAG_Bool(false);
1159 REGB0 = REGB1;
1160 } else {
1161 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1162 REGB0 = REGB1;
1163 }
1164 }
1165 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1166 if (UNTAG_Bool(REGB0)) {
1167 /* ./../lib/standard//collection//hash_collection.nit:251 */
1168 fra.me.REG[2] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[0]);
1169 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
1170 if (UNTAG_Bool(REGB0)) {
1171 } else {
1172 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1173 if (UNTAG_Bool(REGB1)) {
1174 REGB1 = TAG_Bool(false);
1175 REGB0 = REGB1;
1176 } else {
1177 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1178 REGB0 = REGB1;
1179 }
1180 }
1181 if (UNTAG_Bool(REGB0)) {
1182 REGB0 = TAG_Bool(true);
1183 goto label1;
1184 }
1185 /* ./../lib/standard//collection//hash_collection.nit:252 */
1186 fra.me.REG[2] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]);
1187 fra.me.REG[0] = fra.me.REG[2];
1188 } else {
1189 /* ./../lib/standard//collection//hash_collection.nit:250 */
1190 goto label2;
1191 }
1192 }
1193 label2: while(0);
1194 /* ./../lib/standard//collection//hash_collection.nit:254 */
1195 REGB1 = TAG_Bool(false);
1196 REGB0 = REGB1;
1197 goto label1;
1198 label1: while(0);
1199 stack_frame_head = fra.me.prev;
1200 return REGB0;
1201 }
1202 val_t hash_collection___HashMap___has_only(val_t p0, val_t p1){
1203 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1204 val_t REGB0;
1205 val_t REGB1;
1206 val_t tmp;
1207 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1208 fra.me.file = LOCATE_hash_collection;
1209 fra.me.line = 257;
1210 fra.me.meth = LOCATE_hash_collection___HashMap___has_only;
1211 fra.me.has_broke = 0;
1212 fra.me.REG_size = 3;
1213 fra.me.REG[0] = NIT_NULL;
1214 fra.me.REG[1] = NIT_NULL;
1215 fra.me.REG[2] = NIT_NULL;
1216 fra.me.REG[0] = p0;
1217 fra.me.REG[1] = p1;
1218 /* ./../lib/standard//collection//hash_collection.nit:259 */
1219 fra.me.REG[0] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
1220 /* ./../lib/standard//collection//hash_collection.nit:260 */
1221 while(1) {
1222 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1223 if (UNTAG_Bool(REGB0)) {
1224 } else {
1225 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1226 if (UNTAG_Bool(REGB1)) {
1227 REGB1 = TAG_Bool(false);
1228 REGB0 = REGB1;
1229 } else {
1230 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1231 REGB0 = REGB1;
1232 }
1233 }
1234 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1235 if (UNTAG_Bool(REGB0)) {
1236 /* ./../lib/standard//collection//hash_collection.nit:261 */
1237 fra.me.REG[2] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[0]);
1238 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
1239 if (UNTAG_Bool(REGB0)) {
1240 } else {
1241 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1242 if (UNTAG_Bool(REGB1)) {
1243 REGB1 = TAG_Bool(false);
1244 REGB0 = REGB1;
1245 } else {
1246 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1247 REGB0 = REGB1;
1248 }
1249 }
1250 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1251 if (UNTAG_Bool(REGB0)) {
1252 REGB0 = TAG_Bool(false);
1253 goto label1;
1254 }
1255 /* ./../lib/standard//collection//hash_collection.nit:262 */
1256 fra.me.REG[2] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]);
1257 fra.me.REG[0] = fra.me.REG[2];
1258 } else {
1259 /* ./../lib/standard//collection//hash_collection.nit:260 */
1260 goto label2;
1261 }
1262 }
1263 label2: while(0);
1264 /* ./../lib/standard//collection//hash_collection.nit:264 */
1265 REGB1 = TAG_Bool(true);
1266 REGB0 = REGB1;
1267 goto label1;
1268 label1: while(0);
1269 stack_frame_head = fra.me.prev;
1270 return REGB0;
1271 }
1272 void hash_collection___HashMap_____braeq(val_t p0, val_t p1, val_t p2){
1273 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1274 val_t REGB0;
1275 val_t REGB1;
1276 val_t REGB2;
1277 val_t tmp;
1278 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1279 fra.me.file = LOCATE_hash_collection;
1280 fra.me.line = 267;
1281 fra.me.meth = LOCATE_hash_collection___HashMap_____braeq;
1282 fra.me.has_broke = 0;
1283 fra.me.REG_size = 4;
1284 fra.me.REG[0] = NIT_NULL;
1285 fra.me.REG[1] = NIT_NULL;
1286 fra.me.REG[2] = NIT_NULL;
1287 fra.me.REG[3] = NIT_NULL;
1288 fra.me.REG[0] = p0;
1289 fra.me.REG[1] = p1;
1290 fra.me.REG[2] = p2;
1291 /* ./../lib/standard//collection//hash_collection.nit:269 */
1292 REGB0 = CALL_hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1293 /* ./../lib/standard//collection//hash_collection.nit:270 */
1294 fra.me.REG[3] = CALL_hash_collection___HashCollection___node_at_idx(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
1295 /* ./../lib/standard//collection//hash_collection.nit:271 */
1296 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1297 if (UNTAG_Bool(REGB1)) {
1298 } else {
1299 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1300 if (UNTAG_Bool(REGB2)) {
1301 REGB2 = TAG_Bool(false);
1302 REGB1 = REGB2;
1303 } else {
1304 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1305 REGB1 = REGB2;
1306 }
1307 }
1308 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1309 if (UNTAG_Bool(REGB1)) {
1310 /* ./../lib/standard//collection//hash_collection.nit:272 */
1311 ATTR_hash_collection___HashNode____key(fra.me.REG[3]) = fra.me.REG[1];
1312 /* ./../lib/standard//collection//hash_collection.nit:273 */
1313 ATTR_hash_collection___HashMapNode____value(fra.me.REG[3]) = fra.me.REG[2];
1314 } else {
1315 /* ./../lib/standard//collection//hash_collection.nit:275 */
1316 fra.me.REG[2] = NEW_HashMapNode_hash_collection___HashMapNode___init(fra.me.REG[1], fra.me.REG[2]);
1317 CALL_hash_collection___HashCollection___store(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
1318 }
1319 stack_frame_head = fra.me.prev;
1320 return;
1321 }
1322 void hash_collection___HashMap___remove(val_t p0, val_t p1){
1323 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1324 val_t REGB0;
1325 val_t REGB1;
1326 val_t tmp;
1327 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1328 fra.me.file = LOCATE_hash_collection;
1329 fra.me.line = 279;
1330 fra.me.meth = LOCATE_hash_collection___HashMap___remove;
1331 fra.me.has_broke = 0;
1332 fra.me.REG_size = 4;
1333 fra.me.REG[0] = NIT_NULL;
1334 fra.me.REG[1] = NIT_NULL;
1335 fra.me.REG[2] = NIT_NULL;
1336 fra.me.REG[3] = NIT_NULL;
1337 fra.me.REG[0] = p0;
1338 fra.me.REG[1] = p1;
1339 /* ./../lib/standard//collection//hash_collection.nit:281 */
1340 fra.me.REG[2] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
1341 /* ./../lib/standard//collection//hash_collection.nit:282 */
1342 while(1) {
1343 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1344 if (UNTAG_Bool(REGB0)) {
1345 } else {
1346 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1347 if (UNTAG_Bool(REGB1)) {
1348 REGB1 = TAG_Bool(false);
1349 REGB0 = REGB1;
1350 } else {
1351 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1352 REGB0 = REGB1;
1353 }
1354 }
1355 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1356 if (UNTAG_Bool(REGB0)) {
1357 /* ./../lib/standard//collection//hash_collection.nit:283 */
1358 fra.me.REG[3] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[2]);
1359 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
1360 if (UNTAG_Bool(REGB0)) {
1361 } else {
1362 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1363 if (UNTAG_Bool(REGB1)) {
1364 REGB1 = TAG_Bool(false);
1365 REGB0 = REGB1;
1366 } else {
1367 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1368 REGB0 = REGB1;
1369 }
1370 }
1371 if (UNTAG_Bool(REGB0)) {
1372 /* ./../lib/standard//collection//hash_collection.nit:284 */
1373 REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[2])!=NIT_NULL);
1374 if (UNTAG_Bool(REGB0)) {
1375 } else {
1376 nit_abort("Uninitialized attribute %s", "_key", LOCATE_hash_collection, 284);
1377 }
1378 fra.me.REG[3] = ATTR_hash_collection___HashNode____key(fra.me.REG[2]);
1379 CALL_hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1380 /* ./../lib/standard//collection//hash_collection.nit:285 */
1381 goto label1;
1382 }
1383 /* ./../lib/standard//collection//hash_collection.nit:287 */
1384 fra.me.REG[3] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[2]);
1385 fra.me.REG[2] = fra.me.REG[3];
1386 } else {
1387 /* ./../lib/standard//collection//hash_collection.nit:282 */
1388 goto label2;
1389 }
1390 }
1391 label2: while(0);
1392 label1: while(0);
1393 stack_frame_head = fra.me.prev;
1394 return;
1395 }
1396 void hash_collection___HashMap___remove_at(val_t p0, val_t p1){
1397 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1398 val_t tmp;
1399 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1400 fra.me.file = LOCATE_hash_collection;
1401 fra.me.line = 291;
1402 fra.me.meth = LOCATE_hash_collection___HashMap___remove_at;
1403 fra.me.has_broke = 0;
1404 fra.me.REG_size = 2;
1405 fra.me.REG[0] = NIT_NULL;
1406 fra.me.REG[1] = NIT_NULL;
1407 fra.me.REG[0] = p0;
1408 fra.me.REG[1] = p1;
1409 /* ./../lib/standard//collection//hash_collection.nit:291 */
1410 CALL_hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1411 stack_frame_head = fra.me.prev;
1412 return;
1413 }
1414 void hash_collection___HashMap___clear(val_t p0){
1415 struct {struct stack_frame_t me;} fra;
1416 val_t tmp;
1417 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1418 fra.me.file = LOCATE_hash_collection;
1419 fra.me.line = 293;
1420 fra.me.meth = LOCATE_hash_collection___HashMap___clear;
1421 fra.me.has_broke = 0;
1422 fra.me.REG_size = 1;
1423 fra.me.REG[0] = NIT_NULL;
1424 fra.me.REG[0] = p0;
1425 /* ./../lib/standard//collection//hash_collection.nit:293 */
1426 CALL_hash_collection___HashCollection___raz(fra.me.REG[0])(fra.me.REG[0]);
1427 stack_frame_head = fra.me.prev;
1428 return;
1429 }
1430 void hash_collection___HashMap___init(val_t p0, int* init_table){
1431 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashMap].i;
1432 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1433 val_t REGB0;
1434 val_t tmp;
1435 if (init_table[itpos2]) return;
1436 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1437 fra.me.file = LOCATE_hash_collection;
1438 fra.me.line = 295;
1439 fra.me.meth = LOCATE_hash_collection___HashMap___init;
1440 fra.me.has_broke = 0;
1441 fra.me.REG_size = 2;
1442 fra.me.REG[0] = NIT_NULL;
1443 fra.me.REG[1] = NIT_NULL;
1444 fra.me.REG[0] = p0;
1445 /* ./../lib/standard//collection//hash_collection.nit:295 */
1446 fra.me.REG[1] = fra.me.REG[0];
1447 CALL_hash_collection___HashCollection___init(fra.me.REG[0])(fra.me.REG[0], init_table);
1448 /* ./../lib/standard//collection//hash_collection.nit:297 */
1449 REGB0 = TAG_Int(0);
1450 ATTR_hash_collection___HashCollection____capacity(fra.me.REG[1]) = REGB0;
1451 /* ./../lib/standard//collection//hash_collection.nit:298 */
1452 REGB0 = TAG_Int(0);
1453 ATTR_hash_collection___HashCollection____length(fra.me.REG[1]) = REGB0;
1454 /* ./../lib/standard//collection//hash_collection.nit:299 */
1455 REGB0 = TAG_Int(0);
1456 CALL_hash_collection___HashCollection___enlarge(fra.me.REG[1])(fra.me.REG[1], REGB0);
1457 stack_frame_head = fra.me.prev;
1458 init_table[itpos2] = 1;
1459 return;
1460 }
1461 void hash_collection___HashMapNode___init(val_t p0, val_t p1, val_t p2, int* init_table){
1462 int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashMapNode].i;
1463 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1464 val_t tmp;
1465 if (init_table[itpos3]) return;
1466 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1467 fra.me.file = LOCATE_hash_collection;
1468 fra.me.line = 308;
1469 fra.me.meth = LOCATE_hash_collection___HashMapNode___init;
1470 fra.me.has_broke = 0;
1471 fra.me.REG_size = 4;
1472 fra.me.REG[0] = NIT_NULL;
1473 fra.me.REG[1] = NIT_NULL;
1474 fra.me.REG[2] = NIT_NULL;
1475 fra.me.REG[3] = NIT_NULL;
1476 fra.me.REG[0] = p0;
1477 fra.me.REG[1] = p1;
1478 fra.me.REG[2] = p2;
1479 /* ./../lib/standard//collection//hash_collection.nit:308 */
1480 fra.me.REG[3] = fra.me.REG[0];
1481 /* ./../lib/standard//collection//hash_collection.nit:310 */
1482 CALL_hash_collection___HashNode___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
1483 /* ./../lib/standard//collection//hash_collection.nit:311 */
1484 ATTR_hash_collection___HashMapNode____value(fra.me.REG[3]) = fra.me.REG[2];
1485 stack_frame_head = fra.me.prev;
1486 init_table[itpos3] = 1;
1487 return;
1488 }
1489 val_t hash_collection___HashMapIterator___is_ok(val_t p0){
1490 struct {struct stack_frame_t me;} fra;
1491 val_t REGB0;
1492 val_t REGB1;
1493 val_t tmp;
1494 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1495 fra.me.file = LOCATE_hash_collection;
1496 fra.me.line = 317;
1497 fra.me.meth = LOCATE_hash_collection___HashMapIterator___is_ok;
1498 fra.me.has_broke = 0;
1499 fra.me.REG_size = 1;
1500 fra.me.REG[0] = NIT_NULL;
1501 fra.me.REG[0] = p0;
1502 /* ./../lib/standard//collection//hash_collection.nit:317 */
1503 fra.me.REG[0] = ATTR_hash_collection___HashMapIterator____node(fra.me.REG[0]);
1504 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1505 if (UNTAG_Bool(REGB0)) {
1506 } else {
1507 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1508 if (UNTAG_Bool(REGB1)) {
1509 REGB1 = TAG_Bool(false);
1510 REGB0 = REGB1;
1511 } else {
1512 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1513 REGB0 = REGB1;
1514 }
1515 }
1516 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1517 goto label1;
1518 label1: while(0);
1519 stack_frame_head = fra.me.prev;
1520 return REGB0;
1521 }
1522 val_t hash_collection___HashMapIterator___item(val_t p0){
1523 struct {struct stack_frame_t me;} fra;
1524 val_t REGB0;
1525 val_t tmp;
1526 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1527 fra.me.file = LOCATE_hash_collection;
1528 fra.me.line = 319;
1529 fra.me.meth = LOCATE_hash_collection___HashMapIterator___item;
1530 fra.me.has_broke = 0;
1531 fra.me.REG_size = 1;
1532 fra.me.REG[0] = NIT_NULL;
1533 fra.me.REG[0] = p0;
1534 /* ./../lib/standard//collection//hash_collection.nit:321 */
1535 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
1536 if (UNTAG_Bool(REGB0)) {
1537 } else {
1538 nit_abort("Assert failed", NULL, LOCATE_hash_collection, 321);
1539 }
1540 /* ./../lib/standard//collection//hash_collection.nit:322 */
1541 fra.me.REG[0] = ATTR_hash_collection___HashMapIterator____node(fra.me.REG[0]);
1542 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1543 if (UNTAG_Bool(REGB0)) {
1544 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 322);
1545 }
1546 fra.me.REG[0] = ATTR_hash_collection___HashMapNode____value(fra.me.REG[0]);
1547 goto label1;
1548 label1: while(0);
1549 stack_frame_head = fra.me.prev;
1550 return fra.me.REG[0];
1551 }
1552 val_t hash_collection___HashMapIterator___key(val_t p0){
1553 struct {struct stack_frame_t me;} fra;
1554 val_t REGB0;
1555 val_t tmp;
1556 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1557 fra.me.file = LOCATE_hash_collection;
1558 fra.me.line = 331;
1559 fra.me.meth = LOCATE_hash_collection___HashMapIterator___key;
1560 fra.me.has_broke = 0;
1561 fra.me.REG_size = 1;
1562 fra.me.REG[0] = NIT_NULL;
1563 fra.me.REG[0] = p0;
1564 /* ./../lib/standard//collection//hash_collection.nit:333 */
1565 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
1566 if (UNTAG_Bool(REGB0)) {
1567 } else {
1568 nit_abort("Assert failed", NULL, LOCATE_hash_collection, 333);
1569 }
1570 /* ./../lib/standard//collection//hash_collection.nit:334 */
1571 fra.me.REG[0] = ATTR_hash_collection___HashMapIterator____node(fra.me.REG[0]);
1572 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1573 if (UNTAG_Bool(REGB0)) {
1574 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 334);
1575 }
1576 REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
1577 if (UNTAG_Bool(REGB0)) {
1578 } else {
1579 nit_abort("Uninitialized attribute %s", "_key", LOCATE_hash_collection, 334);
1580 }
1581 fra.me.REG[0] = ATTR_hash_collection___HashNode____key(fra.me.REG[0]);
1582 goto label1;
1583 label1: while(0);
1584 stack_frame_head = fra.me.prev;
1585 return fra.me.REG[0];
1586 }
1587 void hash_collection___HashMapIterator___next(val_t p0){
1588 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1589 val_t REGB0;
1590 val_t tmp;
1591 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1592 fra.me.file = LOCATE_hash_collection;
1593 fra.me.line = 337;
1594 fra.me.meth = LOCATE_hash_collection___HashMapIterator___next;
1595 fra.me.has_broke = 0;
1596 fra.me.REG_size = 2;
1597 fra.me.REG[0] = NIT_NULL;
1598 fra.me.REG[1] = NIT_NULL;
1599 fra.me.REG[0] = p0;
1600 /* ./../lib/standard//collection//hash_collection.nit:339 */
1601 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
1602 if (UNTAG_Bool(REGB0)) {
1603 } else {
1604 nit_abort("Assert failed", NULL, LOCATE_hash_collection, 339);
1605 }
1606 /* ./../lib/standard//collection//hash_collection.nit:340 */
1607 fra.me.REG[1] = ATTR_hash_collection___HashMapIterator____node(fra.me.REG[0]);
1608 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1609 if (UNTAG_Bool(REGB0)) {
1610 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 340);
1611 }
1612 fra.me.REG[1] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[1]);
1613 ATTR_hash_collection___HashMapIterator____node(fra.me.REG[0]) = fra.me.REG[1];
1614 stack_frame_head = fra.me.prev;
1615 return;
1616 }
1617 void hash_collection___HashMapIterator___init(val_t p0, val_t p1, int* init_table){
1618 int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashMapIterator].i;
1619 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1620 val_t tmp;
1621 if (init_table[itpos4]) return;
1622 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1623 fra.me.file = LOCATE_hash_collection;
1624 fra.me.line = 349;
1625 fra.me.meth = LOCATE_hash_collection___HashMapIterator___init;
1626 fra.me.has_broke = 0;
1627 fra.me.REG_size = 2;
1628 fra.me.REG[0] = NIT_NULL;
1629 fra.me.REG[1] = NIT_NULL;
1630 fra.me.REG[0] = p0;
1631 fra.me.REG[1] = p1;
1632 /* ./../lib/standard//collection//hash_collection.nit:351 */
1633 ATTR_hash_collection___HashMapIterator____map(fra.me.REG[0]) = fra.me.REG[1];
1634 /* ./../lib/standard//collection//hash_collection.nit:352 */
1635 fra.me.REG[1] = CALL_hash_collection___HashCollection___first_item(fra.me.REG[1])(fra.me.REG[1]);
1636 ATTR_hash_collection___HashMapIterator____node(fra.me.REG[0]) = fra.me.REG[1];
1637 stack_frame_head = fra.me.prev;
1638 init_table[itpos4] = 1;
1639 return;
1640 }
1641 val_t hash_collection___HashSet___is_empty(val_t p0){
1642 struct {struct stack_frame_t me;} fra;
1643 val_t REGB0;
1644 val_t REGB1;
1645 val_t REGB2;
1646 val_t tmp;
1647 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1648 fra.me.file = LOCATE_hash_collection;
1649 fra.me.line = 360;
1650 fra.me.meth = LOCATE_hash_collection___HashSet___is_empty;
1651 fra.me.has_broke = 0;
1652 fra.me.REG_size = 1;
1653 fra.me.REG[0] = NIT_NULL;
1654 fra.me.REG[0] = p0;
1655 /* ./../lib/standard//collection//hash_collection.nit:360 */
1656 REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
1657 if (UNTAG_Bool(REGB0)) {
1658 } else {
1659 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 360);
1660 }
1661 REGB0 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
1662 REGB1 = TAG_Int(0);
1663 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1664 if (UNTAG_Bool(REGB2)) {
1665 } else {
1666 /* ./../lib/standard//kernel.nit:207 */
1667 REGB1 = TAG_Bool((REGB0)==(REGB1));
1668 /* ./../lib/standard//collection//hash_collection.nit:360 */
1669 REGB2 = REGB1;
1670 }
1671 goto label1;
1672 label1: while(0);
1673 stack_frame_head = fra.me.prev;
1674 return REGB2;
1675 }
1676 val_t hash_collection___HashSet___first(val_t p0){
1677 struct {struct stack_frame_t me;} fra;
1678 val_t REGB0;
1679 val_t REGB1;
1680 val_t tmp;
1681 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1682 fra.me.file = LOCATE_hash_collection;
1683 fra.me.line = 362;
1684 fra.me.meth = LOCATE_hash_collection___HashSet___first;
1685 fra.me.has_broke = 0;
1686 fra.me.REG_size = 1;
1687 fra.me.REG[0] = NIT_NULL;
1688 fra.me.REG[0] = p0;
1689 /* ./../lib/standard//collection//hash_collection.nit:364 */
1690 REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
1691 if (UNTAG_Bool(REGB0)) {
1692 } else {
1693 nit_abort("Uninitialized attribute %s", "_length", LOCATE_hash_collection, 364);
1694 }
1695 REGB0 = ATTR_hash_collection___HashCollection____length(fra.me.REG[0]);
1696 REGB1 = TAG_Int(0);
1697 /* ./../lib/standard//kernel.nit:214 */
1698 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
1699 /* ./../lib/standard//collection//hash_collection.nit:364 */
1700 if (UNTAG_Bool(REGB1)) {
1701 } else {
1702 nit_abort("Assert failed", NULL, LOCATE_hash_collection, 364);
1703 }
1704 /* ./../lib/standard//collection//hash_collection.nit:365 */
1705 fra.me.REG[0] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]);
1706 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1707 if (UNTAG_Bool(REGB1)) {
1708 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 365);
1709 }
1710 REGB1 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
1711 if (UNTAG_Bool(REGB1)) {
1712 } else {
1713 nit_abort("Uninitialized attribute %s", "_key", LOCATE_hash_collection, 365);
1714 }
1715 fra.me.REG[0] = ATTR_hash_collection___HashNode____key(fra.me.REG[0]);
1716 goto label1;
1717 label1: while(0);
1718 stack_frame_head = fra.me.prev;
1719 return fra.me.REG[0];
1720 }
1721 val_t hash_collection___HashSet___has(val_t p0, val_t p1){
1722 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1723 val_t REGB0;
1724 val_t REGB1;
1725 val_t tmp;
1726 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1727 fra.me.file = LOCATE_hash_collection;
1728 fra.me.line = 368;
1729 fra.me.meth = LOCATE_hash_collection___HashSet___has;
1730 fra.me.has_broke = 0;
1731 fra.me.REG_size = 2;
1732 fra.me.REG[0] = NIT_NULL;
1733 fra.me.REG[1] = NIT_NULL;
1734 fra.me.REG[0] = p0;
1735 fra.me.REG[1] = p1;
1736 /* ./../lib/standard//collection//hash_collection.nit:370 */
1737 fra.me.REG[1] = CALL_hash_collection___HashCollection___node_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1738 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1739 if (UNTAG_Bool(REGB0)) {
1740 } else {
1741 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1742 if (UNTAG_Bool(REGB1)) {
1743 REGB1 = TAG_Bool(false);
1744 REGB0 = REGB1;
1745 } else {
1746 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1747 REGB0 = REGB1;
1748 }
1749 }
1750 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1751 goto label1;
1752 label1: while(0);
1753 stack_frame_head = fra.me.prev;
1754 return REGB0;
1755 }
1756 void hash_collection___HashSet___add(val_t p0, val_t p1){
1757 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1758 val_t REGB0;
1759 val_t REGB1;
1760 val_t REGB2;
1761 val_t tmp;
1762 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1763 fra.me.file = LOCATE_hash_collection;
1764 fra.me.line = 373;
1765 fra.me.meth = LOCATE_hash_collection___HashSet___add;
1766 fra.me.has_broke = 0;
1767 fra.me.REG_size = 3;
1768 fra.me.REG[0] = NIT_NULL;
1769 fra.me.REG[1] = NIT_NULL;
1770 fra.me.REG[2] = NIT_NULL;
1771 fra.me.REG[0] = p0;
1772 fra.me.REG[1] = p1;
1773 /* ./../lib/standard//collection//hash_collection.nit:375 */
1774 REGB0 = CALL_hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1775 /* ./../lib/standard//collection//hash_collection.nit:376 */
1776 fra.me.REG[2] = CALL_hash_collection___HashCollection___node_at_idx(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
1777 /* ./../lib/standard//collection//hash_collection.nit:377 */
1778 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1779 if (UNTAG_Bool(REGB1)) {
1780 } else {
1781 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1782 if (UNTAG_Bool(REGB2)) {
1783 REGB2 = TAG_Bool(false);
1784 REGB1 = REGB2;
1785 } else {
1786 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1787 REGB1 = REGB2;
1788 }
1789 }
1790 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1791 if (UNTAG_Bool(REGB1)) {
1792 /* ./../lib/standard//collection//hash_collection.nit:378 */
1793 ATTR_hash_collection___HashNode____key(fra.me.REG[2]) = fra.me.REG[1];
1794 } else {
1795 /* ./../lib/standard//collection//hash_collection.nit:380 */
1796 fra.me.REG[1] = NEW_HashSetNode_hash_collection___HashSetNode___init(fra.me.REG[1]);
1797 CALL_hash_collection___HashCollection___store(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
1798 }
1799 stack_frame_head = fra.me.prev;
1800 return;
1801 }
1802 void hash_collection___HashSet___remove(val_t p0, val_t p1){
1803 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1804 val_t tmp;
1805 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1806 fra.me.file = LOCATE_hash_collection;
1807 fra.me.line = 384;
1808 fra.me.meth = LOCATE_hash_collection___HashSet___remove;
1809 fra.me.has_broke = 0;
1810 fra.me.REG_size = 2;
1811 fra.me.REG[0] = NIT_NULL;
1812 fra.me.REG[1] = NIT_NULL;
1813 fra.me.REG[0] = p0;
1814 fra.me.REG[1] = p1;
1815 /* ./../lib/standard//collection//hash_collection.nit:384 */
1816 CALL_hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1817 stack_frame_head = fra.me.prev;
1818 return;
1819 }
1820 void hash_collection___HashSet___clear(val_t p0){
1821 struct {struct stack_frame_t me;} fra;
1822 val_t tmp;
1823 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1824 fra.me.file = LOCATE_hash_collection;
1825 fra.me.line = 386;
1826 fra.me.meth = LOCATE_hash_collection___HashSet___clear;
1827 fra.me.has_broke = 0;
1828 fra.me.REG_size = 1;
1829 fra.me.REG[0] = NIT_NULL;
1830 fra.me.REG[0] = p0;
1831 /* ./../lib/standard//collection//hash_collection.nit:386 */
1832 CALL_hash_collection___HashCollection___raz(fra.me.REG[0])(fra.me.REG[0]);
1833 stack_frame_head = fra.me.prev;
1834 return;
1835 }
1836 val_t hash_collection___HashSet___iterator(val_t p0){
1837 struct {struct stack_frame_t me;} fra;
1838 val_t tmp;
1839 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1840 fra.me.file = LOCATE_hash_collection;
1841 fra.me.line = 388;
1842 fra.me.meth = LOCATE_hash_collection___HashSet___iterator;
1843 fra.me.has_broke = 0;
1844 fra.me.REG_size = 1;
1845 fra.me.REG[0] = NIT_NULL;
1846 fra.me.REG[0] = p0;
1847 /* ./../lib/standard//collection//hash_collection.nit:388 */
1848 fra.me.REG[0] = NEW_HashSetIterator_hash_collection___HashSetIterator___init(fra.me.REG[0]);
1849 goto label1;
1850 label1: while(0);
1851 stack_frame_head = fra.me.prev;
1852 return fra.me.REG[0];
1853 }
1854 void hash_collection___HashSet___init(val_t p0, int* init_table){
1855 int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashSet].i;
1856 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1857 val_t REGB0;
1858 val_t tmp;
1859 if (init_table[itpos5]) return;
1860 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1861 fra.me.file = LOCATE_hash_collection;
1862 fra.me.line = 390;
1863 fra.me.meth = LOCATE_hash_collection___HashSet___init;
1864 fra.me.has_broke = 0;
1865 fra.me.REG_size = 2;
1866 fra.me.REG[0] = NIT_NULL;
1867 fra.me.REG[1] = NIT_NULL;
1868 fra.me.REG[0] = p0;
1869 /* ./../lib/standard//collection//hash_collection.nit:390 */
1870 fra.me.REG[1] = fra.me.REG[0];
1871 CALL_hash_collection___HashCollection___init(fra.me.REG[0])(fra.me.REG[0], init_table);
1872 /* ./../lib/standard//collection//hash_collection.nit:392 */
1873 REGB0 = TAG_Int(0);
1874 ATTR_hash_collection___HashCollection____capacity(fra.me.REG[1]) = REGB0;
1875 /* ./../lib/standard//collection//hash_collection.nit:393 */
1876 REGB0 = TAG_Int(0);
1877 ATTR_hash_collection___HashCollection____length(fra.me.REG[1]) = REGB0;
1878 /* ./../lib/standard//collection//hash_collection.nit:394 */
1879 REGB0 = TAG_Int(0);
1880 CALL_hash_collection___HashCollection___enlarge(fra.me.REG[1])(fra.me.REG[1], REGB0);
1881 stack_frame_head = fra.me.prev;
1882 init_table[itpos5] = 1;
1883 return;
1884 }
1885 void hash_collection___HashSetNode___init(val_t p0, val_t p1, int* init_table){
1886 int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashSetNode].i;
1887 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1888 val_t tmp;
1889 if (init_table[itpos6]) return;
1890 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1891 fra.me.file = LOCATE_hash_collection;
1892 fra.me.line = 402;
1893 fra.me.meth = LOCATE_hash_collection___HashSetNode___init;
1894 fra.me.has_broke = 0;
1895 fra.me.REG_size = 4;
1896 fra.me.REG[0] = NIT_NULL;
1897 fra.me.REG[1] = NIT_NULL;
1898 fra.me.REG[2] = NIT_NULL;
1899 fra.me.REG[3] = NIT_NULL;
1900 fra.me.REG[0] = p0;
1901 fra.me.REG[1] = p1;
1902 /* ./../lib/standard//collection//hash_collection.nit:402 */
1903 fra.me.REG[2] = fra.me.REG[0];
1904 fra.me.REG[3] = fra.me.REG[1];
1905 CALL_hash_collection___HashNode___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
1906 /* ./../lib/standard//collection//hash_collection.nit:404 */
1907 ATTR_hash_collection___HashNode____key(fra.me.REG[2]) = fra.me.REG[3];
1908 stack_frame_head = fra.me.prev;
1909 init_table[itpos6] = 1;
1910 return;
1911 }
1912 val_t hash_collection___HashSetIterator___is_ok(val_t p0){
1913 struct {struct stack_frame_t me;} fra;
1914 val_t REGB0;
1915 val_t REGB1;
1916 val_t tmp;
1917 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1918 fra.me.file = LOCATE_hash_collection;
1919 fra.me.line = 410;
1920 fra.me.meth = LOCATE_hash_collection___HashSetIterator___is_ok;
1921 fra.me.has_broke = 0;
1922 fra.me.REG_size = 1;
1923 fra.me.REG[0] = NIT_NULL;
1924 fra.me.REG[0] = p0;
1925 /* ./../lib/standard//collection//hash_collection.nit:410 */
1926 fra.me.REG[0] = ATTR_hash_collection___HashSetIterator____node(fra.me.REG[0]);
1927 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1928 if (UNTAG_Bool(REGB0)) {
1929 } else {
1930 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1931 if (UNTAG_Bool(REGB1)) {
1932 REGB1 = TAG_Bool(false);
1933 REGB0 = REGB1;
1934 } else {
1935 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1936 REGB0 = REGB1;
1937 }
1938 }
1939 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1940 goto label1;
1941 label1: while(0);
1942 stack_frame_head = fra.me.prev;
1943 return REGB0;
1944 }
1945 val_t hash_collection___HashSetIterator___item(val_t p0){
1946 struct {struct stack_frame_t me;} fra;
1947 val_t REGB0;
1948 val_t tmp;
1949 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1950 fra.me.file = LOCATE_hash_collection;
1951 fra.me.line = 412;
1952 fra.me.meth = LOCATE_hash_collection___HashSetIterator___item;
1953 fra.me.has_broke = 0;
1954 fra.me.REG_size = 1;
1955 fra.me.REG[0] = NIT_NULL;
1956 fra.me.REG[0] = p0;
1957 /* ./../lib/standard//collection//hash_collection.nit:414 */
1958 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
1959 if (UNTAG_Bool(REGB0)) {
1960 } else {
1961 nit_abort("Assert failed", NULL, LOCATE_hash_collection, 414);
1962 }
1963 /* ./../lib/standard//collection//hash_collection.nit:415 */
1964 fra.me.REG[0] = ATTR_hash_collection___HashSetIterator____node(fra.me.REG[0]);
1965 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1966 if (UNTAG_Bool(REGB0)) {
1967 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 415);
1968 }
1969 REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
1970 if (UNTAG_Bool(REGB0)) {
1971 } else {
1972 nit_abort("Uninitialized attribute %s", "_key", LOCATE_hash_collection, 415);
1973 }
1974 fra.me.REG[0] = ATTR_hash_collection___HashNode____key(fra.me.REG[0]);
1975 goto label1;
1976 label1: while(0);
1977 stack_frame_head = fra.me.prev;
1978 return fra.me.REG[0];
1979 }
1980 void hash_collection___HashSetIterator___next(val_t p0){
1981 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1982 val_t REGB0;
1983 val_t tmp;
1984 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1985 fra.me.file = LOCATE_hash_collection;
1986 fra.me.line = 418;
1987 fra.me.meth = LOCATE_hash_collection___HashSetIterator___next;
1988 fra.me.has_broke = 0;
1989 fra.me.REG_size = 2;
1990 fra.me.REG[0] = NIT_NULL;
1991 fra.me.REG[1] = NIT_NULL;
1992 fra.me.REG[0] = p0;
1993 /* ./../lib/standard//collection//hash_collection.nit:420 */
1994 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
1995 if (UNTAG_Bool(REGB0)) {
1996 } else {
1997 nit_abort("Assert failed", NULL, LOCATE_hash_collection, 420);
1998 }
1999 /* ./../lib/standard//collection//hash_collection.nit:421 */
2000 fra.me.REG[1] = ATTR_hash_collection___HashSetIterator____node(fra.me.REG[0]);
2001 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2002 if (UNTAG_Bool(REGB0)) {
2003 nit_abort("Reciever is null", NULL, LOCATE_hash_collection, 421);
2004 }
2005 fra.me.REG[1] = ATTR_hash_collection___HashNode____next_item(fra.me.REG[1]);
2006 ATTR_hash_collection___HashSetIterator____node(fra.me.REG[0]) = fra.me.REG[1];
2007 stack_frame_head = fra.me.prev;
2008 return;
2009 }
2010 void hash_collection___HashSetIterator___init(val_t p0, val_t p1, int* init_table){
2011 int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_HashSetIterator].i;
2012 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2013 val_t tmp;
2014 if (init_table[itpos7]) return;
2015 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2016 fra.me.file = LOCATE_hash_collection;
2017 fra.me.line = 430;
2018 fra.me.meth = LOCATE_hash_collection___HashSetIterator___init;
2019 fra.me.has_broke = 0;
2020 fra.me.REG_size = 2;
2021 fra.me.REG[0] = NIT_NULL;
2022 fra.me.REG[1] = NIT_NULL;
2023 fra.me.REG[0] = p0;
2024 fra.me.REG[1] = p1;
2025 /* ./../lib/standard//collection//hash_collection.nit:432 */
2026 ATTR_hash_collection___HashSetIterator____set(fra.me.REG[0]) = fra.me.REG[1];
2027 /* ./../lib/standard//collection//hash_collection.nit:433 */
2028 fra.me.REG[1] = ATTR_hash_collection___HashCollection____first_item(fra.me.REG[1]);
2029 ATTR_hash_collection___HashSetIterator____node(fra.me.REG[0]) = fra.me.REG[1];
2030 stack_frame_head = fra.me.prev;
2031 init_table[itpos7] = 1;
2032 return;
2033 }