1 /* This C file is generated by NIT to compile module list. */
3 val_t
list___List___iterator(val_t self
) {
4 struct trace_t trace
= {NULL
, NULL
, 173, LOCATE_list___List___iterator
};
6 struct WBT_
**closurevariable
= NULL
;
7 trace
.prev
= tracehead
; tracehead
= &trace
;
8 trace
.file
= LOCATE_list
;
9 /* Register variable[0]: Local variable */
11 /* Register variable[1]: Method return value and escape marker */
12 /* Register variable[2]: Result */
13 variable
[2] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
14 /* Register variable[2]: Result */
15 variable
[2] = NEW_ListIterator_list___ListIterator___init(variable
[2]) /*new ListIterator[E]*/;
16 variable
[1] = variable
[2];
18 return_label0
: while(false);
19 tracehead
= trace
.prev
;
22 val_t
list___List___is_empty(val_t self
) {
23 struct trace_t trace
= {NULL
, NULL
, 40, LOCATE_list___List___is_empty
};
25 struct WBT_
**closurevariable
= NULL
;
26 trace
.prev
= tracehead
; tracehead
= &trace
;
27 trace
.file
= LOCATE_list
;
28 /* Register variable[0]: Local variable */
30 /* Register variable[1]: Method return value and escape marker */
31 /* Register variable[2]: Result */
32 variable
[2] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
33 /* Register variable[2]: Result */
34 variable
[2] = TAG_Bool((variable
[2] == NIT_NULL
/*null*/) || ((variable
[2] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[2])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[2], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[2])(variable
[2], NIT_NULL
/*null*/) /*Object::==*/)))));
35 variable
[1] = variable
[2];
37 return_label1
: while(false);
38 tracehead
= trace
.prev
;
41 val_t
list___List___length(val_t self
) {
42 struct trace_t trace
= {NULL
, NULL
, 43, LOCATE_list___List___length
};
44 struct WBT_
**closurevariable
= NULL
;
45 trace
.prev
= tracehead
; tracehead
= &trace
;
46 trace
.file
= LOCATE_list
;
47 /* Register variable[0]: Local variable */
49 /* Register variable[1]: Method return value and escape marker */
50 /* Register variable[2]: Local variable */
51 variable
[2] = TAG_Int(0);
52 /* Register variable[3]: Local variable */
53 /* Register variable[4]: Result */
54 variable
[4] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
55 variable
[3] = variable
[4];
56 while (true) { /*while*/
57 /* Register variable[4]: Result */
58 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[3] /*t*/ == NIT_NULL
/*null*/) || (( variable
[3] /*t*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[3] /*t*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[3] /*t*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[3] /*t*/)( variable
[3] /*t*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
59 if (!UNTAG_Bool(variable
[4])) break; /* while*/
60 variable
[2] = TAG_Int(UNTAG_Int(variable
[2])+UNTAG_Int( TAG_Int(1))) /*l*/;
61 /* Register variable[4]: Result */
62 variable
[4] = CALL_list___ListNode___next( variable
[3] /*t*/)( variable
[3] /*t*/) /*ListNode::next*/;
63 variable
[3] = variable
[4] /*t=*/;
67 variable
[1] = variable
[2] /*l*/;
69 return_label2
: while(false);
70 tracehead
= trace
.prev
;
73 val_t
list___List___has(val_t self
, val_t param0
) {
74 struct trace_t trace
= {NULL
, NULL
, 55, LOCATE_list___List___has
};
76 struct WBT_
**closurevariable
= NULL
;
77 trace
.prev
= tracehead
; tracehead
= &trace
;
78 trace
.file
= LOCATE_list
;
79 /* Register variable[0]: Local variable */
81 /* Register variable[1]: Local variable */
83 /* Register variable[2]: Method return value and escape marker */
84 /* Register variable[3]: Result */
85 variable
[3] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
86 /* Register variable[3]: Result */
87 variable
[3] = CALL_list___List___search_node_after(variable
[0])(variable
[0], variable
[1] /*e*/, variable
[3]) /*List::search_node_after*/;
88 /* Register variable[3]: Result */
89 variable
[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))))));
90 variable
[2] = variable
[3];
92 return_label4
: while(false);
93 tracehead
= trace
.prev
;
96 val_t
list___List___has_only(val_t self
, val_t param0
) {
97 struct trace_t trace
= {NULL
, NULL
, 58, LOCATE_list___List___has_only
};
99 struct WBT_
**closurevariable
= NULL
;
100 trace
.prev
= tracehead
; tracehead
= &trace
;
101 trace
.file
= LOCATE_list
;
102 /* Register variable[0]: Local variable */
104 /* Register variable[1]: Local variable */
105 variable
[1] = param0
;
106 /* Register variable[2]: Method return value and escape marker */
107 /* Register variable[3]: Local variable */
108 /* Register variable[4]: Result */
109 variable
[4] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
110 variable
[3] = variable
[4];
111 while (true) { /*while*/
112 /* Register variable[4]: Result */
113 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[3] /*node*/ == NIT_NULL
/*null*/) || (( variable
[3] /*node*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[3] /*node*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[3] /*node*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[3] /*node*/)( variable
[3] /*node*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
114 if (!UNTAG_Bool(variable
[4])) break; /* while*/
115 /* Register variable[4]: Result */
116 variable
[4] = CALL_abstract_collection___Container___item( variable
[3] /*node*/)( variable
[3] /*node*/) /*Container::item*/;
117 /* Register variable[4]: Result */
118 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[4] == variable
[1] /*e*/) || ((variable
[4] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[4])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[4], variable
[1] /*e*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[4])(variable
[4], variable
[1] /*e*/) /*Object::==*/)))))));
119 if (UNTAG_Bool(variable
[4])) { /*if*/
120 variable
[2] = TAG_Bool(false);
123 /* Register variable[4]: Result */
124 variable
[4] = CALL_list___ListNode___next( variable
[3] /*node*/)( variable
[3] /*node*/) /*ListNode::next*/;
125 variable
[3] = variable
[4] /*node=*/;
126 continue_6
: while(0);
129 variable
[2] = TAG_Bool(true);
131 return_label5
: while(false);
132 tracehead
= trace
.prev
;
135 val_t
list___List___count(val_t self
, val_t param0
) {
136 struct trace_t trace
= {NULL
, NULL
, 68, LOCATE_list___List___count
};
138 struct WBT_
**closurevariable
= NULL
;
139 trace
.prev
= tracehead
; tracehead
= &trace
;
140 trace
.file
= LOCATE_list
;
141 /* Register variable[0]: Local variable */
143 /* Register variable[1]: Local variable */
144 variable
[1] = param0
;
145 /* Register variable[2]: Method return value and escape marker */
146 /* Register variable[3]: Local variable */
147 variable
[3] = TAG_Int(0);
148 /* Register variable[4]: Local variable */
149 /* Register variable[5]: Result */
150 variable
[5] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
151 variable
[4] = variable
[5];
152 while (true) { /*while*/
153 /* Register variable[5]: Result */
154 variable
[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[4] /*node*/ == NIT_NULL
/*null*/) || (( variable
[4] /*node*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[4] /*node*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[4] /*node*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[4] /*node*/)( variable
[4] /*node*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
155 if (!UNTAG_Bool(variable
[5])) break; /* while*/
156 /* Register variable[5]: Result */
157 variable
[5] = CALL_abstract_collection___Container___item( variable
[4] /*node*/)( variable
[4] /*node*/) /*Container::item*/;
158 /* Register variable[5]: Result */
159 variable
[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[5] == variable
[1] /*e*/) || ((variable
[5] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[5])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[5], variable
[1] /*e*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[5])(variable
[5], variable
[1] /*e*/) /*Object::==*/)))))));
160 if (UNTAG_Bool(variable
[5])) { /*if*/
161 variable
[3] = TAG_Int(UNTAG_Int(variable
[3])+UNTAG_Int( TAG_Int(1))) /*nb*/;
163 /* Register variable[5]: Result */
164 variable
[5] = CALL_list___ListNode___next( variable
[4] /*node*/)( variable
[4] /*node*/) /*ListNode::next*/;
165 variable
[4] = variable
[5] /*node=*/;
166 continue_8
: while(0);
169 variable
[2] = variable
[3] /*nb*/;
171 return_label7
: while(false);
172 tracehead
= trace
.prev
;
175 val_t
list___List___first(val_t self
) {
176 struct trace_t trace
= {NULL
, NULL
, 26, LOCATE_list___List___first
};
178 struct WBT_
**closurevariable
= NULL
;
179 trace
.prev
= tracehead
; tracehead
= &trace
;
180 trace
.file
= LOCATE_list
;
181 /* Register variable[0]: Local variable */
183 /* Register variable[1]: Method return value and escape marker */
184 /* Register variable[2]: Result */
185 variable
[2] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
186 /* Register variable[2]: Result */
187 variable
[2] = CALL_abstract_collection___Container___item(variable
[2])(variable
[2]) /*Container::item*/;
188 variable
[1] = variable
[2];
190 return_label9
: while(false);
191 tracehead
= trace
.prev
;
194 val_t
list___List_____bra(val_t self
, val_t param0
) {
195 struct trace_t trace
= {NULL
, NULL
, 21, LOCATE_list___List_____bra
};
197 struct WBT_
**closurevariable
= NULL
;
198 trace
.prev
= tracehead
; tracehead
= &trace
;
199 trace
.file
= LOCATE_list
;
200 /* Register variable[0]: Local variable */
202 /* Register variable[1]: Local variable */
203 variable
[1] = param0
;
204 /* Register variable[2]: Method return value and escape marker */
205 /* Register variable[3]: Result */
206 variable
[3] = CALL_list___List___get_node(variable
[0])(variable
[0], variable
[1] /*index*/) /*List::get_node*/;
207 /* Register variable[3]: Result */
208 variable
[3] = CALL_abstract_collection___Container___item(variable
[3])(variable
[3]) /*Container::item*/;
209 variable
[2] = variable
[3];
211 return_label10
: while(false);
212 tracehead
= trace
.prev
;
215 val_t
list___List___has_key(val_t self
, val_t param0
) {
216 struct trace_t trace
= {NULL
, NULL
, 79, LOCATE_list___List___has_key
};
218 struct WBT_
**closurevariable
= NULL
;
219 trace
.prev
= tracehead
; tracehead
= &trace
;
220 trace
.file
= LOCATE_list
;
221 /* Register variable[0]: Local variable */
223 /* Register variable[1]: Local variable */
224 variable
[1] = param0
;
225 /* Register variable[2]: Method return value and escape marker */
226 /* Register variable[3]: Result */
227 variable
[3] = CALL_list___List___get_node(variable
[0])(variable
[0], variable
[1] /*index*/) /*List::get_node*/;
228 /* Register variable[3]: Result */
229 variable
[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))))));
230 variable
[2] = variable
[3];
232 return_label11
: while(false);
233 tracehead
= trace
.prev
;
236 val_t
list___List___last(val_t self
) {
237 struct trace_t trace
= {NULL
, NULL
, 32, LOCATE_list___List___last
};
239 struct WBT_
**closurevariable
= NULL
;
240 trace
.prev
= tracehead
; tracehead
= &trace
;
241 trace
.file
= LOCATE_list
;
242 /* Register variable[0]: Local variable */
244 /* Register variable[1]: Method return value and escape marker */
245 /* Register variable[2]: Result */
246 variable
[2] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
247 /* Register variable[2]: Result */
248 variable
[2] = CALL_abstract_collection___Container___item(variable
[2])(variable
[2]) /*Container::item*/;
249 variable
[1] = variable
[2];
251 return_label12
: while(false);
252 tracehead
= trace
.prev
;
255 void list___List___clear(val_t self
) {
256 struct trace_t trace
= {NULL
, NULL
, 166, LOCATE_list___List___clear
};
258 struct WBT_
**closurevariable
= NULL
;
259 trace
.prev
= tracehead
; tracehead
= &trace
;
260 trace
.file
= LOCATE_list
;
261 /* Register variable[0]: Local variable */
263 /* Register variable[1]: Method return value and escape marker */
264 ATTR_list___List____head(variable
[0]) /*List::_head*/ = NIT_NULL
/*null*/;
265 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = NIT_NULL
/*null*/;
266 return_label13
: while(false);
267 tracehead
= trace
.prev
;
270 void list___List___remove(val_t self
, val_t param0
) {
271 struct trace_t trace
= {NULL
, NULL
, 154, LOCATE_list___List___remove
};
273 struct WBT_
**closurevariable
= NULL
;
274 trace
.prev
= tracehead
; tracehead
= &trace
;
275 trace
.file
= LOCATE_list
;
276 /* Register variable[0]: Local variable */
278 /* Register variable[1]: Local variable */
279 variable
[1] = param0
;
280 /* Register variable[2]: Method return value and escape marker */
281 /* Register variable[3]: Local variable */
282 /* Register variable[4]: Result */
283 variable
[4] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
284 /* Register variable[4]: Result */
285 variable
[4] = CALL_list___List___search_node_after(variable
[0])(variable
[0], variable
[1] /*e*/, variable
[4]) /*List::search_node_after*/;
286 variable
[3] = variable
[4];
287 /* Register variable[4]: Result */
288 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[3] /*node*/ == NIT_NULL
/*null*/) || (( variable
[3] /*node*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[3] /*node*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[3] /*node*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[3] /*node*/)( variable
[3] /*node*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
289 if (UNTAG_Bool(variable
[4])) { /*if*/
290 CALL_list___List___remove_node(variable
[0])(variable
[0], variable
[3] /*node*/) /*List::remove_node*/;
292 return_label14
: while(false);
293 tracehead
= trace
.prev
;
296 void list___List_____braeq(val_t self
, val_t param0
, val_t param1
) {
297 struct trace_t trace
= {NULL
, NULL
, 24, LOCATE_list___List_____braeq
};
299 struct WBT_
**closurevariable
= NULL
;
300 trace
.prev
= tracehead
; tracehead
= &trace
;
301 trace
.file
= LOCATE_list
;
302 /* Register variable[0]: Local variable */
304 /* Register variable[1]: Local variable */
305 variable
[1] = param0
;
306 /* Register variable[2]: Local variable */
307 variable
[2] = param1
;
308 /* Register variable[3]: Method return value and escape marker */
309 /* Register variable[4]: Result */
310 variable
[4] = CALL_list___List___get_node(variable
[0])(variable
[0], variable
[1] /*index*/) /*List::get_node*/;
311 CALL_abstract_collection___Container___item__eq(variable
[4])(variable
[4], variable
[2] /*item*/) /*Container::item=*/;
312 return_label15
: while(false);
313 tracehead
= trace
.prev
;
316 void list___List___remove_at(val_t self
, val_t param0
) {
317 struct trace_t trace
= {NULL
, NULL
, 160, LOCATE_list___List___remove_at
};
319 struct WBT_
**closurevariable
= NULL
;
320 trace
.prev
= tracehead
; tracehead
= &trace
;
321 trace
.file
= LOCATE_list
;
322 /* Register variable[0]: Local variable */
324 /* Register variable[1]: Local variable */
325 variable
[1] = param0
;
326 /* Register variable[2]: Method return value and escape marker */
327 /* Register variable[3]: Local variable */
328 /* Register variable[4]: Result */
329 variable
[4] = CALL_list___List___get_node(variable
[0])(variable
[0], variable
[1] /*i*/) /*List::get_node*/;
330 variable
[3] = variable
[4];
331 /* Register variable[4]: Result */
332 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[3] /*node*/ == NIT_NULL
/*null*/) || (( variable
[3] /*node*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[3] /*node*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[3] /*node*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[3] /*node*/)( variable
[3] /*node*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
333 if (UNTAG_Bool(variable
[4])) { /*if*/
334 CALL_list___List___remove_node(variable
[0])(variable
[0], variable
[3] /*node*/) /*List::remove_node*/;
336 return_label16
: while(false);
337 tracehead
= trace
.prev
;
340 void list___List___first__eq(val_t self
, val_t param0
) {
341 struct trace_t trace
= {NULL
, NULL
, 29, LOCATE_list___List___first__eq
};
343 struct WBT_
**closurevariable
= NULL
;
344 trace
.prev
= tracehead
; tracehead
= &trace
;
345 trace
.file
= LOCATE_list
;
346 /* Register variable[0]: Local variable */
348 /* Register variable[1]: Local variable */
349 variable
[1] = param0
;
350 /* Register variable[2]: Method return value and escape marker */
351 /* Register variable[3]: Result */
352 variable
[3] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
353 CALL_abstract_collection___Container___item__eq(variable
[3])(variable
[3], variable
[1] /*e*/) /*Container::item=*/;
354 return_label17
: while(false);
355 tracehead
= trace
.prev
;
358 void list___List___last__eq(val_t self
, val_t param0
) {
359 struct trace_t trace
= {NULL
, NULL
, 35, LOCATE_list___List___last__eq
};
361 struct WBT_
**closurevariable
= NULL
;
362 trace
.prev
= tracehead
; tracehead
= &trace
;
363 trace
.file
= LOCATE_list
;
364 /* Register variable[0]: Local variable */
366 /* Register variable[1]: Local variable */
367 variable
[1] = param0
;
368 /* Register variable[2]: Method return value and escape marker */
369 /* Register variable[3]: Result */
370 variable
[3] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
371 CALL_abstract_collection___Container___item__eq(variable
[3])(variable
[3], variable
[1] /*e*/) /*Container::item=*/;
372 return_label18
: while(false);
373 tracehead
= trace
.prev
;
376 void list___List___push(val_t self
, val_t param0
) {
377 struct trace_t trace
= {NULL
, NULL
, 83, LOCATE_list___List___push
};
379 struct WBT_
**closurevariable
= NULL
;
380 trace
.prev
= tracehead
; tracehead
= &trace
;
381 trace
.file
= LOCATE_list
;
382 /* Register variable[0]: Local variable */
384 /* Register variable[1]: Local variable */
385 variable
[1] = param0
;
386 /* Register variable[2]: Method return value and escape marker */
387 /* Register variable[3]: Local variable */
388 /* Register variable[4]: Result */
389 variable
[4] = NEW_ListNode_list___ListNode___init( variable
[1] /*e*/) /*new ListNode[E]*/;
390 variable
[3] = variable
[4];
391 /* Register variable[4]: Result */
392 variable
[4] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
393 /* Register variable[4]: Result */
394 variable
[4] = TAG_Bool((variable
[4] == NIT_NULL
/*null*/) || ((variable
[4] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[4])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[4], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[4])(variable
[4], NIT_NULL
/*null*/) /*Object::==*/)))));
395 if (UNTAG_Bool(variable
[4])) { /*if*/
396 ATTR_list___List____head(variable
[0]) /*List::_head*/ = variable
[3] /*node*/;
398 /* Register variable[4]: Result */
399 variable
[4] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
400 CALL_list___ListNode___next__eq(variable
[4])(variable
[4], variable
[3] /*node*/) /*ListNode::next=*/;
401 /* Register variable[4]: Result */
402 variable
[4] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
403 CALL_list___ListNode___prev__eq( variable
[3] /*node*/)( variable
[3] /*node*/, variable
[4]) /*ListNode::prev=*/;
405 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = variable
[3] /*node*/;
406 return_label19
: while(false);
407 tracehead
= trace
.prev
;
410 val_t
list___List___pop(val_t self
) {
411 struct trace_t trace
= {NULL
, NULL
, 126, LOCATE_list___List___pop
};
413 struct WBT_
**closurevariable
= NULL
;
414 trace
.prev
= tracehead
; tracehead
= &trace
;
415 trace
.file
= LOCATE_list
;
416 /* Register variable[0]: Local variable */
418 /* Register variable[1]: Method return value and escape marker */
419 /* Register variable[2]: Local variable */
420 /* Register variable[3]: Result */
421 variable
[3] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
422 variable
[2] = variable
[3];
423 /* Register variable[3]: Result */
424 variable
[3] = CALL_list___ListNode___prev( variable
[2] /*node*/)( variable
[2] /*node*/) /*ListNode::prev*/;
425 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = variable
[3];
426 CALL_list___ListNode___prev__eq( variable
[2] /*node*/)( variable
[2] /*node*/, NIT_NULL
/*null*/) /*ListNode::prev=*/;
427 /* Register variable[3]: Result */
428 variable
[3] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
429 /* Register variable[3]: Result */
430 variable
[3] = TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))));
431 if (UNTAG_Bool(variable
[3])) { /*if*/
432 ATTR_list___List____head(variable
[0]) /*List::_head*/ = NIT_NULL
/*null*/;
434 /* Register variable[3]: Result */
435 variable
[3] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
436 CALL_list___ListNode___next__eq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*ListNode::next=*/;
438 /* Register variable[3]: Result */
439 variable
[3] = CALL_abstract_collection___Container___item( variable
[2] /*node*/)( variable
[2] /*node*/) /*Container::item*/;
440 variable
[1] = variable
[3];
442 return_label20
: while(false);
443 tracehead
= trace
.prev
;
446 void list___List___unshift(val_t self
, val_t param0
) {
447 struct trace_t trace
= {NULL
, NULL
, 96, LOCATE_list___List___unshift
};
449 struct WBT_
**closurevariable
= NULL
;
450 trace
.prev
= tracehead
; tracehead
= &trace
;
451 trace
.file
= LOCATE_list
;
452 /* Register variable[0]: Local variable */
454 /* Register variable[1]: Local variable */
455 variable
[1] = param0
;
456 /* Register variable[2]: Method return value and escape marker */
457 /* Register variable[3]: Local variable */
458 /* Register variable[4]: Result */
459 variable
[4] = NEW_ListNode_list___ListNode___init( variable
[1] /*e*/) /*new ListNode[E]*/;
460 variable
[3] = variable
[4];
461 /* Register variable[4]: Result */
462 variable
[4] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
463 /* Register variable[4]: Result */
464 variable
[4] = TAG_Bool((variable
[4] == NIT_NULL
/*null*/) || ((variable
[4] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[4])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[4], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[4])(variable
[4], NIT_NULL
/*null*/) /*Object::==*/)))));
465 if (UNTAG_Bool(variable
[4])) { /*if*/
466 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = variable
[3] /*node*/;
468 /* Register variable[4]: Result */
469 variable
[4] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
470 CALL_list___ListNode___next__eq( variable
[3] /*node*/)( variable
[3] /*node*/, variable
[4]) /*ListNode::next=*/;
471 /* Register variable[4]: Result */
472 variable
[4] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
473 CALL_list___ListNode___prev__eq(variable
[4])(variable
[4], variable
[3] /*node*/) /*ListNode::prev=*/;
475 ATTR_list___List____head(variable
[0]) /*List::_head*/ = variable
[3] /*node*/;
476 return_label21
: while(false);
477 tracehead
= trace
.prev
;
480 val_t
list___List___shift(val_t self
) {
481 struct trace_t trace
= {NULL
, NULL
, 140, LOCATE_list___List___shift
};
483 struct WBT_
**closurevariable
= NULL
;
484 trace
.prev
= tracehead
; tracehead
= &trace
;
485 trace
.file
= LOCATE_list
;
486 /* Register variable[0]: Local variable */
488 /* Register variable[1]: Method return value and escape marker */
489 /* Register variable[2]: Local variable */
490 /* Register variable[3]: Result */
491 variable
[3] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
492 variable
[2] = variable
[3];
493 /* Register variable[3]: Result */
494 variable
[3] = CALL_list___ListNode___next( variable
[2] /*node*/)( variable
[2] /*node*/) /*ListNode::next*/;
495 ATTR_list___List____head(variable
[0]) /*List::_head*/ = variable
[3];
496 CALL_list___ListNode___next__eq( variable
[2] /*node*/)( variable
[2] /*node*/, NIT_NULL
/*null*/) /*ListNode::next=*/;
497 /* Register variable[3]: Result */
498 variable
[3] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
499 /* Register variable[3]: Result */
500 variable
[3] = TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))));
501 if (UNTAG_Bool(variable
[3])) { /*if*/
502 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = NIT_NULL
/*null*/;
504 /* Register variable[3]: Result */
505 variable
[3] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
506 CALL_list___ListNode___prev__eq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*ListNode::prev=*/;
508 /* Register variable[3]: Result */
509 variable
[3] = CALL_abstract_collection___Container___item( variable
[2] /*node*/)( variable
[2] /*node*/) /*Container::item*/;
510 variable
[1] = variable
[3];
512 return_label22
: while(false);
513 tracehead
= trace
.prev
;
516 void list___List___link(val_t self
, val_t param0
) {
517 struct trace_t trace
= {NULL
, NULL
, 109, LOCATE_list___List___link
};
519 struct WBT_
**closurevariable
= NULL
;
520 trace
.prev
= tracehead
; tracehead
= &trace
;
521 trace
.file
= LOCATE_list
;
522 /* Register variable[0]: Local variable */
524 /* Register variable[1]: Local variable */
525 variable
[1] = param0
;
526 /* Register variable[2]: Method return value and escape marker */
527 /* Register variable[3]: Result */
528 variable
[3] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
529 /* Register variable[3]: Result */
530 variable
[3] = TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))));
531 if (UNTAG_Bool(variable
[3])) { /*if*/
532 /* Register variable[3]: Result */
533 variable
[3] = ATTR_list___List____head( variable
[1] /*l*/) /*List::_head*/;
534 ATTR_list___List____head(variable
[0]) /*List::_head*/ = variable
[3];
536 /* Register variable[3]: Result */
537 variable
[3] = ATTR_list___List____head( variable
[1] /*l*/) /*List::_head*/;
538 /* Register variable[3]: Result */
539 variable
[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))))));
540 if (UNTAG_Bool(variable
[3])) { /*if*/
541 /* Register variable[3]: Result */
542 variable
[3] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
543 /* Register variable[4]: Result */
544 variable
[4] = ATTR_list___List____head( variable
[1] /*l*/) /*List::_head*/;
545 CALL_list___ListNode___next__eq(variable
[3])(variable
[3], variable
[4]) /*ListNode::next=*/;
546 /* Register variable[3]: Result */
547 variable
[3] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
548 /* Register variable[3]: Result */
549 variable
[3] = CALL_list___ListNode___next(variable
[3])(variable
[3]) /*ListNode::next*/;
550 /* Register variable[4]: Result */
551 variable
[4] = ATTR_list___List____tail(variable
[0]) /*List::_tail*/;
552 CALL_list___ListNode___prev__eq(variable
[3])(variable
[3], variable
[4]) /*ListNode::prev=*/;
555 /* Register variable[3]: Result */
556 variable
[3] = ATTR_list___List____tail( variable
[1] /*l*/) /*List::_tail*/;
557 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = variable
[3];
558 CALL_abstract_collection___RemovableCollection___clear( variable
[1] /*l*/)( variable
[1] /*l*/) /*List::clear*/;
559 return_label23
: while(false);
560 tracehead
= trace
.prev
;
563 void list___List___init(val_t self
, int* init_table
) {
564 struct trace_t trace
= {NULL
, NULL
, 175, LOCATE_list___List___init
};
566 struct WBT_
**closurevariable
= NULL
;
567 trace
.prev
= tracehead
; tracehead
= &trace
;
568 trace
.file
= LOCATE_list
;
569 /* Register variable[0]: Local variable */
571 if (init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_List
].i
]) return;
572 /* Register variable[1]: Method return value and escape marker */
573 return_label24
: while(false);
574 init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_List
].i
] = 1;
575 tracehead
= trace
.prev
;
578 void list___List___from(val_t self
, val_t param0
, int* init_table
) {
579 struct trace_t trace
= {NULL
, NULL
, 178, LOCATE_list___List___from
};
581 struct WBT_
**closurevariable
= NULL
;
582 trace
.prev
= tracehead
; tracehead
= &trace
;
583 trace
.file
= LOCATE_list
;
584 /* Register variable[0]: Local variable */
586 /* Register variable[1]: Local variable */
587 variable
[1] = param0
;
588 if (init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_List
].i
]) return;
589 /* Register variable[2]: Method return value and escape marker */
590 CALL_abstract_collection___IndexedCollection___append(variable
[0])(variable
[0], variable
[1] /*coll*/) /*IndexedCollection::append*/;
591 return_label25
: while(false);
592 init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_List
].i
] = 1;
593 tracehead
= trace
.prev
;
596 val_t
list___List___get_node(val_t self
, val_t param0
) {
597 struct trace_t trace
= {NULL
, NULL
, 187, LOCATE_list___List___get_node
};
599 struct WBT_
**closurevariable
= NULL
;
600 trace
.prev
= tracehead
; tracehead
= &trace
;
601 trace
.file
= LOCATE_list
;
602 /* Register variable[0]: Local variable */
604 /* Register variable[1]: Local variable */
605 variable
[1] = param0
;
606 /* Register variable[2]: Method return value and escape marker */
607 /* Register variable[3]: Local variable */
608 /* Register variable[4]: Result */
609 variable
[4] = ATTR_list___List____head(variable
[0]) /*List::_head*/;
610 variable
[3] = variable
[4];
611 /* Register variable[4]: Result */
612 variable
[4] = TAG_Bool(UNTAG_Int( variable
[1] /*i*/)<UNTAG_Int( TAG_Int(0)));
613 if (UNTAG_Bool(variable
[4])) { /*if*/
614 variable
[2] = NIT_NULL
/*null*/;
617 while (true) { /*while*/
618 /* Register variable[4]: Result */
619 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[3] /*n*/ == NIT_NULL
/*null*/) || (( variable
[3] /*n*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[3] /*n*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[3] /*n*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[3] /*n*/)( variable
[3] /*n*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
620 /* Ensure var variable[4]: Left 'and' operand*/
621 if (UNTAG_Bool(variable
[4])) { /* and */
622 /* Register variable[4]: Result */
623 variable
[4] = TAG_Bool(UNTAG_Int( variable
[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
625 /* Register variable[4]: Result */
626 if (!UNTAG_Bool(variable
[4])) break; /* while*/
627 /* Register variable[4]: Result */
628 variable
[4] = CALL_list___ListNode___next( variable
[3] /*n*/)( variable
[3] /*n*/) /*ListNode::next*/;
629 variable
[3] = variable
[4] /*n=*/;
630 variable
[1] = TAG_Int(UNTAG_Int(variable
[1])-UNTAG_Int( TAG_Int(1))) /*i*/;
631 continue_27
: while(0);
634 variable
[2] = variable
[3] /*n*/;
636 return_label26
: while(false);
637 tracehead
= trace
.prev
;
640 val_t
list___List___search_node_after(val_t self
, val_t param0
, val_t param1
) {
641 struct trace_t trace
= {NULL
, NULL
, 201, LOCATE_list___List___search_node_after
};
643 struct WBT_
**closurevariable
= NULL
;
644 trace
.prev
= tracehead
; tracehead
= &trace
;
645 trace
.file
= LOCATE_list
;
646 /* Register variable[0]: Local variable */
648 /* Register variable[1]: Local variable */
649 variable
[1] = param0
;
650 /* Register variable[2]: Local variable */
651 variable
[2] = param1
;
652 /* Register variable[3]: Method return value and escape marker */
653 /* Register variable[4]: Local variable */
654 variable
[4] = variable
[2] /*after*/;
655 while (true) { /*while*/
656 /* Register variable[5]: Result */
657 variable
[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[4] /*n*/ == NIT_NULL
/*null*/) || (( variable
[4] /*n*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[4] /*n*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[4] /*n*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[4] /*n*/)( variable
[4] /*n*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
658 /* Ensure var variable[5]: Left 'and' operand*/
659 if (UNTAG_Bool(variable
[5])) { /* and */
660 /* Register variable[5]: Result */
661 variable
[5] = CALL_abstract_collection___Container___item( variable
[4] /*n*/)( variable
[4] /*n*/) /*Container::item*/;
662 /* Register variable[5]: Result */
663 variable
[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[5] == variable
[1] /*e*/) || ((variable
[5] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[5])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[5], variable
[1] /*e*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[5])(variable
[5], variable
[1] /*e*/) /*Object::==*/)))))));
665 /* Register variable[5]: Result */
666 if (!UNTAG_Bool(variable
[5])) break; /* while*/
667 /* Register variable[5]: Result */
668 variable
[5] = CALL_list___ListNode___next( variable
[4] /*n*/)( variable
[4] /*n*/) /*ListNode::next*/;
669 variable
[4] = variable
[5] /*n=*/;
670 continue_29
: while(0);
673 variable
[3] = variable
[4] /*n*/;
675 return_label28
: while(false);
676 tracehead
= trace
.prev
;
679 void list___List___remove_node(val_t self
, val_t param0
) {
680 struct trace_t trace
= {NULL
, NULL
, 209, LOCATE_list___List___remove_node
};
682 struct WBT_
**closurevariable
= NULL
;
683 trace
.prev
= tracehead
; tracehead
= &trace
;
684 trace
.file
= LOCATE_list
;
685 /* Register variable[0]: Local variable */
687 /* Register variable[1]: Local variable */
688 variable
[1] = param0
;
689 /* Register variable[2]: Method return value and escape marker */
690 /* Register variable[3]: Result */
691 variable
[3] = CALL_list___ListNode___prev( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::prev*/;
692 /* Register variable[3]: Result */
693 variable
[3] = TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))));
694 if (UNTAG_Bool(variable
[3])) { /*if*/
695 /* Register variable[3]: Result */
696 variable
[3] = CALL_list___ListNode___next( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::next*/;
697 ATTR_list___List____head(variable
[0]) /*List::_head*/ = variable
[3];
698 /* Register variable[3]: Result */
699 variable
[3] = CALL_list___ListNode___next( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::next*/;
700 /* Register variable[3]: Result */
701 variable
[3] = TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))));
702 if (UNTAG_Bool(variable
[3])) { /*if*/
703 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = NIT_NULL
/*null*/;
705 /* Register variable[3]: Result */
706 variable
[3] = CALL_list___ListNode___next( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::next*/;
707 CALL_list___ListNode___prev__eq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*ListNode::prev=*/;
710 /* Register variable[3]: Result */
711 variable
[3] = CALL_list___ListNode___next( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::next*/;
712 /* Register variable[3]: Result */
713 variable
[3] = TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))));
714 if (UNTAG_Bool(variable
[3])) { /*if*/
715 /* Register variable[3]: Result */
716 variable
[3] = CALL_list___ListNode___prev( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::prev*/;
717 ATTR_list___List____tail(variable
[0]) /*List::_tail*/ = variable
[3];
718 /* Register variable[3]: Result */
719 variable
[3] = CALL_list___ListNode___prev( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::prev*/;
720 CALL_list___ListNode___next__eq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*ListNode::next=*/;
722 /* Register variable[3]: Result */
723 variable
[3] = CALL_list___ListNode___prev( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::prev*/;
724 /* Register variable[4]: Result */
725 variable
[4] = CALL_list___ListNode___next( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::next*/;
726 CALL_list___ListNode___next__eq(variable
[3])(variable
[3], variable
[4]) /*ListNode::next=*/;
727 /* Register variable[3]: Result */
728 variable
[3] = CALL_list___ListNode___next( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::next*/;
729 /* Register variable[4]: Result */
730 variable
[4] = CALL_list___ListNode___prev( variable
[1] /*node*/)( variable
[1] /*node*/) /*ListNode::prev*/;
731 CALL_list___ListNode___prev__eq(variable
[3])(variable
[3], variable
[4]) /*ListNode::prev=*/;
734 return_label30
: while(false);
735 tracehead
= trace
.prev
;
738 void list___List___insert_before(val_t self
, val_t param0
, val_t param1
) {
739 struct trace_t trace
= {NULL
, NULL
, 228, LOCATE_list___List___insert_before
};
741 struct WBT_
**closurevariable
= NULL
;
742 trace
.prev
= tracehead
; tracehead
= &trace
;
743 trace
.file
= LOCATE_list
;
744 /* Register variable[0]: Local variable */
746 /* Register variable[1]: Local variable */
747 variable
[1] = param0
;
748 /* Register variable[2]: Local variable */
749 variable
[2] = param1
;
750 /* Register variable[3]: Method return value and escape marker */
751 /* Register variable[4]: Local variable */
752 /* Register variable[5]: Result */
753 variable
[5] = NEW_ListNode_list___ListNode___init( variable
[1] /*element*/) /*new ListNode[E]*/;
754 variable
[4] = variable
[5];
755 /* Register variable[5]: Local variable */
756 /* Register variable[6]: Result */
757 variable
[6] = CALL_list___ListNode___prev( variable
[2] /*node*/)( variable
[2] /*node*/) /*ListNode::prev*/;
758 variable
[5] = variable
[6];
759 /* Register variable[6]: Result */
760 variable
[6] = TAG_Bool(( variable
[5] /*prev*/ == NIT_NULL
/*null*/) || (( variable
[5] /*prev*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[5] /*prev*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[5] /*prev*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[5] /*prev*/)( variable
[5] /*prev*/, NIT_NULL
/*null*/) /*Object::==*/)))));
761 if (UNTAG_Bool(variable
[6])) { /*if*/
762 ATTR_list___List____head(variable
[0]) /*List::_head*/ = variable
[4] /*nnode*/;
764 CALL_list___ListNode___next__eq( variable
[5] /*prev*/)( variable
[5] /*prev*/, variable
[4] /*nnode*/) /*ListNode::next=*/;
766 CALL_list___ListNode___prev__eq( variable
[4] /*nnode*/)( variable
[4] /*nnode*/, variable
[5] /*prev*/) /*ListNode::prev=*/;
767 CALL_list___ListNode___next__eq( variable
[4] /*nnode*/)( variable
[4] /*nnode*/, variable
[2] /*node*/) /*ListNode::next=*/;
768 CALL_list___ListNode___prev__eq( variable
[2] /*node*/)( variable
[2] /*node*/, variable
[4] /*nnode*/) /*ListNode::prev=*/;
769 return_label31
: while(false);
770 tracehead
= trace
.prev
;
773 val_t
list___ListIterator___item(val_t self
) {
774 struct trace_t trace
= {NULL
, NULL
, 246, LOCATE_list___ListIterator___item
};
776 struct WBT_
**closurevariable
= NULL
;
777 trace
.prev
= tracehead
; tracehead
= &trace
;
778 trace
.file
= LOCATE_list
;
779 /* Register variable[0]: Local variable */
781 /* Register variable[1]: Method return value and escape marker */
782 /* Register variable[2]: Result */
783 variable
[2] = ATTR_list___ListIterator____node(variable
[0]) /*ListIterator::_node*/;
784 /* Register variable[2]: Result */
785 variable
[2] = CALL_abstract_collection___Container___item(variable
[2])(variable
[2]) /*Container::item*/;
786 variable
[1] = variable
[2];
788 return_label32
: while(false);
789 tracehead
= trace
.prev
;
792 void list___ListIterator___next(val_t self
) {
793 struct trace_t trace
= {NULL
, NULL
, 252, LOCATE_list___ListIterator___next
};
795 struct WBT_
**closurevariable
= NULL
;
796 trace
.prev
= tracehead
; tracehead
= &trace
;
797 trace
.file
= LOCATE_list
;
798 /* Register variable[0]: Local variable */
800 /* Register variable[1]: Method return value and escape marker */
801 /* Register variable[2]: Result */
802 variable
[2] = ATTR_list___ListIterator____node(variable
[0]) /*ListIterator::_node*/;
803 /* Register variable[2]: Result */
804 variable
[2] = CALL_list___ListNode___next(variable
[2])(variable
[2]) /*ListNode::next*/;
805 ATTR_list___ListIterator____node(variable
[0]) /*ListIterator::_node*/ = variable
[2];
806 ATTR_list___ListIterator____index(variable
[0]) /*ListIterator::_index*/ = TAG_Int(UNTAG_Int(ATTR_list___ListIterator____index(variable
[0]) /*ListIterator::_index*/)+UNTAG_Int( TAG_Int(1)));
807 return_label33
: while(false);
808 tracehead
= trace
.prev
;
811 val_t
list___ListIterator___is_ok(val_t self
) {
812 struct trace_t trace
= {NULL
, NULL
, 250, LOCATE_list___ListIterator___is_ok
};
814 struct WBT_
**closurevariable
= NULL
;
815 trace
.prev
= tracehead
; tracehead
= &trace
;
816 trace
.file
= LOCATE_list
;
817 /* Register variable[0]: Local variable */
819 /* Register variable[1]: Method return value and escape marker */
820 /* Register variable[2]: Result */
821 variable
[2] = ATTR_list___ListIterator____node(variable
[0]) /*ListIterator::_node*/;
822 /* Register variable[2]: Result */
823 variable
[2] = TAG_Bool((variable
[2] == NIT_NULL
/*null*/) || ((variable
[2] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[2])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[2], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[2])(variable
[2], NIT_NULL
/*null*/) /*Object::==*/)))));
824 variable
[1] = TAG_Bool(!UNTAG_Bool(variable
[2]));
826 return_label34
: while(false);
827 tracehead
= trace
.prev
;
830 val_t
list___ListIterator___index(val_t self
) {
831 struct trace_t trace
= {NULL
, NULL
, 268, LOCATE_list___ListIterator___index
};
832 val_t
*variable
= NULL
;
833 struct WBT_
**closurevariable
= NULL
;
834 trace
.prev
= tracehead
; tracehead
= &trace
;
835 trace
.file
= LOCATE_list
;
836 tracehead
= trace
.prev
;
837 return ATTR_list___ListIterator____index( self
) /*ListIterator::_index*/;
839 void list___ListIterator___init(val_t self
, val_t param0
, int* init_table
) {
840 struct trace_t trace
= {NULL
, NULL
, 258, LOCATE_list___ListIterator___init
};
842 struct WBT_
**closurevariable
= NULL
;
843 trace
.prev
= tracehead
; tracehead
= &trace
;
844 trace
.file
= LOCATE_list
;
845 /* Register variable[0]: Local variable */
847 /* Register variable[1]: Local variable */
848 variable
[1] = param0
;
849 if (init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ListIterator
].i
]) return;
850 /* Register variable[2]: Method return value and escape marker */
851 ATTR_list___ListIterator____node(variable
[0]) /*ListIterator::_node*/ = variable
[1] /*node*/;
852 ATTR_list___ListIterator____index(variable
[0]) /*ListIterator::_index*/ = TAG_Int(0);
853 return_label35
: while(false);
854 init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ListIterator
].i
] = 1;
855 tracehead
= trace
.prev
;
858 void list___ListNode___init(val_t self
, val_t param0
, int* init_table
) {
859 struct trace_t trace
= {NULL
, NULL
, 275, LOCATE_list___ListNode___init
};
861 struct WBT_
**closurevariable
= NULL
;
862 trace
.prev
= tracehead
; tracehead
= &trace
;
863 trace
.file
= LOCATE_list
;
864 /* Register variable[0]: Local variable */
866 /* Register variable[1]: Local variable */
867 variable
[1] = param0
;
868 if (init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ListNode
].i
]) return;
869 /* Register variable[2]: Method return value and escape marker */
870 CALL_abstract_collection___Container___init(variable
[0])(variable
[0], variable
[1], init_table
/*YYY*/) /*Container::init*/;
871 CALL_abstract_collection___Container___item__eq(variable
[0])(variable
[0], variable
[1] /*i*/) /*Container::item=*/;
872 return_label36
: while(false);
873 init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ListNode
].i
] = 1;
874 tracehead
= trace
.prev
;
877 val_t
list___ListNode___next(val_t self
) {
878 struct trace_t trace
= {NULL
, NULL
, 280, LOCATE_list___ListNode___next
};
879 val_t
*variable
= NULL
;
880 struct WBT_
**closurevariable
= NULL
;
881 trace
.prev
= tracehead
; tracehead
= &trace
;
882 trace
.file
= LOCATE_list
;
883 tracehead
= trace
.prev
;
884 return ATTR_list___ListNode____next( self
) /*ListNode::_next*/;
886 void list___ListNode___next__eq(val_t self
, val_t param0
) {
887 struct trace_t trace
= {NULL
, NULL
, 280, LOCATE_list___ListNode___next__eq
};
888 val_t
*variable
= NULL
;
889 struct WBT_
**closurevariable
= NULL
;
890 trace
.prev
= tracehead
; tracehead
= &trace
;
891 trace
.file
= LOCATE_list
;
892 ATTR_list___ListNode____next( self
) /*ListNode::_next*/ = param0
;
893 tracehead
= trace
.prev
;
896 val_t
list___ListNode___prev(val_t self
) {
897 struct trace_t trace
= {NULL
, NULL
, 283, LOCATE_list___ListNode___prev
};
898 val_t
*variable
= NULL
;
899 struct WBT_
**closurevariable
= NULL
;
900 trace
.prev
= tracehead
; tracehead
= &trace
;
901 trace
.file
= LOCATE_list
;
902 tracehead
= trace
.prev
;
903 return ATTR_list___ListNode____prev( self
) /*ListNode::_prev*/;
905 void list___ListNode___prev__eq(val_t self
, val_t param0
) {
906 struct trace_t trace
= {NULL
, NULL
, 283, LOCATE_list___ListNode___prev__eq
};
907 val_t
*variable
= NULL
;
908 struct WBT_
**closurevariable
= NULL
;
909 trace
.prev
= tracehead
; tracehead
= &trace
;
910 trace
.file
= LOCATE_list
;
911 ATTR_list___ListNode____prev( self
) /*ListNode::_prev*/ = param0
;
912 tracehead
= trace
.prev
;