1 /* This C file is generated by NIT to compile module icode___icode_builder. */
2 #include "icode___icode_builder._sep.h"
3 static const char LOCATE_icode___icode_builder___ICodeBuilder___stmt
[] = "icode_builder::ICodeBuilder::stmt";
4 void icode___icode_builder___ICodeBuilder___stmt(val_t p0
, val_t p1
){
5 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
8 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
9 fra
.me
.file
= LOCATE_icode___icode_builder
;
11 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___stmt
;
14 fra
.me
.nitni_local_ref_head
= NULL
;
15 fra
.me
.REG
[0] = NIT_NULL
;
16 fra
.me
.REG
[1] = NIT_NULL
;
17 fra
.me
.REG
[2] = NIT_NULL
;
20 /* icode/icode_builder.nit:28 */
21 fra
.me
.REG
[2] = ATTR_icode___icode_builder___ICodeBuilder____current_location(fra
.me
.REG
[0]);
22 CALL_icode___icode_base___ICode___location__eq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
23 /* icode/icode_builder.nit:29 */
24 REGB0
= TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____seq(fra
.me
.REG
[0])!=NIT_NULL
);
25 if (UNTAG_Bool(REGB0
)) {
27 nit_abort("Uninitialized attribute %s", "_seq", LOCATE_icode___icode_builder
, 29);
29 fra
.me
.REG
[0] = ATTR_icode___icode_builder___ICodeBuilder____seq(fra
.me
.REG
[0]);
30 fra
.me
.REG
[0] = CALL_icode___icode_base___ISeq___icodes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
31 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
32 stack_frame_head
= fra
.me
.prev
;
35 static const char LOCATE_icode___icode_builder___ICodeBuilder___expr
[] = "icode_builder::ICodeBuilder::expr";
36 val_t
icode___icode_builder___ICodeBuilder___expr(val_t p0
, val_t p1
, val_t p2
){
37 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
41 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
42 fra
.me
.file
= LOCATE_icode___icode_builder
;
44 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___expr
;
47 fra
.me
.nitni_local_ref_head
= NULL
;
48 fra
.me
.REG
[0] = NIT_NULL
;
49 fra
.me
.REG
[1] = NIT_NULL
;
50 fra
.me
.REG
[2] = NIT_NULL
;
51 fra
.me
.REG
[3] = NIT_NULL
;
55 /* icode/icode_builder.nit:35 */
56 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
57 /* icode/icode_builder.nit:36 */
58 fra
.me
.REG
[3] = CALL_icode___icode_base___ICode___result(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
59 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
60 if (UNTAG_Bool(REGB0
)) {
62 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
63 if (UNTAG_Bool(REGB1
)) {
67 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
71 if (UNTAG_Bool(REGB0
)) {
73 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_builder
, 36);
75 /* icode/icode_builder.nit:37 */
76 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
77 /* icode/icode_builder.nit:38 */
78 CALL_icode___icode_base___ICode___result__eq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
79 /* icode/icode_builder.nit:39 */
82 stack_frame_head
= fra
.me
.prev
;
85 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_assignment
[] = "icode_builder::ICodeBuilder::add_assignment";
86 void icode___icode_builder___ICodeBuilder___add_assignment(val_t p0
, val_t p1
, val_t p2
){
87 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
89 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
90 fra
.me
.file
= LOCATE_icode___icode_builder
;
92 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_assignment
;
95 fra
.me
.nitni_local_ref_head
= NULL
;
96 fra
.me
.REG
[0] = NIT_NULL
;
97 fra
.me
.REG
[1] = NIT_NULL
;
98 fra
.me
.REG
[2] = NIT_NULL
;
102 /* icode/icode_builder.nit:45 */
103 fra
.me
.REG
[2] = NEW_IMove_icode___icode_base___IMove___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
104 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
105 stack_frame_head
= fra
.me
.prev
;
108 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_null_reciever_check
[] = "icode_builder::ICodeBuilder::add_null_reciever_check";
109 void icode___icode_builder___ICodeBuilder___add_null_reciever_check(val_t p0
, val_t p1
){
110 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
113 static val_t once_value_1
; /* Once value */
114 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
115 fra
.me
.file
= LOCATE_icode___icode_builder
;
117 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_null_reciever_check
;
118 fra
.me
.has_broke
= 0;
120 fra
.me
.nitni_local_ref_head
= NULL
;
121 fra
.me
.REG
[0] = NIT_NULL
;
122 fra
.me
.REG
[1] = NIT_NULL
;
123 fra
.me
.REG
[2] = NIT_NULL
;
124 fra
.me
.REG
[3] = NIT_NULL
;
127 /* icode/icode_builder.nit:51 */
128 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
129 /* icode/icode_builder.nit:52 */
130 fra
.me
.REG
[2] = NEW_IIs_icode___icode_base___IIs___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
131 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
132 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
133 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2], fra
.me
.REG
[1]);
134 /* icode/icode_builder.nit:53 */
135 fra
.me
.REG
[1] = NEW_IIf_icode___icode_base___IIf___init(fra
.me
.REG
[1]);
136 /* icode/icode_builder.nit:54 */
137 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
138 /* icode/icode_builder.nit:55 */
139 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
140 /* icode/icode_builder.nit:56 */
141 fra
.me
.REG
[1] = CALL_icode___icode_base___IIf___then_seq(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
142 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
143 /* icode/icode_builder.nit:57 */
145 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
147 fra
.me
.REG
[3] = BOX_NativeString("Reciever is null");
149 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
150 once_value_1
= fra
.me
.REG
[3];
151 register_static_object(&once_value_1
);
152 } else fra
.me
.REG
[3] = once_value_1
;
153 fra
.me
.REG
[3] = fra
.me
.REG
[3];
154 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
155 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
156 /* icode/icode_builder.nit:58 */
157 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
158 stack_frame_head
= fra
.me
.prev
;
161 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_type_cast
[] = "icode_builder::ICodeBuilder::add_type_cast";
162 void icode___icode_builder___ICodeBuilder___add_type_cast(val_t p0
, val_t p1
, val_t p2
){
163 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
166 static val_t once_value_1
; /* Once value */
167 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
168 fra
.me
.file
= LOCATE_icode___icode_builder
;
170 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_type_cast
;
171 fra
.me
.has_broke
= 0;
173 fra
.me
.nitni_local_ref_head
= NULL
;
174 fra
.me
.REG
[0] = NIT_NULL
;
175 fra
.me
.REG
[1] = NIT_NULL
;
176 fra
.me
.REG
[2] = NIT_NULL
;
177 fra
.me
.REG
[3] = NIT_NULL
;
181 /* icode/icode_builder.nit:64 */
182 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
183 fra
.me
.REG
[3] = CALL_icode___icode_base___IRoutine___params(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
184 fra
.me
.REG
[3] = CALL_standard___collection___abstract_collection___Collection___first(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
185 fra
.me
.REG
[2] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra
.me
.REG
[3], fra
.me
.REG
[1], fra
.me
.REG
[2]);
186 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
187 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
188 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2], fra
.me
.REG
[1]);
189 /* icode/icode_builder.nit:65 */
190 fra
.me
.REG
[1] = NEW_IIf_icode___icode_base___IIf___init(fra
.me
.REG
[1]);
191 /* icode/icode_builder.nit:66 */
192 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
193 /* icode/icode_builder.nit:67 */
194 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
195 /* icode/icode_builder.nit:68 */
196 fra
.me
.REG
[1] = CALL_icode___icode_base___IIf___else_seq(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
197 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
198 /* icode/icode_builder.nit:69 */
200 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
202 fra
.me
.REG
[3] = BOX_NativeString("Cast failed");
204 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
205 once_value_1
= fra
.me
.REG
[3];
206 register_static_object(&once_value_1
);
207 } else fra
.me
.REG
[3] = once_value_1
;
208 fra
.me
.REG
[3] = fra
.me
.REG
[3];
209 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
210 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
211 /* icode/icode_builder.nit:70 */
212 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
213 stack_frame_head
= fra
.me
.prev
;
216 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_attr_check
[] = "icode_builder::ICodeBuilder::add_attr_check";
217 void icode___icode_builder___ICodeBuilder___add_attr_check(val_t p0
, val_t p1
, val_t p2
){
218 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
221 static val_t once_value_1
; /* Once value */
222 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
223 fra
.me
.file
= LOCATE_icode___icode_builder
;
225 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_attr_check
;
226 fra
.me
.has_broke
= 0;
228 fra
.me
.nitni_local_ref_head
= NULL
;
229 fra
.me
.REG
[0] = NIT_NULL
;
230 fra
.me
.REG
[1] = NIT_NULL
;
231 fra
.me
.REG
[2] = NIT_NULL
;
232 fra
.me
.REG
[3] = NIT_NULL
;
233 fra
.me
.REG
[4] = NIT_NULL
;
237 /* icode/icode_builder.nit:76 */
238 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
239 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
240 if (UNTAG_Bool(REGB0
)) {
241 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 76);
243 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
244 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
245 if (UNTAG_Bool(REGB0
)) {
246 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 76);
248 REGB0
= CALL_metamodel___static_type___MMType___is_nullable(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
249 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
250 if (UNTAG_Bool(REGB0
)) {
251 /* icode/icode_builder.nit:77 */
252 fra
.me
.REG
[2] = NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
253 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
254 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
255 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2], fra
.me
.REG
[3]);
256 /* icode/icode_builder.nit:78 */
257 fra
.me
.REG
[3] = NEW_IIf_icode___icode_base___IIf___init(fra
.me
.REG
[3]);
258 /* icode/icode_builder.nit:79 */
259 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
260 /* icode/icode_builder.nit:80 */
261 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
262 /* icode/icode_builder.nit:81 */
263 fra
.me
.REG
[3] = CALL_icode___icode_base___IIf___else_seq(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
264 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
265 /* icode/icode_builder.nit:82 */
267 fra
.me
.REG
[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
269 fra
.me
.REG
[4] = BOX_NativeString("Uninitialized attribute %s");
271 fra
.me
.REG
[4] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[4], REGB0
);
272 once_value_1
= fra
.me
.REG
[4];
273 register_static_object(&once_value_1
);
274 } else fra
.me
.REG
[4] = once_value_1
;
275 fra
.me
.REG
[4] = fra
.me
.REG
[4];
276 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
277 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
278 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
279 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
280 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
281 /* icode/icode_builder.nit:83 */
282 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
284 stack_frame_head
= fra
.me
.prev
;
287 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_attr_read
[] = "icode_builder::ICodeBuilder::add_attr_read";
288 val_t
icode___icode_builder___ICodeBuilder___add_attr_read(val_t p0
, val_t p1
, val_t p2
){
289 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
292 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
293 fra
.me
.file
= LOCATE_icode___icode_builder
;
295 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_attr_read
;
296 fra
.me
.has_broke
= 0;
298 fra
.me
.nitni_local_ref_head
= NULL
;
299 fra
.me
.REG
[0] = NIT_NULL
;
300 fra
.me
.REG
[1] = NIT_NULL
;
301 fra
.me
.REG
[2] = NIT_NULL
;
302 fra
.me
.REG
[3] = NIT_NULL
;
306 /* icode/icode_builder.nit:87 */
307 fra
.me
.REG
[3] = fra
.me
.REG
[0];
308 /* icode/icode_builder.nit:90 */
309 CALL_icode___icode_builder___ICodeBuilder___add_attr_check(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1], fra
.me
.REG
[2]);
310 /* icode/icode_builder.nit:91 */
311 fra
.me
.REG
[2] = NEW_IAttrRead_icode___icode_base___IAttrRead___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
312 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
313 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
314 if (UNTAG_Bool(REGB0
)) {
315 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 91);
317 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
318 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___static_type___MMType
, ID_metamodel___static_type___MMType
)) /*cast MMType*/;
319 if (UNTAG_Bool(REGB0
)) {
321 nit_abort("Cast failed", NULL
, LOCATE_icode___icode_builder
, 91);
323 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2], fra
.me
.REG
[1]);
326 stack_frame_head
= fra
.me
.prev
;
327 return fra
.me
.REG
[1];
329 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_abort
[] = "icode_builder::ICodeBuilder::add_abort";
330 void icode___icode_builder___ICodeBuilder___add_abort(val_t p0
, val_t p1
){
331 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
334 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
335 fra
.me
.file
= LOCATE_icode___icode_builder
;
337 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_abort
;
338 fra
.me
.has_broke
= 0;
340 fra
.me
.nitni_local_ref_head
= NULL
;
341 fra
.me
.REG
[0] = NIT_NULL
;
342 fra
.me
.REG
[1] = NIT_NULL
;
343 fra
.me
.REG
[2] = NIT_NULL
;
346 /* icode/icode_builder.nit:94 */
347 fra
.me
.REG
[2] = fra
.me
.REG
[0];
348 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_standard___collection___array___Array
, ID_standard___collection___array___Array
)) /*cast Array[String]*/;
349 if (UNTAG_Bool(REGB0
)) {
351 nit_abort("Cast failed", NULL
, LOCATE_icode___icode_builder
, 94);
353 /* icode/icode_builder.nit:97 */
354 fra
.me
.REG
[0] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
355 fra
.me
.REG
[0] = NEW_IAbort_icode___icode_base___IAbort___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
356 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[0]);
357 stack_frame_head
= fra
.me
.prev
;
360 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_return_value
[] = "icode_builder::ICodeBuilder::add_return_value";
361 void icode___icode_builder___ICodeBuilder___add_return_value(val_t p0
, val_t p1
){
362 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
365 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
366 fra
.me
.file
= LOCATE_icode___icode_builder
;
368 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_return_value
;
369 fra
.me
.has_broke
= 0;
371 fra
.me
.nitni_local_ref_head
= NULL
;
372 fra
.me
.REG
[0] = NIT_NULL
;
373 fra
.me
.REG
[1] = NIT_NULL
;
374 fra
.me
.REG
[2] = NIT_NULL
;
375 fra
.me
.REG
[3] = NIT_NULL
;
378 /* icode/icode_builder.nit:100 */
379 fra
.me
.REG
[2] = fra
.me
.REG
[0];
380 /* icode/icode_builder.nit:104 */
381 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
382 fra
.me
.REG
[3] = CALL_icode___icode_base___IRoutine___result(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
383 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___IRegister
, ID_icode___icode_base___IRegister
)) /*cast IRegister*/;
384 if (UNTAG_Bool(REGB0
)) {
386 nit_abort("Cast failed", NULL
, LOCATE_icode___icode_builder
, 104);
388 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3], fra
.me
.REG
[1]);
389 stack_frame_head
= fra
.me
.prev
;
392 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_call
[] = "icode_builder::ICodeBuilder::add_call";
393 val_t
icode___icode_builder___ICodeBuilder___add_call(val_t p0
, val_t p1
, val_t p2
, val_t p3
){
394 struct {struct stack_frame_t me
; val_t MORE_REG
[10];} fra
;
399 static val_t once_value_1
; /* Once value */
400 static val_t once_value_2
; /* Once value */
401 static val_t once_value_3
; /* Once value */
402 static val_t once_value_4
; /* Once value */
403 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
404 fra
.me
.file
= LOCATE_icode___icode_builder
;
406 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_call
;
407 fra
.me
.has_broke
= 0;
408 fra
.me
.REG_size
= 11;
409 fra
.me
.nitni_local_ref_head
= NULL
;
410 fra
.me
.REG
[0] = NIT_NULL
;
411 fra
.me
.REG
[1] = NIT_NULL
;
412 fra
.me
.REG
[2] = NIT_NULL
;
413 fra
.me
.REG
[3] = NIT_NULL
;
414 fra
.me
.REG
[4] = NIT_NULL
;
415 fra
.me
.REG
[5] = NIT_NULL
;
416 fra
.me
.REG
[6] = NIT_NULL
;
417 fra
.me
.REG
[7] = NIT_NULL
;
418 fra
.me
.REG
[8] = NIT_NULL
;
419 fra
.me
.REG
[9] = NIT_NULL
;
420 fra
.me
.REG
[10] = NIT_NULL
;
425 /* icode/icode_builder.nit:107 */
426 fra
.me
.REG
[4] = fra
.me
.REG
[0];
427 /* icode/icode_builder.nit:110 */
430 fra
.me
.REG
[5] = BOX_NativeString("==");
432 fra
.me
.REG
[5] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[5], REGB0
);
433 once_value_2
= fra
.me
.REG
[5];
434 register_static_object(&once_value_2
);
435 } else fra
.me
.REG
[5] = once_value_2
;
436 fra
.me
.REG
[5] = fra
.me
.REG
[5];
437 fra
.me
.REG
[5] = CALL_symbol___String___to_symbol(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
438 once_value_1
= fra
.me
.REG
[5];
439 register_static_object(&once_value_1
);
440 } else fra
.me
.REG
[5] = once_value_1
;
441 fra
.me
.REG
[5] = fra
.me
.REG
[5];
442 /* icode/icode_builder.nit:113 */
445 fra
.me
.REG
[6] = BOX_NativeString("!=");
447 fra
.me
.REG
[6] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[6], REGB0
);
448 once_value_4
= fra
.me
.REG
[6];
449 register_static_object(&once_value_4
);
450 } else fra
.me
.REG
[6] = once_value_4
;
451 fra
.me
.REG
[6] = fra
.me
.REG
[6];
452 fra
.me
.REG
[6] = CALL_symbol___String___to_symbol(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
453 once_value_3
= fra
.me
.REG
[6];
454 register_static_object(&once_value_3
);
455 } else fra
.me
.REG
[6] = once_value_3
;
456 fra
.me
.REG
[6] = fra
.me
.REG
[6];
457 /* icode/icode_builder.nit:114 */
458 fra
.me
.REG
[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
459 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[7],fra
.me
.REG
[6]));
460 if (UNTAG_Bool(REGB0
)) {
462 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[7])(fra
.me
.REG
[7], fra
.me
.REG
[6]);
465 if (UNTAG_Bool(REGB0
)) {
466 /* icode/icode_builder.nit:115 */
467 fra
.me
.REG
[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
468 REGB0
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
469 if (UNTAG_Bool(REGB0
)) {
470 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 115);
472 fra
.me
.REG
[6] = CALL_metamodel___static_type___MMSignature___recv(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
473 fra
.me
.REG
[6] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
474 fra
.me
.REG
[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
475 /* icode/icode_builder.nit:116 */
476 fra
.me
.REG
[6] = CALL_icode___icode_builder___ICodeBuilder___add_call(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6], fra
.me
.REG
[2], fra
.me
.REG
[3]);
477 REGB0
= TAG_Bool(fra
.me
.REG
[6]!=NIT_NULL
);
478 if (UNTAG_Bool(REGB0
)) {
480 nit_abort("Cast failed", NULL
, LOCATE_icode___icode_builder
, 116);
482 /* icode/icode_builder.nit:117 */
483 fra
.me
.REG
[6] = NEW_INot_icode___icode_base___INot___init(fra
.me
.REG
[6]);
484 fra
.me
.REG
[0] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
485 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
486 fra
.me
.REG
[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6], fra
.me
.REG
[0]);
489 /* icode/icode_builder.nit:122 */
490 fra
.me
.REG
[6] = NEW_ICall_icode___icode_base___ICall___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
491 /* icode/icode_builder.nit:123 */
492 CALL_icode___icode_base___ICodeN___closure_defs__eq(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[3]);
493 /* icode/icode_builder.nit:124 */
494 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
495 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[3],fra
.me
.REG
[5]));
496 if (UNTAG_Bool(REGB0
)) {
498 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[5]);
501 if (UNTAG_Bool(REGB0
)) {
502 /* icode/icode_builder.nit:126 */
503 fra
.me
.REG
[5] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
504 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
505 fra
.me
.REG
[5] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
506 /* icode/icode_builder.nit:128 */
508 /* ../lib/standard/collection/array.nit:278 */
509 fra
.me
.REG
[3] = fra
.me
.REG
[2];
510 /* ../lib/standard/collection/array.nit:280 */
512 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
513 if (UNTAG_Bool(REGB2
)) {
515 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
517 /* ../lib/standard/kernel.nit:236 */
518 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)>=UNTAG_Int(REGB1
));
519 /* ../lib/standard/collection/array.nit:280 */
520 if (UNTAG_Bool(REGB1
)) {
521 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[3])!=NIT_NULL
);
522 if (UNTAG_Bool(REGB1
)) {
524 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 280);
526 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[3]);
527 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
528 if (UNTAG_Bool(REGB2
)) {
530 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
532 /* ../lib/standard/kernel.nit:235 */
533 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
535 /* ../lib/standard/collection/array.nit:280 */
539 if (UNTAG_Bool(REGB1
)) {
541 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array
, 280);
543 /* ../lib/standard/collection/array.nit:281 */
544 fra
.me
.REG
[3] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[3]);
545 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
546 if (UNTAG_Bool(REGB1
)) {
547 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 281);
549 /* ../lib/standard/collection/array.nit:724 */
550 fra
.me
.REG
[3] = ((Nit_NativeArray
)fra
.me
.REG
[3])->val
[UNTAG_Int(REGB0
)];
551 /* ../lib/standard/collection/array.nit:281 */
554 /* icode/icode_builder.nit:128 */
556 /* ../lib/standard/collection/array.nit:278 */
557 fra
.me
.REG
[7] = fra
.me
.REG
[2];
558 /* ../lib/standard/collection/array.nit:280 */
560 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
561 if (UNTAG_Bool(REGB2
)) {
563 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
565 /* ../lib/standard/kernel.nit:236 */
566 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)>=UNTAG_Int(REGB1
));
567 /* ../lib/standard/collection/array.nit:280 */
568 if (UNTAG_Bool(REGB1
)) {
569 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[7])!=NIT_NULL
);
570 if (UNTAG_Bool(REGB1
)) {
572 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 280);
574 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[7]);
575 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
576 if (UNTAG_Bool(REGB2
)) {
578 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
580 /* ../lib/standard/kernel.nit:235 */
581 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
583 /* ../lib/standard/collection/array.nit:280 */
587 if (UNTAG_Bool(REGB1
)) {
589 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array
, 280);
591 /* ../lib/standard/collection/array.nit:281 */
592 fra
.me
.REG
[7] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[7]);
593 REGB1
= TAG_Bool(fra
.me
.REG
[7]==NIT_NULL
);
594 if (UNTAG_Bool(REGB1
)) {
595 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 281);
597 /* ../lib/standard/collection/array.nit:724 */
598 fra
.me
.REG
[7] = ((Nit_NativeArray
)fra
.me
.REG
[7])->val
[UNTAG_Int(REGB0
)];
599 /* ../lib/standard/collection/array.nit:281 */
602 /* icode/icode_builder.nit:128 */
603 fra
.me
.REG
[7] = NEW_IIs_icode___icode_base___IIs___init(fra
.me
.REG
[3], fra
.me
.REG
[7]);
604 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
605 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
606 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[7], fra
.me
.REG
[3]);
607 /* icode/icode_builder.nit:129 */
608 fra
.me
.REG
[7] = NEW_IIf_icode___icode_base___IIf___init(fra
.me
.REG
[3]);
609 /* icode/icode_builder.nit:130 */
610 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[7]);
611 /* icode/icode_builder.nit:131 */
612 fra
.me
.REG
[8] = CALL_icode___icode_builder___ICodeBuilder___seq(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
613 /* icode/icode_builder.nit:132 */
614 fra
.me
.REG
[9] = CALL_icode___icode_base___IIf___then_seq(fra
.me
.REG
[7])(fra
.me
.REG
[7]);
615 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[9]);
616 /* icode/icode_builder.nit:133 */
617 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[3]);
618 /* icode/icode_builder.nit:135 */
619 fra
.me
.REG
[9] = CALL_icode___icode_base___IIf___else_seq(fra
.me
.REG
[7])(fra
.me
.REG
[7]);
620 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[9]);
621 /* icode/icode_builder.nit:137 */
623 /* ../lib/standard/collection/array.nit:278 */
624 fra
.me
.REG
[9] = fra
.me
.REG
[2];
625 /* ../lib/standard/collection/array.nit:280 */
627 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
628 if (UNTAG_Bool(REGB2
)) {
630 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
632 /* ../lib/standard/kernel.nit:236 */
633 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)>=UNTAG_Int(REGB1
));
634 /* ../lib/standard/collection/array.nit:280 */
635 if (UNTAG_Bool(REGB1
)) {
636 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[9])!=NIT_NULL
);
637 if (UNTAG_Bool(REGB1
)) {
639 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 280);
641 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[9]);
642 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
643 if (UNTAG_Bool(REGB2
)) {
645 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
647 /* ../lib/standard/kernel.nit:235 */
648 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
650 /* ../lib/standard/collection/array.nit:280 */
654 if (UNTAG_Bool(REGB1
)) {
656 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array
, 280);
658 /* ../lib/standard/collection/array.nit:281 */
659 fra
.me
.REG
[9] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[9]);
660 REGB1
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
661 if (UNTAG_Bool(REGB1
)) {
662 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 281);
664 /* ../lib/standard/collection/array.nit:724 */
665 fra
.me
.REG
[9] = ((Nit_NativeArray
)fra
.me
.REG
[9])->val
[UNTAG_Int(REGB0
)];
666 /* ../lib/standard/collection/array.nit:281 */
669 /* icode/icode_builder.nit:137 */
670 REGB0
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
671 if (UNTAG_Bool(REGB0
)) {
672 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 137);
674 fra
.me
.REG
[9] = CALL_icode___icode_base___IRegister___stype(fra
.me
.REG
[9])(fra
.me
.REG
[9]);
675 REGB0
= CALL_metamodel___static_type___MMType___is_nullable(fra
.me
.REG
[9])(fra
.me
.REG
[9]);
676 if (UNTAG_Bool(REGB0
)) {
677 /* icode/icode_builder.nit:138 */
678 fra
.me
.REG
[9] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
679 /* icode/icode_builder.nit:139 */
681 /* ../lib/standard/collection/array.nit:278 */
682 fra
.me
.REG
[10] = fra
.me
.REG
[2];
683 /* ../lib/standard/collection/array.nit:280 */
685 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
686 if (UNTAG_Bool(REGB2
)) {
688 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
690 /* ../lib/standard/kernel.nit:236 */
691 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)>=UNTAG_Int(REGB1
));
692 /* ../lib/standard/collection/array.nit:280 */
693 if (UNTAG_Bool(REGB1
)) {
694 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[10])!=NIT_NULL
);
695 if (UNTAG_Bool(REGB1
)) {
697 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 280);
699 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[10]);
700 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
701 if (UNTAG_Bool(REGB2
)) {
703 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
705 /* ../lib/standard/kernel.nit:235 */
706 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
708 /* ../lib/standard/collection/array.nit:280 */
712 if (UNTAG_Bool(REGB1
)) {
714 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array
, 280);
716 /* ../lib/standard/collection/array.nit:281 */
717 fra
.me
.REG
[10] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[10]);
718 REGB1
= TAG_Bool(fra
.me
.REG
[10]==NIT_NULL
);
719 if (UNTAG_Bool(REGB1
)) {
720 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 281);
722 /* ../lib/standard/collection/array.nit:724 */
723 fra
.me
.REG
[10] = ((Nit_NativeArray
)fra
.me
.REG
[10])->val
[UNTAG_Int(REGB0
)];
724 /* ../lib/standard/collection/array.nit:281 */
727 /* icode/icode_builder.nit:139 */
728 fra
.me
.REG
[9] = NEW_IIs_icode___icode_base___IIs___init(fra
.me
.REG
[10], fra
.me
.REG
[9]);
729 fra
.me
.REG
[10] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
730 fra
.me
.REG
[10] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[10])(fra
.me
.REG
[10]);
731 fra
.me
.REG
[10] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[9], fra
.me
.REG
[10]);
732 fra
.me
.REG
[3] = fra
.me
.REG
[10];
733 /* icode/icode_builder.nit:140 */
734 fra
.me
.REG
[3] = NEW_IIf_icode___icode_base___IIf___init(fra
.me
.REG
[3]);
735 fra
.me
.REG
[7] = fra
.me
.REG
[3];
736 /* icode/icode_builder.nit:141 */
737 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[7]);
738 /* icode/icode_builder.nit:142 */
739 fra
.me
.REG
[3] = CALL_icode___icode_base___IIf___then_seq(fra
.me
.REG
[7])(fra
.me
.REG
[7]);
740 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[3]);
741 /* icode/icode_builder.nit:143 */
742 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
743 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[3]);
744 /* icode/icode_builder.nit:144 */
745 fra
.me
.REG
[7] = CALL_icode___icode_base___IIf___else_seq(fra
.me
.REG
[7])(fra
.me
.REG
[7]);
746 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[7]);
748 /* icode/icode_builder.nit:147 */
749 fra
.me
.REG
[7] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
750 fra
.me
.REG
[7] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[7])(fra
.me
.REG
[7]);
751 fra
.me
.REG
[7] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6], fra
.me
.REG
[7]);
752 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[7]);
753 /* icode/icode_builder.nit:148 */
754 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[8]);
755 /* icode/icode_builder.nit:149 */
756 fra
.me
.REG
[0] = fra
.me
.REG
[5];
759 /* icode/icode_builder.nit:152 */
760 fra
.me
.REG
[5] = CALL_standard___collection___abstract_collection___Collection___first(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
761 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
762 if (UNTAG_Bool(REGB0
)) {
763 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 152);
765 fra
.me
.REG
[5] = CALL_icode___icode_base___IRegister___stype(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
766 REGB0
= CALL_metamodel___static_type___MMType___is_nullable(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
767 if (UNTAG_Bool(REGB0
)) {
768 fra
.me
.REG
[2] = CALL_standard___collection___abstract_collection___Collection___first(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
769 CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[2]);
771 /* icode/icode_builder.nit:153 */
772 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
773 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
774 if (UNTAG_Bool(REGB0
)) {
775 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 153);
777 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
778 /* icode/icode_builder.nit:154 */
779 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
780 if (UNTAG_Bool(REGB0
)) {
782 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
783 if (UNTAG_Bool(REGB1
)) {
787 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
791 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
792 if (UNTAG_Bool(REGB0
)) {
793 /* icode/icode_builder.nit:155 */
794 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6], fra
.me
.REG
[1]);
795 fra
.me
.REG
[0] = fra
.me
.REG
[1];
798 /* icode/icode_builder.nit:157 */
799 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6]);
800 /* icode/icode_builder.nit:158 */
801 fra
.me
.REG
[0] = NIT_NULL
;
805 stack_frame_head
= fra
.me
.prev
;
806 return fra
.me
.REG
[0];
808 static const char LOCATE_icode___icode_builder___ICodeBuilder___add_escape
[] = "icode_builder::ICodeBuilder::add_escape";
809 void icode___icode_builder___ICodeBuilder___add_escape(val_t p0
, val_t p1
){
810 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
814 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
815 fra
.me
.file
= LOCATE_icode___icode_builder
;
817 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___add_escape
;
818 fra
.me
.has_broke
= 0;
820 fra
.me
.nitni_local_ref_head
= NULL
;
821 fra
.me
.REG
[0] = NIT_NULL
;
822 fra
.me
.REG
[1] = NIT_NULL
;
823 fra
.me
.REG
[2] = NIT_NULL
;
824 fra
.me
.REG
[3] = NIT_NULL
;
827 /* icode/icode_builder.nit:166 */
828 fra
.me
.REG
[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
829 /* icode/icode_builder.nit:167 */
830 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
831 if (UNTAG_Bool(REGB0
)) {
833 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
834 if (UNTAG_Bool(REGB1
)) {
838 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
842 if (UNTAG_Bool(REGB0
)) {
843 /* icode/icode_builder.nit:168 */
844 fra
.me
.REG
[3] = NEW_IEscapeMark_icode___icode_base___IEscapeMark___init();
845 fra
.me
.REG
[2] = fra
.me
.REG
[3];
846 /* icode/icode_builder.nit:169 */
847 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
848 fra
.me
.REG
[3] = CALL_icode___icode_base___IRoutine___escape_marks(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
849 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
850 /* icode/icode_builder.nit:170 */
851 CALL_icode___icode_base___ISeq___iescape_mark__eq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
853 /* icode/icode_builder.nit:172 */
854 fra
.me
.REG
[2] = NEW_IEscape_icode___icode_base___IEscape___init(fra
.me
.REG
[2]);
855 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
856 stack_frame_head
= fra
.me
.prev
;
859 static const char LOCATE_icode___icode_builder___ICodeBuilder___lit_null_reg
[] = "icode_builder::ICodeBuilder::lit_null_reg";
860 val_t
icode___icode_builder___ICodeBuilder___lit_null_reg(val_t p0
){
861 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
863 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
864 fra
.me
.file
= LOCATE_icode___icode_builder
;
866 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___lit_null_reg
;
867 fra
.me
.has_broke
= 0;
869 fra
.me
.nitni_local_ref_head
= NULL
;
870 fra
.me
.REG
[0] = NIT_NULL
;
871 fra
.me
.REG
[1] = NIT_NULL
;
873 /* icode/icode_builder.nit:178 */
874 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
875 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMModule___type_none(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
876 fra
.me
.REG
[1] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
879 stack_frame_head
= fra
.me
.prev
;
880 return fra
.me
.REG
[1];
882 static const char LOCATE_icode___icode_builder___ICodeBuilder___lit_true_reg
[] = "icode_builder::ICodeBuilder::lit_true_reg";
883 val_t
icode___icode_builder___ICodeBuilder___lit_true_reg(val_t p0
){
884 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
887 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
888 fra
.me
.file
= LOCATE_icode___icode_builder
;
890 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___lit_true_reg
;
891 fra
.me
.has_broke
= 0;
893 fra
.me
.nitni_local_ref_head
= NULL
;
894 fra
.me
.REG
[0] = NIT_NULL
;
895 fra
.me
.REG
[1] = NIT_NULL
;
896 fra
.me
.REG
[2] = NIT_NULL
;
898 /* icode/icode_builder.nit:184 */
900 fra
.me
.REG
[1] = NEW_IBoolValue_icode___icode_base___IBoolValue___init(REGB0
);
901 /* icode/icode_builder.nit:185 */
902 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
903 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
904 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
907 stack_frame_head
= fra
.me
.prev
;
908 return fra
.me
.REG
[2];
910 static const char LOCATE_icode___icode_builder___ICodeBuilder___lit_false_reg
[] = "icode_builder::ICodeBuilder::lit_false_reg";
911 val_t
icode___icode_builder___ICodeBuilder___lit_false_reg(val_t p0
){
912 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
915 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
916 fra
.me
.file
= LOCATE_icode___icode_builder
;
918 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___lit_false_reg
;
919 fra
.me
.has_broke
= 0;
921 fra
.me
.nitni_local_ref_head
= NULL
;
922 fra
.me
.REG
[0] = NIT_NULL
;
923 fra
.me
.REG
[1] = NIT_NULL
;
924 fra
.me
.REG
[2] = NIT_NULL
;
926 /* icode/icode_builder.nit:191 */
928 fra
.me
.REG
[1] = NEW_IBoolValue_icode___icode_base___IBoolValue___init(REGB0
);
929 /* icode/icode_builder.nit:192 */
930 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
931 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMModule___type_bool(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
932 fra
.me
.REG
[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
935 stack_frame_head
= fra
.me
.prev
;
936 return fra
.me
.REG
[2];
938 static const char LOCATE_icode___icode_builder___ICodeBuilder___new_register
[] = "icode_builder::ICodeBuilder::new_register";
939 val_t
icode___icode_builder___ICodeBuilder___new_register(val_t p0
, val_t p1
){
940 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
942 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
943 fra
.me
.file
= LOCATE_icode___icode_builder
;
945 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___new_register
;
946 fra
.me
.has_broke
= 0;
948 fra
.me
.nitni_local_ref_head
= NULL
;
949 fra
.me
.REG
[0] = NIT_NULL
;
950 fra
.me
.REG
[1] = NIT_NULL
;
953 /* icode/icode_builder.nit:198 */
954 fra
.me
.REG
[1] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[1]);
955 /* icode/icode_builder.nit:199 */
956 fra
.me
.REG
[0] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
957 fra
.me
.REG
[0] = CALL_icode___icode_base___IRoutine___registers(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
958 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
959 /* icode/icode_builder.nit:200 */
962 stack_frame_head
= fra
.me
.prev
;
963 return fra
.me
.REG
[1];
965 static const char LOCATE_icode___icode_builder___ICodeBuilder___mmmodule
[] = "icode_builder::ICodeBuilder::mmmodule";
966 val_t
icode___icode_builder___ICodeBuilder___mmmodule(val_t p0
){
967 struct {struct stack_frame_t me
;} fra
;
970 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
971 fra
.me
.file
= LOCATE_icode___icode_builder
;
973 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___mmmodule
;
974 fra
.me
.has_broke
= 0;
976 fra
.me
.nitni_local_ref_head
= NULL
;
977 fra
.me
.REG
[0] = NIT_NULL
;
979 /* icode/icode_builder.nit:203 */
980 REGB0
= TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____mmmodule(fra
.me
.REG
[0])!=NIT_NULL
);
981 if (UNTAG_Bool(REGB0
)) {
983 nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_icode___icode_builder
, 203);
985 fra
.me
.REG
[0] = ATTR_icode___icode_builder___ICodeBuilder____mmmodule(fra
.me
.REG
[0]);
986 stack_frame_head
= fra
.me
.prev
;
987 return fra
.me
.REG
[0];
989 static const char LOCATE_icode___icode_builder___ICodeBuilder___iroutine
[] = "icode_builder::ICodeBuilder::iroutine";
990 val_t
icode___icode_builder___ICodeBuilder___iroutine(val_t p0
){
991 struct {struct stack_frame_t me
;} fra
;
994 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
995 fra
.me
.file
= LOCATE_icode___icode_builder
;
997 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___iroutine
;
998 fra
.me
.has_broke
= 0;
1000 fra
.me
.nitni_local_ref_head
= NULL
;
1001 fra
.me
.REG
[0] = NIT_NULL
;
1003 /* icode/icode_builder.nit:206 */
1004 REGB0
= TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____iroutine(fra
.me
.REG
[0])!=NIT_NULL
);
1005 if (UNTAG_Bool(REGB0
)) {
1007 nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_icode___icode_builder
, 206);
1009 fra
.me
.REG
[0] = ATTR_icode___icode_builder___ICodeBuilder____iroutine(fra
.me
.REG
[0]);
1010 stack_frame_head
= fra
.me
.prev
;
1011 return fra
.me
.REG
[0];
1013 static const char LOCATE_icode___icode_builder___ICodeBuilder___seq
[] = "icode_builder::ICodeBuilder::seq";
1014 val_t
icode___icode_builder___ICodeBuilder___seq(val_t p0
){
1015 struct {struct stack_frame_t me
;} fra
;
1018 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1019 fra
.me
.file
= LOCATE_icode___icode_builder
;
1021 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___seq
;
1022 fra
.me
.has_broke
= 0;
1023 fra
.me
.REG_size
= 1;
1024 fra
.me
.nitni_local_ref_head
= NULL
;
1025 fra
.me
.REG
[0] = NIT_NULL
;
1027 /* icode/icode_builder.nit:209 */
1028 REGB0
= TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____seq(fra
.me
.REG
[0])!=NIT_NULL
);
1029 if (UNTAG_Bool(REGB0
)) {
1031 nit_abort("Uninitialized attribute %s", "_seq", LOCATE_icode___icode_builder
, 209);
1033 fra
.me
.REG
[0] = ATTR_icode___icode_builder___ICodeBuilder____seq(fra
.me
.REG
[0]);
1034 stack_frame_head
= fra
.me
.prev
;
1035 return fra
.me
.REG
[0];
1037 static const char LOCATE_icode___icode_builder___ICodeBuilder___seq__eq
[] = "icode_builder::ICodeBuilder::seq=";
1038 void icode___icode_builder___ICodeBuilder___seq__eq(val_t p0
, val_t p1
){
1039 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1041 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1042 fra
.me
.file
= LOCATE_icode___icode_builder
;
1044 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___seq__eq
;
1045 fra
.me
.has_broke
= 0;
1046 fra
.me
.REG_size
= 2;
1047 fra
.me
.nitni_local_ref_head
= NULL
;
1048 fra
.me
.REG
[0] = NIT_NULL
;
1049 fra
.me
.REG
[1] = NIT_NULL
;
1052 /* icode/icode_builder.nit:209 */
1053 ATTR_icode___icode_builder___ICodeBuilder____seq(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1054 stack_frame_head
= fra
.me
.prev
;
1057 static const char LOCATE_icode___icode_builder___ICodeBuilder___init
[] = "icode_builder::ICodeBuilder::init";
1058 void icode___icode_builder___ICodeBuilder___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
1059 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_icode___icode_builder___ICodeBuilder
].i
;
1060 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1062 if (init_table
[itpos0
]) return;
1063 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1064 fra
.me
.file
= LOCATE_icode___icode_builder
;
1066 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___init
;
1067 fra
.me
.has_broke
= 0;
1068 fra
.me
.REG_size
= 3;
1069 fra
.me
.nitni_local_ref_head
= NULL
;
1070 fra
.me
.REG
[0] = NIT_NULL
;
1071 fra
.me
.REG
[1] = NIT_NULL
;
1072 fra
.me
.REG
[2] = NIT_NULL
;
1076 /* icode/icode_builder.nit:214 */
1077 ATTR_icode___icode_builder___ICodeBuilder____mmmodule(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1078 /* icode/icode_builder.nit:215 */
1079 fra
.me
.REG
[1] = CALL_icode___icode_base___IRoutine___location(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1080 ATTR_icode___icode_builder___ICodeBuilder____current_location(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1081 /* icode/icode_builder.nit:216 */
1082 ATTR_icode___icode_builder___ICodeBuilder____iroutine(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
1083 /* icode/icode_builder.nit:217 */
1084 fra
.me
.REG
[2] = CALL_icode___icode_base___IRoutine___body(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1085 ATTR_icode___icode_builder___ICodeBuilder____seq(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
1086 stack_frame_head
= fra
.me
.prev
;
1087 init_table
[itpos0
] = 1;
1090 static const char LOCATE_icode___icode_builder___ICodeBuilder___current_location
[] = "icode_builder::ICodeBuilder::current_location";
1091 val_t
icode___icode_builder___ICodeBuilder___current_location(val_t p0
){
1092 struct {struct stack_frame_t me
;} fra
;
1094 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1095 fra
.me
.file
= LOCATE_icode___icode_builder
;
1097 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___current_location
;
1098 fra
.me
.has_broke
= 0;
1099 fra
.me
.REG_size
= 1;
1100 fra
.me
.nitni_local_ref_head
= NULL
;
1101 fra
.me
.REG
[0] = NIT_NULL
;
1103 /* icode/icode_builder.nit:220 */
1104 fra
.me
.REG
[0] = ATTR_icode___icode_builder___ICodeBuilder____current_location(fra
.me
.REG
[0]);
1105 stack_frame_head
= fra
.me
.prev
;
1106 return fra
.me
.REG
[0];
1108 static const char LOCATE_icode___icode_builder___ICodeBuilder___current_location__eq
[] = "icode_builder::ICodeBuilder::current_location=";
1109 void icode___icode_builder___ICodeBuilder___current_location__eq(val_t p0
, val_t p1
){
1110 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1112 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1113 fra
.me
.file
= LOCATE_icode___icode_builder
;
1115 fra
.me
.meth
= LOCATE_icode___icode_builder___ICodeBuilder___current_location__eq
;
1116 fra
.me
.has_broke
= 0;
1117 fra
.me
.REG_size
= 2;
1118 fra
.me
.nitni_local_ref_head
= NULL
;
1119 fra
.me
.REG
[0] = NIT_NULL
;
1120 fra
.me
.REG
[1] = NIT_NULL
;
1123 /* icode/icode_builder.nit:220 */
1124 ATTR_icode___icode_builder___ICodeBuilder____current_location(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1125 stack_frame_head
= fra
.me
.prev
;
1128 static const char LOCATE_icode___icode_builder___MMSignature___generate_empty_iroutine
[] = "icode_builder::MMSignature::generate_empty_iroutine";
1129 val_t
icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0
){
1130 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1137 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1138 fra
.me
.file
= LOCATE_icode___icode_builder
;
1140 fra
.me
.meth
= LOCATE_icode___icode_builder___MMSignature___generate_empty_iroutine
;
1141 fra
.me
.has_broke
= 0;
1142 fra
.me
.REG_size
= 7;
1143 fra
.me
.nitni_local_ref_head
= NULL
;
1144 fra
.me
.REG
[0] = NIT_NULL
;
1145 fra
.me
.REG
[1] = NIT_NULL
;
1146 fra
.me
.REG
[2] = NIT_NULL
;
1147 fra
.me
.REG
[3] = NIT_NULL
;
1148 fra
.me
.REG
[4] = NIT_NULL
;
1149 fra
.me
.REG
[5] = NIT_NULL
;
1150 fra
.me
.REG
[6] = NIT_NULL
;
1152 /* icode/icode_builder.nit:228 */
1153 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___init();
1154 /* icode/icode_builder.nit:229 */
1155 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMSignature___recv(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1156 fra
.me
.REG
[2] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[2]);
1157 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
1158 /* icode/icode_builder.nit:230 */
1160 REGB1
= CALL_metamodel___static_type___MMSignature___arity(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1161 /* ../lib/standard/kernel.nit:355 */
1163 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1164 if (UNTAG_Bool(REGB2
)) {
1166 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1168 /* ../lib/standard/kernel.nit:235 */
1169 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1170 /* ../lib/standard/kernel.nit:355 */
1171 if (UNTAG_Bool(REGB2
)) {
1172 /* icode/icode_builder.nit:230 */
1174 /* icode/icode_builder.nit:231 */
1175 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMSignature_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], REGB2
);
1176 fra
.me
.REG
[2] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[2]);
1177 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
1178 /* ../lib/standard/kernel.nit:357 */
1180 /* ../lib/standard/kernel.nit:238 */
1181 REGB2
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB2
));
1182 /* ../lib/standard/kernel.nit:357 */
1185 /* ../lib/standard/kernel.nit:355 */
1190 /* icode/icode_builder.nit:233 */
1191 fra
.me
.REG
[2] = NIT_NULL
;
1192 /* icode/icode_builder.nit:234 */
1193 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1194 /* icode/icode_builder.nit:235 */
1195 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1196 if (UNTAG_Bool(REGB0
)) {
1198 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1199 if (UNTAG_Bool(REGB1
)) {
1200 REGB1
= TAG_Bool(0);
1203 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
1207 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1208 if (UNTAG_Bool(REGB0
)) {
1209 /* icode/icode_builder.nit:236 */
1210 fra
.me
.REG
[3] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[3]);
1211 fra
.me
.REG
[2] = fra
.me
.REG
[3];
1213 /* icode/icode_builder.nit:238 */
1214 fra
.me
.REG
[2] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
1215 /* icode/icode_builder.nit:239 */
1216 fra
.me
.REG
[3] = NIT_NULL
;
1217 /* icode/icode_builder.nit:240 */
1218 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMSignature___closures(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1219 REGB0
= CALL_standard___collection___abstract_collection___Collection___is_empty(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1220 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1221 if (UNTAG_Bool(REGB0
)) {
1222 /* icode/icode_builder.nit:241 */
1223 fra
.me
.REG
[4] = NEW_Array_standard___collection___array___Array___init();
1224 fra
.me
.REG
[3] = fra
.me
.REG
[4];
1225 /* icode/icode_builder.nit:242 */
1226 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMSignature___closures(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1227 /* ../lib/standard/collection/array.nit:269 */
1229 /* ../lib/standard/collection/array.nit:270 */
1230 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[4])!=NIT_NULL
);
1231 if (UNTAG_Bool(REGB1
)) {
1233 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
1235 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[4]);
1236 /* ../lib/standard/collection/array.nit:271 */
1237 fra
.me
.REG
[5] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[4]);
1238 /* ../lib/standard/collection/array.nit:272 */
1240 /* ../lib/standard/collection/array.nit:24 */
1241 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[4])!=NIT_NULL
);
1242 if (UNTAG_Bool(REGB1
)) {
1244 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
1246 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[4]);
1247 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1248 if (UNTAG_Bool(REGB2
)) {
1250 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1252 /* ../lib/standard/kernel.nit:235 */
1253 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1254 /* ../lib/standard/collection/array.nit:272 */
1255 if (UNTAG_Bool(REGB1
)) {
1256 /* ../lib/standard/collection/array.nit:273 */
1257 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
1258 if (UNTAG_Bool(REGB1
)) {
1259 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
1261 /* ../lib/standard/collection/array.nit:724 */
1262 fra
.me
.REG
[6] = ((Nit_NativeArray
)fra
.me
.REG
[5])->val
[UNTAG_Int(REGB0
)];
1263 /* icode/icode_builder.nit:243 */
1264 fra
.me
.REG
[6] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra
.me
.REG
[6]);
1265 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1266 if (UNTAG_Bool(REGB1
)) {
1267 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 243);
1269 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[6]);
1270 /* ../lib/standard/collection/array.nit:274 */
1272 /* ../lib/standard/kernel.nit:238 */
1273 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
1274 /* ../lib/standard/collection/array.nit:274 */
1277 /* ../lib/standard/collection/array.nit:272 */
1282 /* icode/icode_builder.nit:245 */
1283 CALL_icode___icode_base___IRoutine___closure_decls__eq(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1285 /* icode/icode_builder.nit:248 */
1286 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMSignature___recv(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1287 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMType___mmmodule(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1288 fra
.me
.REG
[3] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[3], fra
.me
.REG
[2]);
1289 /* icode/icode_builder.nit:249 */
1291 REGB1
= CALL_metamodel___static_type___MMSignature___arity(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1292 /* ../lib/standard/kernel.nit:355 */
1294 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1295 if (UNTAG_Bool(REGB2
)) {
1297 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1299 /* ../lib/standard/kernel.nit:235 */
1300 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1301 /* ../lib/standard/kernel.nit:355 */
1302 if (UNTAG_Bool(REGB2
)) {
1303 /* icode/icode_builder.nit:249 */
1305 /* icode/icode_builder.nit:250 */
1306 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMSignature_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], REGB2
);
1307 /* icode/icode_builder.nit:251 */
1308 REGB3
= TAG_Bool(VAL_ISA(fra
.me
.REG
[5], COLOR_metamodel___virtualtype___MMVirtualType
, ID_metamodel___virtualtype___MMVirtualType
)) /*cast MMVirtualType*/;
1309 if (UNTAG_Bool(REGB3
)) {
1310 /* icode/icode_builder.nit:252 */
1312 /* ../lib/standard/kernel.nit:238 */
1313 REGB3
= TAG_Int(UNTAG_Int(REGB2
)+UNTAG_Int(REGB3
));
1314 /* ../lib/standard/collection/array.nit:278 */
1315 fra
.me
.REG
[4] = fra
.me
.REG
[1];
1316 /* ../lib/standard/collection/array.nit:280 */
1318 REGB4
= TAG_Bool(VAL_ISA(REGB2
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3
), VTID_standard___kernel___Comparable___OTHER(REGB3
))) /*cast OTHER*/;
1319 if (UNTAG_Bool(REGB4
)) {
1321 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1323 /* ../lib/standard/kernel.nit:236 */
1324 REGB2
= TAG_Bool(UNTAG_Int(REGB3
)>=UNTAG_Int(REGB2
));
1325 /* ../lib/standard/collection/array.nit:280 */
1326 if (UNTAG_Bool(REGB2
)) {
1327 REGB2
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[4])!=NIT_NULL
);
1328 if (UNTAG_Bool(REGB2
)) {
1330 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 280);
1332 REGB2
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[4]);
1333 REGB4
= TAG_Bool(VAL_ISA(REGB2
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3
), VTID_standard___kernel___Comparable___OTHER(REGB3
))) /*cast OTHER*/;
1334 if (UNTAG_Bool(REGB4
)) {
1336 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1338 /* ../lib/standard/kernel.nit:235 */
1339 REGB2
= TAG_Bool(UNTAG_Int(REGB3
)<UNTAG_Int(REGB2
));
1341 /* ../lib/standard/collection/array.nit:280 */
1342 REGB4
= TAG_Bool(0);
1345 if (UNTAG_Bool(REGB2
)) {
1347 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array
, 280);
1349 /* ../lib/standard/collection/array.nit:281 */
1350 fra
.me
.REG
[4] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[4]);
1351 REGB2
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1352 if (UNTAG_Bool(REGB2
)) {
1353 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 281);
1355 /* ../lib/standard/collection/array.nit:724 */
1356 fra
.me
.REG
[4] = ((Nit_NativeArray
)fra
.me
.REG
[4])->val
[UNTAG_Int(REGB3
)];
1357 /* ../lib/standard/collection/array.nit:281 */
1360 /* icode/icode_builder.nit:252 */
1361 CALL_icode___icode_builder___ICodeBuilder___add_type_cast(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4], fra
.me
.REG
[5]);
1363 /* ../lib/standard/kernel.nit:357 */
1365 /* ../lib/standard/kernel.nit:238 */
1366 REGB3
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB3
));
1367 /* ../lib/standard/kernel.nit:357 */
1370 /* ../lib/standard/kernel.nit:355 */
1375 /* icode/icode_builder.nit:255 */
1378 stack_frame_head
= fra
.me
.prev
;
1379 return fra
.me
.REG
[2];
1381 static const char LOCATE_icode___icode_builder___MMSignature___generate_empty_iclosuredef
[] = "icode_builder::MMSignature::generate_empty_iclosuredef";
1382 val_t
icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0
, val_t p1
){
1383 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
1388 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1389 fra
.me
.file
= LOCATE_icode___icode_builder
;
1391 fra
.me
.meth
= LOCATE_icode___icode_builder___MMSignature___generate_empty_iclosuredef
;
1392 fra
.me
.has_broke
= 0;
1393 fra
.me
.REG_size
= 5;
1394 fra
.me
.nitni_local_ref_head
= NULL
;
1395 fra
.me
.REG
[0] = NIT_NULL
;
1396 fra
.me
.REG
[1] = NIT_NULL
;
1397 fra
.me
.REG
[2] = NIT_NULL
;
1398 fra
.me
.REG
[3] = NIT_NULL
;
1399 fra
.me
.REG
[4] = NIT_NULL
;
1402 /* icode/icode_builder.nit:261 */
1403 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___init();
1404 /* icode/icode_builder.nit:262 */
1406 REGB1
= CALL_metamodel___static_type___MMSignature___arity(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1407 /* ../lib/standard/kernel.nit:355 */
1409 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1410 if (UNTAG_Bool(REGB2
)) {
1412 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1414 /* ../lib/standard/kernel.nit:235 */
1415 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1416 /* ../lib/standard/kernel.nit:355 */
1417 if (UNTAG_Bool(REGB2
)) {
1418 /* icode/icode_builder.nit:262 */
1420 /* icode/icode_builder.nit:263 */
1421 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMSignature_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], REGB2
);
1422 fra
.me
.REG
[3] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1423 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1424 /* ../lib/standard/kernel.nit:357 */
1426 /* ../lib/standard/kernel.nit:238 */
1427 REGB2
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB2
));
1428 /* ../lib/standard/kernel.nit:357 */
1431 /* ../lib/standard/kernel.nit:355 */
1436 /* icode/icode_builder.nit:265 */
1437 fra
.me
.REG
[3] = NIT_NULL
;
1438 /* icode/icode_builder.nit:266 */
1439 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1440 /* icode/icode_builder.nit:267 */
1441 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1442 if (UNTAG_Bool(REGB0
)) {
1444 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1445 if (UNTAG_Bool(REGB1
)) {
1446 REGB1
= TAG_Bool(0);
1449 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
1453 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1454 if (UNTAG_Bool(REGB0
)) {
1455 /* icode/icode_builder.nit:268 */
1456 fra
.me
.REG
[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
1457 fra
.me
.REG
[3] = fra
.me
.REG
[4];
1459 /* icode/icode_builder.nit:270 */
1460 fra
.me
.REG
[3] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1461 /* icode/icode_builder.nit:271 */
1462 fra
.me
.REG
[2] = NIT_NULL
;
1463 /* icode/icode_builder.nit:272 */
1464 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMSignature___closures(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1465 REGB0
= CALL_standard___collection___abstract_collection___Collection___is_empty(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1466 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1467 if (UNTAG_Bool(REGB0
)) {
1468 /* icode/icode_builder.nit:273 */
1469 fra
.me
.REG
[4] = NEW_Array_standard___collection___array___Array___init();
1470 fra
.me
.REG
[2] = fra
.me
.REG
[4];
1471 /* icode/icode_builder.nit:274 */
1472 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMSignature___closures(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1473 /* ../lib/standard/collection/array.nit:269 */
1475 /* ../lib/standard/collection/array.nit:270 */
1476 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[0])!=NIT_NULL
);
1477 if (UNTAG_Bool(REGB1
)) {
1479 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
1481 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[0]);
1482 /* ../lib/standard/collection/array.nit:271 */
1483 fra
.me
.REG
[4] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[0]);
1484 /* ../lib/standard/collection/array.nit:272 */
1486 /* ../lib/standard/collection/array.nit:24 */
1487 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[0])!=NIT_NULL
);
1488 if (UNTAG_Bool(REGB1
)) {
1490 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
1492 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[0]);
1493 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1494 if (UNTAG_Bool(REGB2
)) {
1496 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1498 /* ../lib/standard/kernel.nit:235 */
1499 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1500 /* ../lib/standard/collection/array.nit:272 */
1501 if (UNTAG_Bool(REGB1
)) {
1502 /* ../lib/standard/collection/array.nit:273 */
1503 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1504 if (UNTAG_Bool(REGB1
)) {
1505 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
1507 /* ../lib/standard/collection/array.nit:724 */
1508 fra
.me
.REG
[1] = ((Nit_NativeArray
)fra
.me
.REG
[4])->val
[UNTAG_Int(REGB0
)];
1509 /* icode/icode_builder.nit:275 */
1510 fra
.me
.REG
[1] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra
.me
.REG
[1]);
1511 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
1512 if (UNTAG_Bool(REGB1
)) {
1513 nit_abort("Reciever is null", NULL
, LOCATE_icode___icode_builder
, 275);
1515 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
1516 /* ../lib/standard/collection/array.nit:274 */
1518 /* ../lib/standard/kernel.nit:238 */
1519 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
1520 /* ../lib/standard/collection/array.nit:274 */
1523 /* ../lib/standard/collection/array.nit:272 */
1528 /* icode/icode_builder.nit:277 */
1529 CALL_icode___icode_base___IRoutine___closure_decls__eq(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
1531 /* icode/icode_builder.nit:280 */
1534 stack_frame_head
= fra
.me
.prev
;
1535 return fra
.me
.REG
[3];