Only one gcc pass for initial bootstrap
[nit.git] / c_src / hash._sep.c
1 /* This C file is generated by NIT to compile module hash. */
2 #include "hash._sep.h"
3 val_t hash___Object___hash(val_t self) {
4 struct trace_t trace = {NULL, LOCATE_hash, 21, LOCATE_hash___Object___hash};
5 val_t variable0;
6 trace.prev = tracehead; tracehead = &trace;
7 variable0 = TAG_Int((bigint) self);
8 variable0 = TAG_Int(UNTAG_Int(variable0)/UNTAG_Int( TAG_Int(8)));
9 goto return_label0;
10 return_label0: while(false);
11 tracehead = trace.prev;
12 return variable0;
13 }
14 val_t hash___String___hash(val_t self) {
15 struct trace_t trace = {NULL, LOCATE_hash, 29, LOCATE_hash___String___hash};
16 val_t variable0;
17 val_t variable1;
18 val_t variable2;
19 val_t variable3;
20 val_t variable4;
21 trace.prev = tracehead; tracehead = &trace;
22 variable0 = TAG_Int(5381);
23 variable2 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
24 variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
25 variable1 = variable2;
26 variable3 = ATTR_string___String____items( self) /*String::_items*/;
27 variable2 = variable3;
28 while (true) { /*while*/
29 variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
30 if (!UNTAG_Bool(variable3)) break; /* while*/
31 variable3 = TAG_Int(UNTAG_Int( variable0 /*h*/)*UNTAG_Int( TAG_Int(32)));
32 variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( variable0 /*h*/));
33 variable4 = TAG_Char(UNBOX_NativeString( variable2 /*it*/)[UNTAG_Int( variable1 /*i*/)]);
34 variable4 = TAG_Int((unsigned char)UNTAG_Char(variable4));
35 variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int(variable4));
36 variable0 = variable3 /*h=*/;
37 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
38 continue_2: while(0);
39 }
40 break_2: while(0);
41 variable0 = variable0 /*h*/;
42 goto return_label1;
43 return_label1: while(false);
44 tracehead = trace.prev;
45 return variable0;
46 }
47 val_t hash___Int___hash(val_t self) {
48 struct trace_t trace = {NULL, LOCATE_hash, 45, LOCATE_hash___Int___hash};
49 val_t variable0;
50 trace.prev = tracehead; tracehead = &trace;
51 variable0 = self;
52 goto return_label3;
53 return_label3: while(false);
54 tracehead = trace.prev;
55 return variable0;
56 }
57 val_t hash___Char___hash(val_t self) {
58 struct trace_t trace = {NULL, LOCATE_hash, 49, LOCATE_hash___Char___hash};
59 val_t variable0;
60 trace.prev = tracehead; tracehead = &trace;
61 variable0 = TAG_Int((unsigned char)UNTAG_Char( self));
62 goto return_label4;
63 return_label4: while(false);
64 tracehead = trace.prev;
65 return variable0;
66 }
67 val_t hash___Bool___hash(val_t self) {
68 struct trace_t trace = {NULL, LOCATE_hash, 53, LOCATE_hash___Bool___hash};
69 val_t variable0;
70 trace.prev = tracehead; tracehead = &trace;
71 if (UNTAG_Bool( self)) { /*if*/
72 variable0 = TAG_Int(1);
73 goto return_label5;
74 } else { /*if*/
75 variable0 = TAG_Int(0);
76 goto return_label5;
77 }
78 return_label5: while(false);
79 tracehead = trace.prev;
80 return variable0;
81 }
82 val_t hash___HashCollection___length(val_t self) {
83 struct trace_t trace = {NULL, LOCATE_hash, 69, LOCATE_hash___HashCollection___length};
84 trace.prev = tracehead; tracehead = &trace;
85 tracehead = trace.prev;
86 return ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
87 }
88 val_t hash___HashCollection___first_item(val_t self) {
89 struct trace_t trace = {NULL, LOCATE_hash, 71, LOCATE_hash___HashCollection___first_item};
90 trace.prev = tracehead; tracehead = &trace;
91 tracehead = trace.prev;
92 return ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/;
93 }
94 val_t hash___HashCollection___index_at(val_t self, val_t param0) {
95 struct trace_t trace = {NULL, LOCATE_hash, 80, LOCATE_hash___HashCollection___index_at};
96 val_t variable0;
97 val_t variable1;
98 val_t variable2;
99 val_t variable3;
100 val_t variable4;
101 val_t variable5;
102 val_t variable6;
103 trace.prev = tracehead; tracehead = &trace;
104 variable0 = param0;
105 variable2 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
106 variable1 = variable2;
107 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*k*/ == NIT_NULL /*null*/) || (( variable0 /*k*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*k*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*k*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*k*/,COLOR_kernel___Object_____eqeq))( variable0 /*k*/, NIT_NULL /*null*/) /*Object::==*/)))))));
108 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___index_at, LOCATE_hash, 84); nit_exit(1);}
109 variable2 = ATTR_hash___HashCollection____last_accessed_key( self) /*HashCollection::_last_accessed_key*/;
110 variable2 = TAG_Bool(( variable0 /*k*/ == variable2) || (( variable0 /*k*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*k*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*k*/,variable2)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*k*/,COLOR_kernel___Object_____eqeq))( variable0 /*k*/, variable2) /*Object::==*/)))));
111 if (UNTAG_Bool(variable2)) { /*if*/
112 variable2 = ATTR_hash___HashCollection____last_accessed_index( self) /*HashCollection::_last_accessed_index*/;
113 variable1 = variable2;
114 goto return_label6;
115 }
116 variable3 = ((hash___Object___hash_t)CALL( variable0 /*k*/,COLOR_hash___Object___hash))( variable0 /*k*/) /*Object::hash*/;
117 variable4 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
118 variable3 = TAG_Int(UNTAG_Int(variable3)%UNTAG_Int(variable4));
119 variable2 = variable3;
120 variable3 = TAG_Bool(UNTAG_Int( variable2 /*base*/)<UNTAG_Int( TAG_Int(0)));
121 if (UNTAG_Bool(variable3)) { /*if*/
122 variable3 = TAG_Int(-UNTAG_Int( variable2 /*base*/));
123 variable2 = variable3 /*base=*/;
124 }
125 variable3 = variable2 /*base*/;
126 while (true) { /*while*/
127 if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
128 variable5 = UNBOX_NativeArray( variable1 /*arr*/)[UNTAG_Int( variable3 /*cur*/)];
129 variable4 = variable5;
130 variable5 = TAG_Bool(( variable4 /*c*/ == NIT_NULL /*null*/) || (( variable4 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*c*/,COLOR_kernel___Object_____eqeq))( variable4 /*c*/, NIT_NULL /*null*/) /*Object::==*/)))));
131 variable6 = variable5;
132 if (!UNTAG_Bool(variable6)) { /* or */
133 variable6 = ((hash___HashNode___key_t)CALL( variable4 /*c*/,COLOR_hash___HashNode___key))( variable4 /*c*/) /*HashNode::key*/;
134 variable6 = TAG_Bool((variable6 == variable0 /*k*/) || ((variable6 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable6, variable0 /*k*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))(variable6, variable0 /*k*/) /*Object::==*/)))));
135 }
136 variable5 = variable6;
137 if (UNTAG_Bool(variable5)) { /*if*/
138 ATTR_hash___HashCollection____last_accessed_index( self) /*HashCollection::_last_accessed_index*/ = variable3 /*cur*/;
139 ATTR_hash___HashCollection____last_accessed_key( self) /*HashCollection::_last_accessed_key*/ = variable0 /*k*/;
140 variable1 = variable3 /*cur*/;
141 goto return_label6;
142 }
143 variable3 = TAG_Int(UNTAG_Int(variable3)-UNTAG_Int( TAG_Int(1))) /*cur*/;
144 variable5 = TAG_Bool(UNTAG_Int( variable3 /*cur*/)<UNTAG_Int( TAG_Int(0)));
145 if (UNTAG_Bool(variable5)) { /*if*/
146 variable5 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
147 variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( TAG_Int(1)));
148 variable3 = variable5 /*cur=*/;
149 }
150 variable5 = TAG_Bool(( variable3 /*cur*/)!=( variable2 /*base*/));
151 if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", " 'no_loop' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___index_at, LOCATE_hash, 104); nit_exit(1);}
152 continue_7: while(0);
153 }
154 break_7: while(0);
155 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___index_at, LOCATE_hash, 106); nit_exit(1);
156 return_label6: while(false);
157 tracehead = trace.prev;
158 return variable1;
159 }
160 void hash___HashCollection___store(val_t self, val_t param0, val_t param1) {
161 struct trace_t trace = {NULL, LOCATE_hash, 109, LOCATE_hash___HashCollection___store};
162 val_t variable0;
163 val_t variable1;
164 val_t variable2;
165 val_t variable3;
166 trace.prev = tracehead; tracehead = &trace;
167 variable0 = param0;
168 variable1 = param1;
169 variable2 = ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/;
170 variable2 = TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*Object::==*/)))));
171 if (UNTAG_Bool(variable2)) { /*if*/
172 ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/ = variable1 /*node*/;
173 } else { /*if*/
174 variable2 = ATTR_hash___HashCollection____last_item( self) /*HashCollection::_last_item*/;
175 ((hash___HashNode___next_item__eq_t)CALL(variable2,COLOR_hash___HashNode___next_item__eq))(variable2, variable1 /*node*/) /*HashNode::next_item=*/;
176 }
177 variable2 = ATTR_hash___HashCollection____last_item( self) /*HashCollection::_last_item*/;
178 ((hash___HashNode___prev_item__eq_t)CALL( variable1 /*node*/,COLOR_hash___HashNode___prev_item__eq))( variable1 /*node*/, variable2) /*HashNode::prev_item=*/;
179 ((hash___HashNode___next_item__eq_t)CALL( variable1 /*node*/,COLOR_hash___HashNode___next_item__eq))( variable1 /*node*/, NIT_NULL /*null*/) /*HashNode::next_item=*/;
180 ATTR_hash___HashCollection____last_item( self) /*HashCollection::_last_item*/ = variable1 /*node*/;
181 variable2 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
182 variable2 = UNBOX_NativeArray(variable2)[UNTAG_Int( variable0 /*index*/)];
183 variable2 = TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*Object::==*/)))));
184 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___store, LOCATE_hash, 122); nit_exit(1);}
185 variable2 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
186 UNBOX_NativeArray(variable2)[UNTAG_Int( variable0 /*index*/)]= variable1 /*node*/;
187 variable3 = ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
188 variable2 = variable3;
189 variable3 = TAG_Int(UNTAG_Int( variable2 /*l*/)+UNTAG_Int( TAG_Int(1)));
190 ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/ = variable3;
191 variable3 = TAG_Int(UNTAG_Int( variable2 /*l*/)+UNTAG_Int( TAG_Int(5)));
192 variable3 = TAG_Int(UNTAG_Int(variable3)*UNTAG_Int( TAG_Int(150)));
193 variable3 = TAG_Int(UNTAG_Int(variable3)/UNTAG_Int( TAG_Int(100)));
194 variable2 = variable3 /*l=*/;
195 variable3 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
196 variable3 = TAG_Bool(UNTAG_Int( variable2 /*l*/)>=UNTAG_Int(variable3));
197 if (UNTAG_Bool(variable3)) { /*if*/
198 variable3 = TAG_Int(UNTAG_Int( variable2 /*l*/)*UNTAG_Int( TAG_Int(2)));
199 ((hash___HashCollection___enlarge_t)CALL( self,COLOR_hash___HashCollection___enlarge))( self, variable3) /*HashCollection::enlarge*/;
200 }
201 tracehead = trace.prev;
202 return;
203 }
204 void hash___HashCollection___remove_index(val_t self, val_t param0) {
205 struct trace_t trace = {NULL, LOCATE_hash, 132, LOCATE_hash___HashCollection___remove_index};
206 val_t variable0;
207 val_t variable1;
208 val_t variable2;
209 val_t variable3;
210 val_t variable4;
211 val_t variable5;
212 val_t variable6;
213 trace.prev = tracehead; tracehead = &trace;
214 variable0 = param0;
215 variable1 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>=UNTAG_Int( TAG_Int(0)));
216 variable2 = variable1;
217 if (UNTAG_Bool(variable2)) { /* and */
218 variable2 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
219 variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int(variable2));
220 }
221 variable1 = variable2;
222 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", " 'correct_index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___remove_index, LOCATE_hash, 134); nit_exit(1);}
223 variable2 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
224 variable2 = UNBOX_NativeArray(variable2)[UNTAG_Int( variable0 /*i*/)];
225 variable1 = variable2;
226 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*node*/ == NIT_NULL /*null*/) || (( variable1 /*node*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*node*/,COLOR_kernel___Object_____eqeq))( variable1 /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
227 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", " 'has_couple' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___remove_index, LOCATE_hash, 136); nit_exit(1);}
228 variable3 = ((hash___HashNode___prev_item_t)CALL( variable1 /*node*/,COLOR_hash___HashNode___prev_item))( variable1 /*node*/) /*HashNode::prev_item*/;
229 variable2 = variable3;
230 variable4 = ((hash___HashNode___next_item_t)CALL( variable1 /*node*/,COLOR_hash___HashNode___next_item))( variable1 /*node*/) /*HashNode::next_item*/;
231 variable3 = variable4;
232 variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*prev*/ == NIT_NULL /*null*/) || (( variable2 /*prev*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*prev*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*prev*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*prev*/,COLOR_kernel___Object_____eqeq))( variable2 /*prev*/, NIT_NULL /*null*/) /*Object::==*/)))))));
233 if (UNTAG_Bool(variable4)) { /*if*/
234 ((hash___HashNode___next_item__eq_t)CALL( variable2 /*prev*/,COLOR_hash___HashNode___next_item__eq))( variable2 /*prev*/, variable3 /*next*/) /*HashNode::next_item=*/;
235 } else { /*if*/
236 ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/ = variable3 /*next*/;
237 }
238 variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*next*/ == NIT_NULL /*null*/) || (( variable3 /*next*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*next*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*next*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*next*/,COLOR_kernel___Object_____eqeq))( variable3 /*next*/, NIT_NULL /*null*/) /*Object::==*/)))))));
239 if (UNTAG_Bool(variable4)) { /*if*/
240 ((hash___HashNode___prev_item__eq_t)CALL( variable3 /*next*/,COLOR_hash___HashNode___prev_item__eq))( variable3 /*next*/, variable2 /*prev*/) /*HashNode::prev_item=*/;
241 } else { /*if*/
242 ATTR_hash___HashCollection____last_item( self) /*HashCollection::_last_item*/ = variable2 /*prev*/;
243 }
244 variable4 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
245 UNBOX_NativeArray(variable4)[UNTAG_Int( variable0 /*i*/)]= NIT_NULL /*null*/;
246 ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/ = TAG_Int(UNTAG_Int(ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/)-UNTAG_Int( TAG_Int(1)));
247 while (true) { /*while*/
248 if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
249 variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*i*/;
250 variable4 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int( TAG_Int(0)));
251 if (UNTAG_Bool(variable4)) { /*if*/
252 variable4 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
253 variable4 = TAG_Int(UNTAG_Int(variable4)-UNTAG_Int( TAG_Int(1)));
254 variable0 = variable4 /*i=*/;
255 }
256 variable5 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
257 variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable0 /*i*/)];
258 variable4 = variable5;
259 variable5 = TAG_Bool(( variable4 /*n*/ == NIT_NULL /*null*/) || (( variable4 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*n*/,COLOR_kernel___Object_____eqeq))( variable4 /*n*/, NIT_NULL /*null*/) /*Object::==*/)))));
260 if (UNTAG_Bool(variable5)) { /*if*/
261 goto return_label9;
262 }
263 variable6 = ((hash___HashNode___key_t)CALL( variable4 /*n*/,COLOR_hash___HashNode___key))( variable4 /*n*/) /*HashNode::key*/;
264 variable6 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable6) /*HashCollection::index_at*/;
265 variable5 = variable6;
266 variable6 = TAG_Bool(( variable0 /*i*/)!=( variable5 /*i2*/));
267 if (UNTAG_Bool(variable6)) { /*if*/
268 variable6 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
269 UNBOX_NativeArray(variable6)[UNTAG_Int( variable0 /*i*/)]= NIT_NULL /*null*/;
270 variable6 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
271 variable6 = UNBOX_NativeArray(variable6)[UNTAG_Int( variable5 /*i2*/)];
272 variable6 = TAG_Bool((variable6 == NIT_NULL /*null*/) || ((variable6 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable6, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))(variable6, NIT_NULL /*null*/) /*Object::==*/)))));
273 if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___remove_index, LOCATE_hash, 166); nit_exit(1);}
274 variable6 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
275 UNBOX_NativeArray(variable6)[UNTAG_Int( variable5 /*i2*/)]= variable4 /*n*/;
276 }
277 continue_10: while(0);
278 }
279 break_10: while(0);
280 return_label9: while(false);
281 tracehead = trace.prev;
282 return;
283 }
284 void hash___HashCollection___raz(val_t self) {
285 struct trace_t trace = {NULL, LOCATE_hash, 172, LOCATE_hash___HashCollection___raz};
286 val_t variable0;
287 val_t variable1;
288 trace.prev = tracehead; tracehead = &trace;
289 variable1 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
290 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1)));
291 variable0 = variable1;
292 while (true) { /*while*/
293 variable1 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>=UNTAG_Int( TAG_Int(0)));
294 if (!UNTAG_Bool(variable1)) break; /* while*/
295 variable1 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
296 UNBOX_NativeArray(variable1)[UNTAG_Int( variable0 /*i*/)]= NIT_NULL /*null*/;
297 variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*i*/;
298 continue_12: while(0);
299 }
300 break_12: while(0);
301 ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/ = TAG_Int(0);
302 ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/ = NIT_NULL /*null*/;
303 ATTR_hash___HashCollection____last_item( self) /*HashCollection::_last_item*/ = NIT_NULL /*null*/;
304 ATTR_hash___HashCollection____last_accessed_key( self) /*HashCollection::_last_accessed_key*/ = NIT_NULL /*null*/;
305 tracehead = trace.prev;
306 return;
307 }
308 void hash___HashCollection___enlarge(val_t self, val_t param0) {
309 struct trace_t trace = {NULL, LOCATE_hash, 185, LOCATE_hash___HashCollection___enlarge};
310 val_t variable0;
311 val_t variable1;
312 val_t variable2;
313 val_t variable3;
314 val_t variable4;
315 val_t variable5;
316 val_t variable6;
317 val_t variable7;
318 trace.prev = tracehead; tracehead = &trace;
319 variable0 = param0;
320 variable2 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
321 variable1 = variable2;
322 variable2 = ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
323 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1)));
324 variable2 = TAG_Bool(UNTAG_Int( variable0 /*cap*/)<UNTAG_Int(variable2));
325 if (UNTAG_Bool(variable2)) { /*if*/
326 variable2 = ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
327 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1)));
328 variable0 = variable2 /*cap=*/;
329 }
330 variable2 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
331 variable2 = TAG_Bool(UNTAG_Int( variable0 /*cap*/)<=UNTAG_Int(variable2));
332 if (UNTAG_Bool(variable2)) { /*if*/
333 goto return_label13;
334 }
335 ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/ = variable0 /*cap*/;
336 ATTR_hash___HashCollection____last_accessed_key( self) /*HashCollection::_last_accessed_key*/ = NIT_NULL /*null*/;
337 variable3 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable0 /*cap*/) * sizeof(val_t))));
338 variable2 = variable3;
339 ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/ = variable2 /*new_array*/;
340 variable4 = TAG_Int(UNTAG_Int( variable0 /*cap*/)-UNTAG_Int( TAG_Int(1)));
341 variable3 = variable4;
342 while (true) { /*while*/
343 variable4 = TAG_Bool(UNTAG_Int( variable3 /*i*/)>=UNTAG_Int( TAG_Int(0)));
344 if (!UNTAG_Bool(variable4)) break; /* while*/
345 UNBOX_NativeArray( variable2 /*new_array*/)[UNTAG_Int( variable3 /*i*/)]= NIT_NULL /*null*/;
346 variable3 = TAG_Int(UNTAG_Int(variable3)-UNTAG_Int( TAG_Int(1))) /*i*/;
347 continue_14: while(0);
348 }
349 break_14: while(0);
350 variable4 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
351 variable4 = TAG_Bool(UNTAG_Int(variable4)<=UNTAG_Int( variable1 /*old_cap*/));
352 if (UNTAG_Bool(variable4)) { /*if*/
353 goto return_label13;
354 }
355 variable5 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
356 variable4 = variable5;
357 variable6 = ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/;
358 variable5 = variable6;
359 while (true) { /*while*/
360 variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*node*/ == NIT_NULL /*null*/) || (( variable5 /*node*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*node*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*node*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*node*/,COLOR_kernel___Object_____eqeq))( variable5 /*node*/, NIT_NULL /*null*/) /*Object::==*/)))))));
361 if (!UNTAG_Bool(variable6)) break; /* while*/
362 variable7 = ((hash___HashNode___key_t)CALL( variable5 /*node*/,COLOR_hash___HashNode___key))( variable5 /*node*/) /*HashNode::key*/;
363 variable7 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable7) /*HashCollection::index_at*/;
364 variable6 = variable7;
365 variable7 = UNBOX_NativeArray( variable4 /*new_array*/)[UNTAG_Int( variable6 /*ind*/)];
366 variable7 = TAG_Bool((variable7 == NIT_NULL /*null*/) || ((variable7 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable7, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))(variable7, NIT_NULL /*null*/) /*Object::==*/)))));
367 if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___enlarge, LOCATE_hash, 213); nit_exit(1);}
368 UNBOX_NativeArray( variable4 /*new_array*/)[UNTAG_Int( variable6 /*ind*/)]= variable5 /*node*/;
369 variable7 = ((hash___HashNode___next_item_t)CALL( variable5 /*node*/,COLOR_hash___HashNode___next_item))( variable5 /*node*/) /*HashNode::next_item*/;
370 variable5 = variable7 /*node=*/;
371 continue_15: while(0);
372 }
373 break_15: while(0);
374 ATTR_hash___HashCollection____last_accessed_key( self) /*HashCollection::_last_accessed_key*/ = NIT_NULL /*null*/;
375 return_label13: while(false);
376 tracehead = trace.prev;
377 return;
378 }
379 val_t hash___HashNode___key(val_t self) {
380 struct trace_t trace = {NULL, LOCATE_hash, 222, LOCATE_hash___HashNode___key};
381 trace.prev = tracehead; tracehead = &trace;
382 fprintf(stderr, "Deferred method %s called");
383 fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashCollection___enlarge, LOCATE_hash, 222);
384 nit_exit(1);
385 tracehead = trace.prev;
386 return NIT_NULL;
387 }
388 val_t hash___HashNode___next_item(val_t self) {
389 struct trace_t trace = {NULL, LOCATE_hash, 224, LOCATE_hash___HashNode___next_item};
390 trace.prev = tracehead; tracehead = &trace;
391 tracehead = trace.prev;
392 return ATTR_hash___HashNode____next_item( self) /*HashNode::_next_item*/;
393 }
394 void hash___HashNode___next_item__eq(val_t self, val_t param0) {
395 struct trace_t trace = {NULL, LOCATE_hash, 224, LOCATE_hash___HashNode___next_item__eq};
396 trace.prev = tracehead; tracehead = &trace;
397 ATTR_hash___HashNode____next_item( self) /*HashNode::_next_item*/ = param0;
398 tracehead = trace.prev;
399 return;
400 }
401 val_t hash___HashNode___prev_item(val_t self) {
402 struct trace_t trace = {NULL, LOCATE_hash, 225, LOCATE_hash___HashNode___prev_item};
403 trace.prev = tracehead; tracehead = &trace;
404 tracehead = trace.prev;
405 return ATTR_hash___HashNode____prev_item( self) /*HashNode::_prev_item*/;
406 }
407 void hash___HashNode___prev_item__eq(val_t self, val_t param0) {
408 struct trace_t trace = {NULL, LOCATE_hash, 225, LOCATE_hash___HashNode___prev_item__eq};
409 trace.prev = tracehead; tracehead = &trace;
410 ATTR_hash___HashNode____prev_item( self) /*HashNode::_prev_item*/ = param0;
411 tracehead = trace.prev;
412 return;
413 }
414 val_t hash___HashMap___iterator(val_t self) {
415 struct trace_t trace = {NULL, LOCATE_hash, 232, LOCATE_hash___HashMap___iterator};
416 val_t variable0;
417 trace.prev = tracehead; tracehead = &trace;
418 variable0 = NEW_hash___HashMapIterator___init( self); /*new HashMapIterator[K, V]*/
419 goto return_label16;
420 return_label16: while(false);
421 tracehead = trace.prev;
422 return variable0;
423 }
424 val_t hash___HashMap___first(val_t self) {
425 struct trace_t trace = {NULL, LOCATE_hash, 234, LOCATE_hash___HashMap___first};
426 val_t variable0;
427 trace.prev = tracehead; tracehead = &trace;
428 variable0 = ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
429 variable0 = TAG_Bool(UNTAG_Int(variable0)>UNTAG_Int( TAG_Int(0)));
430 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashMap___first, LOCATE_hash, 236); nit_exit(1);}
431 variable0 = ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/;
432 variable0 = ((abstract_collection___Couple___second_t)CALL(variable0,COLOR_abstract_collection___Couple___second))(variable0) /*Couple::second*/;
433 goto return_label17;
434 return_label17: while(false);
435 tracehead = trace.prev;
436 return variable0;
437 }
438 val_t hash___HashMap___is_empty(val_t self) {
439 struct trace_t trace = {NULL, LOCATE_hash, 240, LOCATE_hash___HashMap___is_empty};
440 val_t variable0;
441 trace.prev = tracehead; tracehead = &trace;
442 variable0 = ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
443 variable0 = TAG_Bool((variable0)==( TAG_Int(0)));
444 goto return_label18;
445 return_label18: while(false);
446 tracehead = trace.prev;
447 return variable0;
448 }
449 val_t hash___HashMap___count(val_t self, val_t param0) {
450 struct trace_t trace = {NULL, LOCATE_hash, 242, LOCATE_hash___HashMap___count};
451 val_t variable0;
452 val_t variable1;
453 val_t variable2;
454 val_t variable3;
455 val_t variable4;
456 val_t variable5;
457 trace.prev = tracehead; tracehead = &trace;
458 variable0 = param0;
459 variable1 = TAG_Int(0);
460 variable2 = TAG_Int(0);
461 while (true) { /*while*/
462 variable3 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
463 variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int(variable3));
464 if (!UNTAG_Bool(variable3)) break; /* while*/
465 variable4 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
466 variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable2 /*i*/)];
467 variable3 = variable4;
468 variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*c*/ == NIT_NULL /*null*/) || (( variable3 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*c*/,COLOR_kernel___Object_____eqeq))( variable3 /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
469 variable5 = variable4;
470 if (UNTAG_Bool(variable5)) { /* and */
471 variable5 = ((abstract_collection___Couple___second_t)CALL( variable3 /*c*/,COLOR_abstract_collection___Couple___second))( variable3 /*c*/) /*Couple::second*/;
472 variable5 = TAG_Bool((variable5 == variable0 /*item*/) || ((variable5 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable5, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))(variable5, variable0 /*item*/) /*Object::==*/)))));
473 }
474 variable4 = variable5;
475 if (UNTAG_Bool(variable4)) { /*if*/
476 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*nb*/;
477 }
478 variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*i*/;
479 continue_20: while(0);
480 }
481 break_20: while(0);
482 variable1 = variable1 /*nb*/;
483 goto return_label19;
484 return_label19: while(false);
485 tracehead = trace.prev;
486 return variable1;
487 }
488 val_t hash___HashMap___has(val_t self, val_t param0) {
489 struct trace_t trace = {NULL, LOCATE_hash, 254, LOCATE_hash___HashMap___has};
490 val_t variable0;
491 val_t variable1;
492 val_t variable2;
493 val_t variable3;
494 val_t variable4;
495 trace.prev = tracehead; tracehead = &trace;
496 variable0 = param0;
497 variable1 = TAG_Int(0);
498 while (true) { /*while*/
499 variable2 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
500 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int(variable2));
501 if (!UNTAG_Bool(variable2)) break; /* while*/
502 variable3 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
503 variable3 = UNBOX_NativeArray(variable3)[UNTAG_Int( variable1 /*i*/)];
504 variable2 = variable3;
505 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*c*/ == NIT_NULL /*null*/) || (( variable2 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))( variable2 /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
506 variable4 = variable3;
507 if (UNTAG_Bool(variable4)) { /* and */
508 variable4 = ((abstract_collection___Couple___second_t)CALL( variable2 /*c*/,COLOR_abstract_collection___Couple___second))( variable2 /*c*/) /*Couple::second*/;
509 variable4 = TAG_Bool((variable4 == variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4, variable0 /*item*/) /*Object::==*/)))));
510 }
511 variable3 = variable4;
512 if (UNTAG_Bool(variable3)) { /*if*/
513 variable1 = TAG_Bool(true);
514 goto return_label21;
515 }
516 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
517 continue_22: while(0);
518 }
519 break_22: while(0);
520 variable1 = TAG_Bool(false);
521 goto return_label21;
522 return_label21: while(false);
523 tracehead = trace.prev;
524 return variable1;
525 }
526 val_t hash___HashMap___has_only(val_t self, val_t param0) {
527 struct trace_t trace = {NULL, LOCATE_hash, 265, LOCATE_hash___HashMap___has_only};
528 val_t variable0;
529 val_t variable1;
530 val_t variable2;
531 val_t variable3;
532 val_t variable4;
533 trace.prev = tracehead; tracehead = &trace;
534 variable0 = param0;
535 variable1 = TAG_Int(0);
536 while (true) { /*while*/
537 variable2 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
538 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int(variable2));
539 if (!UNTAG_Bool(variable2)) break; /* while*/
540 variable3 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
541 variable3 = UNBOX_NativeArray(variable3)[UNTAG_Int( variable1 /*i*/)];
542 variable2 = variable3;
543 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*c*/ == NIT_NULL /*null*/) || (( variable2 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))( variable2 /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
544 variable4 = variable3;
545 if (UNTAG_Bool(variable4)) { /* and */
546 variable4 = ((abstract_collection___Couple___second_t)CALL( variable2 /*c*/,COLOR_abstract_collection___Couple___second))( variable2 /*c*/) /*Couple::second*/;
547 variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable4 == variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4, variable0 /*item*/) /*Object::==*/)))))));
548 }
549 variable3 = variable4;
550 if (UNTAG_Bool(variable3)) { /*if*/
551 variable1 = TAG_Bool(false);
552 goto return_label23;
553 }
554 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
555 continue_24: while(0);
556 }
557 break_24: while(0);
558 variable1 = TAG_Bool(true);
559 goto return_label23;
560 return_label23: while(false);
561 tracehead = trace.prev;
562 return variable1;
563 }
564 void hash___HashMap_____braeq(val_t self, val_t param0, val_t param1) {
565 struct trace_t trace = {NULL, LOCATE_hash, 276, LOCATE_hash___HashMap_____braeq};
566 val_t variable0;
567 val_t variable1;
568 val_t variable2;
569 val_t variable3;
570 val_t variable4;
571 trace.prev = tracehead; tracehead = &trace;
572 variable0 = param0;
573 variable1 = param1;
574 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*key*/ == NIT_NULL /*null*/) || (( variable0 /*key*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*key*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*key*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*key*/,COLOR_kernel___Object_____eqeq))( variable0 /*key*/, NIT_NULL /*null*/) /*Object::==*/)))))));
575 if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashMap_____braeq, LOCATE_hash, 278); nit_exit(1);}
576 variable3 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable0 /*key*/) /*HashCollection::index_at*/;
577 variable2 = variable3;
578 variable4 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
579 variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable2 /*i*/)];
580 variable3 = variable4;
581 variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable3 /*c*/ == NIT_NULL /*null*/) || (( variable3 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*c*/,COLOR_kernel___Object_____eqeq))( variable3 /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
582 if (UNTAG_Bool(variable4)) { /*if*/
583 ((abstract_collection___Couple___first__eq_t)CALL( variable3 /*c*/,COLOR_abstract_collection___Couple___first__eq))( variable3 /*c*/, variable0 /*key*/) /*Couple::first=*/;
584 ((abstract_collection___Couple___second__eq_t)CALL( variable3 /*c*/,COLOR_abstract_collection___Couple___second__eq))( variable3 /*c*/, variable1 /*v*/) /*Couple::second=*/;
585 } else { /*if*/
586 variable4 = NEW_hash___HashMapNode___init( variable0 /*key*/, variable1 /*v*/); /*new HashMapNode[K, V]*/
587 ((hash___HashCollection___store_t)CALL( self,COLOR_hash___HashCollection___store))( self, variable2 /*i*/, variable4) /*HashCollection::store*/;
588 }
589 tracehead = trace.prev;
590 return;
591 }
592 void hash___HashMap___remove(val_t self, val_t param0) {
593 struct trace_t trace = {NULL, LOCATE_hash, 289, LOCATE_hash___HashMap___remove};
594 val_t variable0;
595 val_t variable1;
596 val_t variable2;
597 val_t variable3;
598 val_t variable4;
599 trace.prev = tracehead; tracehead = &trace;
600 variable0 = param0;
601 variable1 = TAG_Int(0);
602 while (true) { /*while*/
603 variable2 = ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/;
604 variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int(variable2));
605 if (!UNTAG_Bool(variable2)) break; /* while*/
606 variable3 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
607 variable3 = UNBOX_NativeArray(variable3)[UNTAG_Int( variable1 /*i*/)];
608 variable2 = variable3;
609 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*c*/ == NIT_NULL /*null*/) || (( variable2 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))( variable2 /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
610 variable4 = variable3;
611 if (UNTAG_Bool(variable4)) { /* and */
612 variable4 = ((abstract_collection___Couple___second_t)CALL( variable2 /*c*/,COLOR_abstract_collection___Couple___second))( variable2 /*c*/) /*Couple::second*/;
613 variable4 = TAG_Bool((variable4 == variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4, variable0 /*item*/) /*Object::==*/)))));
614 }
615 variable3 = variable4;
616 if (UNTAG_Bool(variable3)) { /*if*/
617 ((hash___HashCollection___remove_index_t)CALL( self,COLOR_hash___HashCollection___remove_index))( self, variable1 /*i*/) /*HashCollection::remove_index*/;
618 goto return_label26;
619 }
620 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
621 continue_27: while(0);
622 }
623 break_27: while(0);
624 return_label26: while(false);
625 tracehead = trace.prev;
626 return;
627 }
628 void hash___HashMap___remove_at(val_t self, val_t param0) {
629 struct trace_t trace = {NULL, LOCATE_hash, 302, LOCATE_hash___HashMap___remove_at};
630 val_t variable0;
631 val_t variable1;
632 trace.prev = tracehead; tracehead = &trace;
633 variable0 = param0;
634 variable1 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable0 /*key*/) /*HashCollection::index_at*/;
635 ((hash___HashCollection___remove_index_t)CALL( self,COLOR_hash___HashCollection___remove_index))( self, variable1) /*HashCollection::remove_index*/;
636 tracehead = trace.prev;
637 return;
638 }
639 void hash___HashMap___clear(val_t self) {
640 struct trace_t trace = {NULL, LOCATE_hash, 304, LOCATE_hash___HashMap___clear};
641 trace.prev = tracehead; tracehead = &trace;
642 ((hash___HashCollection___raz_t)CALL( self,COLOR_hash___HashCollection___raz))( self) /*HashCollection::raz*/;
643 tracehead = trace.prev;
644 return;
645 }
646 val_t hash___HashMap___couple_at(val_t self, val_t param0) {
647 struct trace_t trace = {NULL, LOCATE_hash, 306, LOCATE_hash___HashMap___couple_at};
648 val_t variable0;
649 val_t variable1;
650 val_t variable2;
651 trace.prev = tracehead; tracehead = &trace;
652 variable0 = param0;
653 variable1 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
654 variable2 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable0 /*key*/) /*HashCollection::index_at*/;
655 variable1 = UNBOX_NativeArray(variable1)[UNTAG_Int(variable2)];
656 goto return_label30;
657 return_label30: while(false);
658 tracehead = trace.prev;
659 return variable1;
660 }
661 void hash___HashMap___init(val_t self, int* init_table) {
662 struct trace_t trace = {NULL, LOCATE_hash, 308, LOCATE_hash___HashMap___init};
663 trace.prev = tracehead; tracehead = &trace;
664 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashMap].i]) return;
665 ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/ = TAG_Int(0);
666 ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/ = TAG_Int(0);
667 ((hash___HashCollection___enlarge_t)CALL( self,COLOR_hash___HashCollection___enlarge))( self, TAG_Int(0)) /*HashCollection::enlarge*/;
668 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashMap].i] = 1;
669 tracehead = trace.prev;
670 return;
671 }
672 val_t hash___HashMapNode___key(val_t self) {
673 struct trace_t trace = {NULL, LOCATE_hash, 319, LOCATE_hash___HashMapNode___key};
674 val_t variable0;
675 trace.prev = tracehead; tracehead = &trace;
676 variable0 = ((abstract_collection___Couple___first_t)CALL( self,COLOR_abstract_collection___Couple___first))( self) /*Couple::first*/;
677 goto return_label32;
678 return_label32: while(false);
679 tracehead = trace.prev;
680 return variable0;
681 }
682 void hash___HashMapNode___init(val_t self, val_t param0, val_t param1, int* init_table) {
683 struct trace_t trace = {NULL, LOCATE_hash, 322, LOCATE_hash___HashMapNode___init};
684 val_t variable0;
685 val_t variable1;
686 trace.prev = tracehead; tracehead = &trace;
687 variable0 = param0;
688 variable1 = param1;
689 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashMapNode].i]) return;
690 ((abstract_collection___Couple___first__eq_t)CALL( self,COLOR_abstract_collection___Couple___first__eq))( self, variable0 /*k*/) /*Couple::first=*/;
691 ((abstract_collection___Couple___second__eq_t)CALL( self,COLOR_abstract_collection___Couple___second__eq))( self, variable1 /*v*/) /*Couple::second=*/;
692 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashMapNode].i] = 1;
693 tracehead = trace.prev;
694 return;
695 }
696 val_t hash___HashMapIterator___is_ok(val_t self) {
697 struct trace_t trace = {NULL, LOCATE_hash, 331, LOCATE_hash___HashMapIterator___is_ok};
698 val_t variable0;
699 trace.prev = tracehead; tracehead = &trace;
700 variable0 = ATTR_hash___HashMapIterator____node( self) /*HashMapIterator::_node*/;
701 variable0 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable0 == NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0, NIT_NULL /*null*/) /*Object::==*/)))))));
702 goto return_label34;
703 return_label34: while(false);
704 tracehead = trace.prev;
705 return variable0;
706 }
707 val_t hash___HashMapIterator___item(val_t self) {
708 struct trace_t trace = {NULL, LOCATE_hash, 333, LOCATE_hash___HashMapIterator___item};
709 val_t variable0;
710 trace.prev = tracehead; tracehead = &trace;
711 variable0 = ((hash___HashMapIterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*HashMapIterator::is_ok*/;
712 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashMapIterator___item, LOCATE_hash, 335); nit_exit(1);}
713 variable0 = ATTR_hash___HashMapIterator____node( self) /*HashMapIterator::_node*/;
714 variable0 = ((abstract_collection___Couple___second_t)CALL(variable0,COLOR_abstract_collection___Couple___second))(variable0) /*Couple::second*/;
715 goto return_label35;
716 return_label35: while(false);
717 tracehead = trace.prev;
718 return variable0;
719 }
720 void hash___HashMapIterator___item__eq(val_t self, val_t param0) {
721 struct trace_t trace = {NULL, LOCATE_hash, 339, LOCATE_hash___HashMapIterator___item__eq};
722 val_t variable0;
723 val_t variable1;
724 trace.prev = tracehead; tracehead = &trace;
725 variable0 = param0;
726 variable1 = ((hash___HashMapIterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*HashMapIterator::is_ok*/;
727 if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashMapIterator___item__eq, LOCATE_hash, 341); nit_exit(1);}
728 variable1 = ATTR_hash___HashMapIterator____node( self) /*HashMapIterator::_node*/;
729 ((abstract_collection___Couple___second__eq_t)CALL(variable1,COLOR_abstract_collection___Couple___second__eq))(variable1, variable0 /*value*/) /*Couple::second=*/;
730 tracehead = trace.prev;
731 return;
732 }
733 val_t hash___HashMapIterator___key(val_t self) {
734 struct trace_t trace = {NULL, LOCATE_hash, 345, LOCATE_hash___HashMapIterator___key};
735 val_t variable0;
736 trace.prev = tracehead; tracehead = &trace;
737 variable0 = ((hash___HashMapIterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*HashMapIterator::is_ok*/;
738 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashMapIterator___key, LOCATE_hash, 347); nit_exit(1);}
739 variable0 = ATTR_hash___HashMapIterator____node( self) /*HashMapIterator::_node*/;
740 variable0 = ((abstract_collection___Couple___first_t)CALL(variable0,COLOR_abstract_collection___Couple___first))(variable0) /*Couple::first*/;
741 goto return_label37;
742 return_label37: while(false);
743 tracehead = trace.prev;
744 return variable0;
745 }
746 void hash___HashMapIterator___next(val_t self) {
747 struct trace_t trace = {NULL, LOCATE_hash, 351, LOCATE_hash___HashMapIterator___next};
748 val_t variable0;
749 trace.prev = tracehead; tracehead = &trace;
750 variable0 = ((hash___HashMapIterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*HashMapIterator::is_ok*/;
751 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashMapIterator___next, LOCATE_hash, 353); nit_exit(1);}
752 variable0 = ATTR_hash___HashMapIterator____node( self) /*HashMapIterator::_node*/;
753 variable0 = ((hash___HashNode___next_item_t)CALL(variable0,COLOR_hash___HashNode___next_item))(variable0) /*HashNode::next_item*/;
754 ATTR_hash___HashMapIterator____node( self) /*HashMapIterator::_node*/ = variable0;
755 tracehead = trace.prev;
756 return;
757 }
758 void hash___HashMapIterator___init(val_t self, val_t param0, int* init_table) {
759 struct trace_t trace = {NULL, LOCATE_hash, 363, LOCATE_hash___HashMapIterator___init};
760 val_t variable0;
761 val_t variable1;
762 trace.prev = tracehead; tracehead = &trace;
763 variable0 = param0;
764 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashMapIterator].i]) return;
765 ATTR_hash___HashMapIterator____map( self) /*HashMapIterator::_map*/ = variable0 /*map*/;
766 variable1 = ((hash___HashCollection___first_item_t)CALL( variable0 /*map*/,COLOR_hash___HashCollection___first_item))( variable0 /*map*/) /*HashCollection::first_item*/;
767 ATTR_hash___HashMapIterator____node( self) /*HashMapIterator::_node*/ = variable1;
768 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashMapIterator].i] = 1;
769 tracehead = trace.prev;
770 return;
771 }
772 val_t hash___HashSet___is_empty(val_t self) {
773 struct trace_t trace = {NULL, LOCATE_hash, 374, LOCATE_hash___HashSet___is_empty};
774 val_t variable0;
775 trace.prev = tracehead; tracehead = &trace;
776 variable0 = ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
777 variable0 = TAG_Bool((variable0)==( TAG_Int(0)));
778 goto return_label40;
779 return_label40: while(false);
780 tracehead = trace.prev;
781 return variable0;
782 }
783 val_t hash___HashSet___first(val_t self) {
784 struct trace_t trace = {NULL, LOCATE_hash, 376, LOCATE_hash___HashSet___first};
785 val_t variable0;
786 trace.prev = tracehead; tracehead = &trace;
787 variable0 = ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/;
788 variable0 = TAG_Bool(UNTAG_Int(variable0)>UNTAG_Int( TAG_Int(0)));
789 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashSet___first, LOCATE_hash, 378); nit_exit(1);}
790 variable0 = ATTR_hash___HashCollection____first_item( self) /*HashCollection::_first_item*/;
791 variable0 = ((hash___HashSetNode___key_t)CALL(variable0,COLOR_hash___HashNode___key))(variable0) /*HashSetNode::key*/;
792 goto return_label41;
793 return_label41: while(false);
794 tracehead = trace.prev;
795 return variable0;
796 }
797 val_t hash___HashSet___has(val_t self, val_t param0) {
798 struct trace_t trace = {NULL, LOCATE_hash, 382, LOCATE_hash___HashSet___has};
799 val_t variable0;
800 val_t variable1;
801 val_t variable2;
802 trace.prev = tracehead; tracehead = &trace;
803 variable0 = param0;
804 variable1 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
805 variable2 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable0 /*item*/) /*HashCollection::index_at*/;
806 variable1 = UNBOX_NativeArray(variable1)[UNTAG_Int(variable2)];
807 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))))));
808 goto return_label42;
809 return_label42: while(false);
810 tracehead = trace.prev;
811 return variable1;
812 }
813 void hash___HashSet___add(val_t self, val_t param0) {
814 struct trace_t trace = {NULL, LOCATE_hash, 387, LOCATE_hash___HashSet___add};
815 val_t variable0;
816 val_t variable1;
817 val_t variable2;
818 val_t variable3;
819 trace.prev = tracehead; tracehead = &trace;
820 variable0 = param0;
821 variable2 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable0 /*item*/) /*HashCollection::index_at*/;
822 variable1 = variable2;
823 variable3 = ATTR_hash___HashCollection____array( self) /*HashCollection::_array*/;
824 variable3 = UNBOX_NativeArray(variable3)[UNTAG_Int( variable1 /*i*/)];
825 variable2 = variable3;
826 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*c*/ == NIT_NULL /*null*/) || (( variable2 /*c*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*c*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*c*/,COLOR_kernel___Object_____eqeq))( variable2 /*c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
827 if (UNTAG_Bool(variable3)) { /*if*/
828 ((hash___HashSetNode___key__eq_t)CALL( variable2 /*c*/,COLOR_hash___HashSetNode___key__eq))( variable2 /*c*/, variable0 /*item*/) /*HashSetNode::key=*/;
829 } else { /*if*/
830 variable3 = NEW_hash___HashSetNode___init( variable0 /*item*/); /*new HashSetNode[E]*/
831 ((hash___HashCollection___store_t)CALL( self,COLOR_hash___HashCollection___store))( self, variable1 /*i*/, variable3) /*HashCollection::store*/;
832 }
833 tracehead = trace.prev;
834 return;
835 }
836 void hash___HashSet___remove(val_t self, val_t param0) {
837 struct trace_t trace = {NULL, LOCATE_hash, 398, LOCATE_hash___HashSet___remove};
838 val_t variable0;
839 val_t variable1;
840 trace.prev = tracehead; tracehead = &trace;
841 variable0 = param0;
842 variable1 = ((hash___HashCollection___index_at_t)CALL( self,COLOR_hash___HashCollection___index_at))( self, variable0 /*item*/) /*HashCollection::index_at*/;
843 ((hash___HashCollection___remove_index_t)CALL( self,COLOR_hash___HashCollection___remove_index))( self, variable1) /*HashCollection::remove_index*/;
844 tracehead = trace.prev;
845 return;
846 }
847 void hash___HashSet___clear(val_t self) {
848 struct trace_t trace = {NULL, LOCATE_hash, 400, LOCATE_hash___HashSet___clear};
849 trace.prev = tracehead; tracehead = &trace;
850 ((hash___HashCollection___raz_t)CALL( self,COLOR_hash___HashCollection___raz))( self) /*HashCollection::raz*/;
851 tracehead = trace.prev;
852 return;
853 }
854 val_t hash___HashSet___iterator(val_t self) {
855 struct trace_t trace = {NULL, LOCATE_hash, 402, LOCATE_hash___HashSet___iterator};
856 val_t variable0;
857 trace.prev = tracehead; tracehead = &trace;
858 variable0 = NEW_hash___HashSetIterator___init( self); /*new HashSetIterator[E]*/
859 goto return_label46;
860 return_label46: while(false);
861 tracehead = trace.prev;
862 return variable0;
863 }
864 void hash___HashSet___init(val_t self, int* init_table) {
865 struct trace_t trace = {NULL, LOCATE_hash, 404, LOCATE_hash___HashSet___init};
866 trace.prev = tracehead; tracehead = &trace;
867 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashSet].i]) return;
868 ATTR_hash___HashCollection____capacity( self) /*HashCollection::_capacity*/ = TAG_Int(0);
869 ATTR_hash___HashCollection____length( self) /*HashCollection::_length*/ = TAG_Int(0);
870 ((hash___HashCollection___enlarge_t)CALL( self,COLOR_hash___HashCollection___enlarge))( self, TAG_Int(0)) /*HashCollection::enlarge*/;
871 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashSet].i] = 1;
872 tracehead = trace.prev;
873 return;
874 }
875 val_t hash___HashSetNode___key(val_t self) {
876 struct trace_t trace = {NULL, LOCATE_hash, 416, LOCATE_hash___HashSetNode___key};
877 trace.prev = tracehead; tracehead = &trace;
878 tracehead = trace.prev;
879 return ATTR_hash___HashSetNode____key( self) /*HashSetNode::_key*/;
880 }
881 void hash___HashSetNode___key__eq(val_t self, val_t param0) {
882 struct trace_t trace = {NULL, LOCATE_hash, 416, LOCATE_hash___HashSetNode___key__eq};
883 trace.prev = tracehead; tracehead = &trace;
884 ATTR_hash___HashSetNode____key( self) /*HashSetNode::_key*/ = param0;
885 tracehead = trace.prev;
886 return;
887 }
888 void hash___HashSetNode___init(val_t self, val_t param0, int* init_table) {
889 struct trace_t trace = {NULL, LOCATE_hash, 418, LOCATE_hash___HashSetNode___init};
890 val_t variable0;
891 trace.prev = tracehead; tracehead = &trace;
892 variable0 = param0;
893 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashSetNode].i]) return;
894 ATTR_hash___HashSetNode____key( self) /*HashSetNode::_key*/ = variable0 /*e*/;
895 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashSetNode].i] = 1;
896 tracehead = trace.prev;
897 return;
898 }
899 val_t hash___HashSetIterator___is_ok(val_t self) {
900 struct trace_t trace = {NULL, LOCATE_hash, 426, LOCATE_hash___HashSetIterator___is_ok};
901 val_t variable0;
902 trace.prev = tracehead; tracehead = &trace;
903 variable0 = ATTR_hash___HashSetIterator____node( self) /*HashSetIterator::_node*/;
904 variable0 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable0 == NIT_NULL /*null*/) || ((variable0 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable0, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable0,COLOR_kernel___Object_____eqeq))(variable0, NIT_NULL /*null*/) /*Object::==*/)))))));
905 goto return_label49;
906 return_label49: while(false);
907 tracehead = trace.prev;
908 return variable0;
909 }
910 val_t hash___HashSetIterator___item(val_t self) {
911 struct trace_t trace = {NULL, LOCATE_hash, 428, LOCATE_hash___HashSetIterator___item};
912 val_t variable0;
913 trace.prev = tracehead; tracehead = &trace;
914 variable0 = ((hash___HashSetIterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*HashSetIterator::is_ok*/;
915 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashSetIterator___item, LOCATE_hash, 430); nit_exit(1);}
916 variable0 = ATTR_hash___HashSetIterator____node( self) /*HashSetIterator::_node*/;
917 variable0 = ((hash___HashSetNode___key_t)CALL(variable0,COLOR_hash___HashNode___key))(variable0) /*HashSetNode::key*/;
918 goto return_label50;
919 return_label50: while(false);
920 tracehead = trace.prev;
921 return variable0;
922 }
923 void hash___HashSetIterator___next(val_t self) {
924 struct trace_t trace = {NULL, LOCATE_hash, 434, LOCATE_hash___HashSetIterator___next};
925 val_t variable0;
926 trace.prev = tracehead; tracehead = &trace;
927 variable0 = ((hash___HashSetIterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*HashSetIterator::is_ok*/;
928 if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_hash___HashSetIterator___next, LOCATE_hash, 436); nit_exit(1);}
929 variable0 = ATTR_hash___HashSetIterator____node( self) /*HashSetIterator::_node*/;
930 variable0 = ((hash___HashNode___next_item_t)CALL(variable0,COLOR_hash___HashNode___next_item))(variable0) /*HashNode::next_item*/;
931 ATTR_hash___HashSetIterator____node( self) /*HashSetIterator::_node*/ = variable0;
932 tracehead = trace.prev;
933 return;
934 }
935 void hash___HashSetIterator___init(val_t self, val_t param0, int* init_table) {
936 struct trace_t trace = {NULL, LOCATE_hash, 446, LOCATE_hash___HashSetIterator___init};
937 val_t variable0;
938 val_t variable1;
939 trace.prev = tracehead; tracehead = &trace;
940 variable0 = param0;
941 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashSetIterator].i]) return;
942 ATTR_hash___HashSetIterator____set( self) /*HashSetIterator::_set*/ = variable0 /*set*/;
943 variable1 = ((hash___HashCollection___first_item_t)CALL( variable0 /*set*/,COLOR_hash___HashCollection___first_item))( variable0 /*set*/) /*HashCollection::first_item*/;
944 ATTR_hash___HashSetIterator____node( self) /*HashSetIterator::_node*/ = variable1;
945 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_HashSetIterator].i] = 1;
946 tracehead = trace.prev;
947 return;
948 }