mm: moves class type detection to class building analysis
[nit.git] / c_src / frontier._sep.c
1 /* This C file is generated by NIT to compile module frontier. */
2 #include "frontier._sep.h"
3 void frontier___MMSrcModule___compile_frontier(val_t p0, val_t p1){
4 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5 val_t REGB0;
6 val_t tmp;
7 static val_t once_value_1; /* Once value */
8 static val_t once_value_2; /* Once value */
9 static val_t once_value_3; /* Once value */
10 static val_t once_value_4; /* Once value */
11 static val_t once_value_5; /* Once value */
12 static val_t once_value_6; /* Once value */
13 static val_t once_value_7; /* Once value */
14 static val_t once_value_8; /* Once value */
15 static val_t once_value_9; /* Once value */
16 static val_t once_value_10; /* Once value */
17 static val_t once_value_11; /* Once value */
18 static val_t once_value_12; /* Once value */
19 static val_t once_value_13; /* Once value */
20 static val_t once_value_14; /* Once value */
21 static val_t once_value_15; /* Once value */
22 static val_t once_value_16; /* Once value */
23 static val_t once_value_17; /* Once value */
24 static val_t once_value_18; /* Once value */
25 static val_t once_value_19; /* Once value */
26 static val_t once_value_20; /* Once value */
27 static val_t once_value_21; /* Once value */
28 static val_t once_value_24; /* Once value */
29 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
30 fra.me.file = LOCATE_frontier;
31 fra.me.line = 26;
32 fra.me.meth = LOCATE_frontier___MMSrcModule___compile_frontier;
33 fra.me.has_broke = 0;
34 fra.me.REG_size = 6;
35 fra.me.REG[0] = NIT_NULL;
36 fra.me.REG[1] = NIT_NULL;
37 fra.me.REG[2] = NIT_NULL;
38 fra.me.REG[3] = NIT_NULL;
39 fra.me.REG[4] = NIT_NULL;
40 fra.me.REG[5] = NIT_NULL;
41 fra.me.REG[0] = p0;
42 fra.me.REG[1] = p1;
43 /* ./native_interface//frontier.nit:30 */
44 fra.me.REG[2] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
45 REGB0 = TAG_Int(3);
46 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
47 if (!once_value_1) {
48 fra.me.REG[4] = BOX_NativeString("#include \"");
49 REGB0 = TAG_Int(10);
50 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
51 once_value_1 = fra.me.REG[4];
52 register_static_object(&once_value_1);
53 } else fra.me.REG[4] = once_value_1;
54 fra.me.REG[4] = fra.me.REG[4];
55 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
56 fra.me.REG[4] = CALL_abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
57 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
58 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
59 if (!once_value_2) {
60 fra.me.REG[4] = BOX_NativeString("._nitni.h\"\n");
61 REGB0 = TAG_Int(11);
62 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
63 once_value_2 = fra.me.REG[4];
64 register_static_object(&once_value_2);
65 } else fra.me.REG[4] = once_value_2;
66 fra.me.REG[4] = fra.me.REG[4];
67 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
68 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
69 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
70 /* ./native_interface//frontier.nit:33 */
71 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
72 if (!once_value_3) {
73 fra.me.REG[2] = BOX_NativeString("#include <nit_common.h>\n");
74 REGB0 = TAG_Int(24);
75 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
76 once_value_3 = fra.me.REG[2];
77 register_static_object(&once_value_3);
78 } else fra.me.REG[2] = once_value_3;
79 fra.me.REG[2] = fra.me.REG[2];
80 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
81 /* ./native_interface//frontier.nit:34 */
82 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
83 REGB0 = TAG_Int(3);
84 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
85 if (!once_value_4) {
86 fra.me.REG[4] = BOX_NativeString("#include \"");
87 REGB0 = TAG_Int(10);
88 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
89 once_value_4 = fra.me.REG[4];
90 register_static_object(&once_value_4);
91 } else fra.me.REG[4] = once_value_4;
92 fra.me.REG[4] = fra.me.REG[4];
93 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
94 fra.me.REG[4] = CALL_abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
95 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
96 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
97 if (!once_value_5) {
98 fra.me.REG[4] = BOX_NativeString("._sep.h\"\n");
99 REGB0 = TAG_Int(9);
100 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
101 once_value_5 = fra.me.REG[4];
102 register_static_object(&once_value_5);
103 } else fra.me.REG[4] = once_value_5;
104 fra.me.REG[4] = fra.me.REG[4];
105 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
106 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
107 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
108 /* ./native_interface//frontier.nit:36 */
109 REGB0 = TAG_Int(3);
110 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
111 if (!once_value_6) {
112 fra.me.REG[2] = BOX_NativeString("");
113 REGB0 = TAG_Int(0);
114 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
115 once_value_6 = fra.me.REG[2];
116 register_static_object(&once_value_6);
117 } else fra.me.REG[2] = once_value_6;
118 fra.me.REG[2] = fra.me.REG[2];
119 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
120 fra.me.REG[2] = CALL_abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
121 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
122 fra.me.REG[2] = CALL_string___AbstractString___to_upper(fra.me.REG[2])(fra.me.REG[2]);
123 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
124 if (!once_value_7) {
125 fra.me.REG[2] = BOX_NativeString("_NITNI_H");
126 REGB0 = TAG_Int(8);
127 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
128 once_value_7 = fra.me.REG[2];
129 register_static_object(&once_value_7);
130 } else fra.me.REG[2] = once_value_7;
131 fra.me.REG[2] = fra.me.REG[2];
132 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
133 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
134 /* ./native_interface//frontier.nit:37 */
135 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
136 REGB0 = TAG_Int(3);
137 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
138 if (!once_value_8) {
139 fra.me.REG[5] = BOX_NativeString("#ifndef ");
140 REGB0 = TAG_Int(8);
141 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
142 once_value_8 = fra.me.REG[5];
143 register_static_object(&once_value_8);
144 } else fra.me.REG[5] = once_value_8;
145 fra.me.REG[5] = fra.me.REG[5];
146 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
147 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
148 if (!once_value_9) {
149 fra.me.REG[5] = BOX_NativeString("\n");
150 REGB0 = TAG_Int(1);
151 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
152 once_value_9 = fra.me.REG[5];
153 register_static_object(&once_value_9);
154 } else fra.me.REG[5] = once_value_9;
155 fra.me.REG[5] = fra.me.REG[5];
156 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
157 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
158 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
159 /* ./native_interface//frontier.nit:38 */
160 fra.me.REG[4] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
161 REGB0 = TAG_Int(3);
162 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
163 if (!once_value_10) {
164 fra.me.REG[5] = BOX_NativeString("#define ");
165 REGB0 = TAG_Int(8);
166 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
167 once_value_10 = fra.me.REG[5];
168 register_static_object(&once_value_10);
169 } else fra.me.REG[5] = once_value_10;
170 fra.me.REG[5] = fra.me.REG[5];
171 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
172 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
173 if (!once_value_11) {
174 fra.me.REG[3] = BOX_NativeString("\n\n");
175 REGB0 = TAG_Int(2);
176 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
177 once_value_11 = fra.me.REG[3];
178 register_static_object(&once_value_11);
179 } else fra.me.REG[3] = once_value_11;
180 fra.me.REG[3] = fra.me.REG[3];
181 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
182 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
183 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
184 /* ./native_interface//frontier.nit:41 */
185 REGB0 = TAG_Int(5);
186 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
187 if (!once_value_12) {
188 fra.me.REG[4] = BOX_NativeString("");
189 REGB0 = TAG_Int(0);
190 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
191 once_value_12 = fra.me.REG[4];
192 register_static_object(&once_value_12);
193 } else fra.me.REG[4] = once_value_12;
194 fra.me.REG[4] = fra.me.REG[4];
195 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
196 fra.me.REG[4] = CALL_abstractmetamodel___MMModule___directory(fra.me.REG[0])(fra.me.REG[0]);
197 fra.me.REG[4] = CALL_abstractmetamodel___MMDirectory___path(fra.me.REG[4])(fra.me.REG[4]);
198 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
199 if (!once_value_13) {
200 fra.me.REG[4] = BOX_NativeString("/");
201 REGB0 = TAG_Int(1);
202 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
203 once_value_13 = fra.me.REG[4];
204 register_static_object(&once_value_13);
205 } else fra.me.REG[4] = once_value_13;
206 fra.me.REG[4] = fra.me.REG[4];
207 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
208 fra.me.REG[4] = CALL_abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
209 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
210 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
211 if (!once_value_14) {
212 fra.me.REG[4] = BOX_NativeString(".nit.h");
213 REGB0 = TAG_Int(6);
214 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
215 once_value_14 = fra.me.REG[4];
216 register_static_object(&once_value_14);
217 } else fra.me.REG[4] = once_value_14;
218 fra.me.REG[4] = fra.me.REG[4];
219 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
220 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
221 /* ./native_interface//frontier.nit:42 */
222 REGB0 = CALL_file___String___file_exists(fra.me.REG[2])(fra.me.REG[2]);
223 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
224 if (UNTAG_Bool(REGB0)) {
225 /* ./native_interface//frontier.nit:43 */
226 REGB0 = TAG_Int(5);
227 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
228 if (!once_value_15) {
229 fra.me.REG[3] = BOX_NativeString("");
230 REGB0 = TAG_Int(0);
231 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
232 once_value_15 = fra.me.REG[3];
233 register_static_object(&once_value_15);
234 } else fra.me.REG[3] = once_value_15;
235 fra.me.REG[3] = fra.me.REG[3];
236 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
237 fra.me.REG[3] = CALL_abstractmetamodel___MMModule___directory(fra.me.REG[0])(fra.me.REG[0]);
238 fra.me.REG[3] = CALL_abstractmetamodel___MMDirectory___path(fra.me.REG[3])(fra.me.REG[3]);
239 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
240 if (!once_value_16) {
241 fra.me.REG[3] = BOX_NativeString("/");
242 REGB0 = TAG_Int(1);
243 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
244 once_value_16 = fra.me.REG[3];
245 register_static_object(&once_value_16);
246 } else fra.me.REG[3] = once_value_16;
247 fra.me.REG[3] = fra.me.REG[3];
248 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
249 fra.me.REG[3] = CALL_abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
250 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
251 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
252 if (!once_value_17) {
253 fra.me.REG[3] = BOX_NativeString("_nit.h");
254 REGB0 = TAG_Int(6);
255 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
256 once_value_17 = fra.me.REG[3];
257 register_static_object(&once_value_17);
258 } else fra.me.REG[3] = once_value_17;
259 fra.me.REG[3] = fra.me.REG[3];
260 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
261 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
262 fra.me.REG[2] = fra.me.REG[4];
263 }
264 /* ./native_interface//frontier.nit:45 */
265 REGB0 = CALL_file___String___file_exists(fra.me.REG[2])(fra.me.REG[2]);
266 if (UNTAG_Bool(REGB0)) {
267 /* ./native_interface//frontier.nit:46 */
268 fra.me.REG[4] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
269 REGB0 = TAG_Int(3);
270 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
271 if (!once_value_18) {
272 fra.me.REG[5] = BOX_NativeString("#include \"");
273 REGB0 = TAG_Int(10);
274 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
275 once_value_18 = fra.me.REG[5];
276 register_static_object(&once_value_18);
277 } else fra.me.REG[5] = once_value_18;
278 fra.me.REG[5] = fra.me.REG[5];
279 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
280 fra.me.REG[5] = CALL_frontier___String___path_from_parent(fra.me.REG[2])(fra.me.REG[2]);
281 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
282 if (!once_value_19) {
283 fra.me.REG[5] = BOX_NativeString("\"\n");
284 REGB0 = TAG_Int(2);
285 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
286 once_value_19 = fra.me.REG[5];
287 register_static_object(&once_value_19);
288 } else fra.me.REG[5] = once_value_19;
289 fra.me.REG[5] = fra.me.REG[5];
290 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
291 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
292 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
293 /* ./native_interface//frontier.nit:47 */
294 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
295 REGB0 = TAG_Int(3);
296 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
297 if (!once_value_20) {
298 fra.me.REG[5] = BOX_NativeString("#include \"");
299 REGB0 = TAG_Int(10);
300 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
301 once_value_20 = fra.me.REG[5];
302 register_static_object(&once_value_20);
303 } else fra.me.REG[5] = once_value_20;
304 fra.me.REG[5] = fra.me.REG[5];
305 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
306 fra.me.REG[2] = CALL_frontier___String___path_from_parent(fra.me.REG[2])(fra.me.REG[2]);
307 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
308 if (!once_value_21) {
309 fra.me.REG[2] = BOX_NativeString("\"\n");
310 REGB0 = TAG_Int(2);
311 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
312 once_value_21 = fra.me.REG[2];
313 register_static_object(&once_value_21);
314 } else fra.me.REG[2] = once_value_21;
315 fra.me.REG[2] = fra.me.REG[2];
316 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
317 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
318 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
319 }
320 /* ./native_interface//frontier.nit:50 */
321 fra.me.REG[4] = CALL_abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
322 CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_frontier___MMSrcModule___compile_frontier_22));
323 /* ./native_interface//frontier.nit:69 */
324 fra.me.REG[1] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
325 if (!once_value_24) {
326 fra.me.REG[0] = BOX_NativeString("#endif\n");
327 REGB0 = TAG_Int(7);
328 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
329 once_value_24 = fra.me.REG[0];
330 register_static_object(&once_value_24);
331 } else fra.me.REG[0] = once_value_24;
332 fra.me.REG[0] = fra.me.REG[0];
333 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
334 stack_frame_head = fra.me.prev;
335 return;
336 }
337 void OC_frontier___MMSrcModule___compile_frontier_22(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
338 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
339 val_t REGB0;
340 val_t REGB1;
341 fun_t CREG[1];
342 val_t tmp;
343 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
344 fra.me.file = LOCATE_frontier;
345 fra.me.line = 0;
346 fra.me.meth = LOCATE_frontier___MMSrcModule___compile_frontier;
347 fra.me.has_broke = 0;
348 fra.me.REG_size = 2;
349 fra.me.REG[0] = NIT_NULL;
350 fra.me.REG[1] = NIT_NULL;
351 fra.me.closure_ctx = closctx_param;
352 fra.me.closure_funs = CREG;
353 fra.me.REG[0] = p0;
354 CREG[0] = clos_fun0;
355 /* ./native_interface//frontier.nit:52 */
356 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
357 CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], closctx, ((fun_t)OC_frontier___MMSrcModule___compile_frontier_23));
358 /* ./native_interface//frontier.nit:63 */
359 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
360 fra.me.REG[1] = CALL_abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
361 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
362 if (UNTAG_Bool(REGB0)) {
363 } else {
364 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
365 REGB0 = REGB1;
366 }
367 if (UNTAG_Bool(REGB0)) {
368 /* ./native_interface//frontier.nit:64 */
369 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
370 REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
371 } else {
372 /* ./native_interface//frontier.nit:63 */
373 REGB1 = TAG_Bool(false);
374 REGB0 = REGB1;
375 }
376 if (UNTAG_Bool(REGB0)) {
377 /* ./native_interface//frontier.nit:65 */
378 CALL_frontier___MMLocalClass___compile_defaut_extern_type(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
379 }
380 stack_frame_head = fra.me.prev;
381 return;
382 }
383 void OC_frontier___MMSrcModule___compile_frontier_23(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
384 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
385 val_t REGB0;
386 val_t REGB1;
387 fun_t CREG[1];
388 val_t tmp;
389 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
390 fra.me.file = LOCATE_frontier;
391 fra.me.line = 0;
392 fra.me.meth = LOCATE_frontier___MMSrcModule___compile_frontier;
393 fra.me.has_broke = 0;
394 fra.me.REG_size = 2;
395 fra.me.REG[0] = NIT_NULL;
396 fra.me.REG[1] = NIT_NULL;
397 fra.me.closure_ctx = closctx_param;
398 fra.me.closure_funs = CREG;
399 fra.me.REG[0] = p0;
400 CREG[0] = clos_fun0;
401 /* ./native_interface//frontier.nit:55 */
402 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
403 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[0]));
404 if (UNTAG_Bool(REGB0)) {
405 } else {
406 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[0]);
407 REGB0 = REGB1;
408 }
409 if (UNTAG_Bool(REGB0)) {
410 /* ./native_interface//frontier.nit:56 */
411 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
412 } else {
413 /* ./native_interface//frontier.nit:55 */
414 REGB1 = TAG_Bool(false);
415 REGB0 = REGB1;
416 }
417 if (UNTAG_Bool(REGB0)) {
418 /* ./native_interface//frontier.nit:56 */
419 REGB0 = CALL_abstractmetamodel___MMMethod___is_extern(fra.me.REG[0])(fra.me.REG[0]);
420 } else {
421 /* ./native_interface//frontier.nit:55 */
422 REGB1 = TAG_Bool(false);
423 REGB0 = REGB1;
424 }
425 if (UNTAG_Bool(REGB0)) {
426 /* ./native_interface//frontier.nit:57 */
427 CALL_frontier___MMSrcMethod___compile_extern_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
428 }
429 stack_frame_head = fra.me.prev;
430 return;
431 }
432 void frontier___MMSrcMethod___compile_extern_to_frontier(val_t p0, val_t p1){
433 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
434 val_t REGB0;
435 val_t REGB1;
436 val_t tmp;
437 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
438 fra.me.file = LOCATE_frontier;
439 fra.me.line = 74;
440 fra.me.meth = LOCATE_frontier___MMSrcMethod___compile_extern_to_frontier;
441 fra.me.has_broke = 0;
442 fra.me.REG_size = 3;
443 fra.me.REG[0] = NIT_NULL;
444 fra.me.REG[1] = NIT_NULL;
445 fra.me.REG[2] = NIT_NULL;
446 fra.me.REG[0] = p0;
447 fra.me.REG[1] = p1;
448 /* ./native_interface//frontier.nit:77 */
449 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
450 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
451 if (UNTAG_Bool(REGB0)) {
452 } else {
453 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
454 if (UNTAG_Bool(REGB1)) {
455 REGB1 = TAG_Bool(false);
456 REGB0 = REGB1;
457 } else {
458 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
459 REGB0 = REGB1;
460 }
461 }
462 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
463 if (UNTAG_Bool(REGB0)) {
464 /* ./native_interface//frontier.nit:78 */
465 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
466 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
467 if (UNTAG_Bool(REGB0)) {
468 nit_abort("Reciever is null", NULL, LOCATE_frontier, 78);
469 }
470 CALL_frontier___MMSignature___compile_frontier(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
471 }
472 /* ./native_interface//frontier.nit:81 */
473 fra.me.REG[2] = CALL_abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[0])(fra.me.REG[0]);
474 CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_frontier___MMSrcMethod___compile_extern_to_frontier_1));
475 /* ./native_interface//frontier.nit:90 */
476 fra.me.REG[2] = CALL_static_type___MMMethod___explicit_casts(fra.me.REG[0])(fra.me.REG[0]);
477 CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_frontier___MMSrcMethod___compile_extern_to_frontier_2));
478 /* ./native_interface//frontier.nit:98 */
479 REGB0 = CALL_abstractmetamodel___MMLocalProperty___need_super(fra.me.REG[0])(fra.me.REG[0]);
480 if (UNTAG_Bool(REGB0)) {
481 /* ./native_interface//frontier.nit:99 */
482 CALL_frontier___MMSrcMethod___compile_super_to_frontier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
483 }
484 /* ./native_interface//frontier.nit:103 */
485 CALL_frontier___MMSrcMethod___compile_out_to_frontier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
486 stack_frame_head = fra.me.prev;
487 return;
488 }
489 void OC_frontier___MMSrcMethod___compile_extern_to_frontier_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
490 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
491 fun_t CREG[1];
492 val_t tmp;
493 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
494 fra.me.file = LOCATE_frontier;
495 fra.me.line = 0;
496 fra.me.meth = LOCATE_frontier___MMSrcMethod___compile_extern_to_frontier;
497 fra.me.has_broke = 0;
498 fra.me.REG_size = 2;
499 fra.me.REG[0] = NIT_NULL;
500 fra.me.REG[1] = NIT_NULL;
501 fra.me.closure_ctx = closctx_param;
502 fra.me.closure_funs = CREG;
503 fra.me.REG[0] = p0;
504 CREG[0] = clos_fun0;
505 /* ./native_interface//frontier.nit:83 */
506 fra.me.REG[1] = CALL_frontier___FrontierVisitor___friendlys(closctx->REG[1])(closctx->REG[1]);
507 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
508 /* ./native_interface//frontier.nit:86 */
509 fra.me.REG[0] = CALL_static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
510 CALL_frontier___MMSignature___compile_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
511 stack_frame_head = fra.me.prev;
512 return;
513 }
514 void OC_frontier___MMSrcMethod___compile_extern_to_frontier_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
515 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
516 fun_t CREG[1];
517 val_t tmp;
518 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
519 fra.me.file = LOCATE_frontier;
520 fra.me.line = 0;
521 fra.me.meth = LOCATE_frontier___MMSrcMethod___compile_extern_to_frontier;
522 fra.me.has_broke = 0;
523 fra.me.REG_size = 3;
524 fra.me.REG[0] = NIT_NULL;
525 fra.me.REG[1] = NIT_NULL;
526 fra.me.REG[2] = NIT_NULL;
527 fra.me.closure_ctx = closctx_param;
528 fra.me.closure_funs = CREG;
529 fra.me.REG[0] = p0;
530 CREG[0] = clos_fun0;
531 /* ./native_interface//frontier.nit:91 */
532 fra.me.REG[1] = CALL_frontier___FrontierVisitor___casts(closctx->REG[1])(closctx->REG[1]);
533 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
534 /* ./native_interface//frontier.nit:93 */
535 fra.me.REG[1] = CALL_frontier___FrontierVisitor___types(closctx->REG[1])(closctx->REG[1]);
536 fra.me.REG[2] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
537 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
538 /* ./native_interface//frontier.nit:94 */
539 fra.me.REG[2] = CALL_frontier___FrontierVisitor___types(closctx->REG[1])(closctx->REG[1]);
540 fra.me.REG[0] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
541 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
542 stack_frame_head = fra.me.prev;
543 return;
544 }
545 void frontier___MMSrcMethod___compile_super_to_frontier(val_t p0, val_t p1){
546 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
547 val_t REGB0;
548 val_t REGB1;
549 val_t tmp;
550 static val_t once_value_1; /* Once value */
551 static val_t once_value_2; /* Once value */
552 static val_t once_value_3; /* Once value */
553 static val_t once_value_4; /* Once value */
554 static val_t once_value_5; /* Once value */
555 static val_t once_value_6; /* Once value */
556 static val_t once_value_7; /* Once value */
557 static val_t once_value_8; /* Once value */
558 static val_t once_value_9; /* Once value */
559 static val_t once_value_10; /* Once value */
560 static val_t once_value_11; /* Once value */
561 static val_t once_value_12; /* Once value */
562 static val_t once_value_13; /* Once value */
563 static val_t once_value_14; /* Once value */
564 static val_t once_value_15; /* Once value */
565 static val_t once_value_16; /* Once value */
566 static val_t once_value_17; /* Once value */
567 static val_t once_value_18; /* Once value */
568 static val_t once_value_19; /* Once value */
569 static val_t once_value_20; /* Once value */
570 static val_t once_value_21; /* Once value */
571 static val_t once_value_22; /* Once value */
572 static val_t once_value_23; /* Once value */
573 static val_t once_value_24; /* Once value */
574 static val_t once_value_26; /* Once value */
575 static val_t once_value_27; /* Once value */
576 static val_t once_value_28; /* Once value */
577 static val_t once_value_29; /* Once value */
578 static val_t once_value_30; /* Once value */
579 static val_t once_value_31; /* Once value */
580 static val_t once_value_32; /* Once value */
581 static val_t once_value_33; /* Once value */
582 static val_t once_value_34; /* Once value */
583 static val_t once_value_35; /* Once value */
584 static val_t once_value_36; /* Once value */
585 static val_t once_value_37; /* Once value */
586 static val_t once_value_38; /* Once value */
587 static val_t once_value_39; /* Once value */
588 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
589 fra.me.file = LOCATE_frontier;
590 fra.me.line = 106;
591 fra.me.meth = LOCATE_frontier___MMSrcMethod___compile_super_to_frontier;
592 fra.me.has_broke = 0;
593 fra.me.REG_size = 11;
594 fra.me.REG[0] = NIT_NULL;
595 fra.me.REG[1] = NIT_NULL;
596 fra.me.REG[2] = NIT_NULL;
597 fra.me.REG[3] = NIT_NULL;
598 fra.me.REG[4] = NIT_NULL;
599 fra.me.REG[5] = NIT_NULL;
600 fra.me.REG[6] = NIT_NULL;
601 fra.me.REG[7] = NIT_NULL;
602 fra.me.REG[8] = NIT_NULL;
603 fra.me.REG[9] = NIT_NULL;
604 fra.me.REG[10] = NIT_NULL;
605 fra.me.REG[0] = p0;
606 fra.me.REG[1] = p1;
607 /* ./native_interface//frontier.nit:113 */
608 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
609 REGB0 = TAG_Int(3);
610 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
611 if (!once_value_1) {
612 fra.me.REG[4] = BOX_NativeString("\n/* friendly for super of ");
613 REGB0 = TAG_Int(26);
614 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
615 once_value_1 = fra.me.REG[4];
616 register_static_object(&once_value_1);
617 } else fra.me.REG[4] = once_value_1;
618 fra.me.REG[4] = fra.me.REG[4];
619 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
620 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
621 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
622 if (!once_value_2) {
623 fra.me.REG[4] = BOX_NativeString(" */\n");
624 REGB0 = TAG_Int(4);
625 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
626 once_value_2 = fra.me.REG[4];
627 register_static_object(&once_value_2);
628 } else fra.me.REG[4] = once_value_2;
629 fra.me.REG[4] = fra.me.REG[4];
630 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
631 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
632 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
633 /* ./native_interface//frontier.nit:114 */
634 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
635 REGB0 = TAG_Int(3);
636 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
637 if (!once_value_3) {
638 fra.me.REG[4] = BOX_NativeString("");
639 REGB0 = TAG_Int(0);
640 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
641 once_value_3 = fra.me.REG[4];
642 register_static_object(&once_value_3);
643 } else fra.me.REG[4] = once_value_3;
644 fra.me.REG[4] = fra.me.REG[4];
645 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
646 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
647 fra.me.REG[4] = CALL_ni_metamodel___MMMethod___frontier_super_csignature_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
648 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
649 if (!once_value_4) {
650 fra.me.REG[4] = BOX_NativeString(";\n");
651 REGB0 = TAG_Int(2);
652 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
653 once_value_4 = fra.me.REG[4];
654 register_static_object(&once_value_4);
655 } else fra.me.REG[4] = once_value_4;
656 fra.me.REG[4] = fra.me.REG[4];
657 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
658 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
659 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
660 /* ./native_interface//frontier.nit:117 */
661 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
662 REGB0 = TAG_Int(3);
663 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
664 if (!once_value_5) {
665 fra.me.REG[4] = BOX_NativeString("#ifndef ");
666 REGB0 = TAG_Int(8);
667 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
668 once_value_5 = fra.me.REG[4];
669 register_static_object(&once_value_5);
670 } else fra.me.REG[4] = once_value_5;
671 fra.me.REG[4] = fra.me.REG[4];
672 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
673 fra.me.REG[4] = CALL_ni_metamodel___MMMethod___friendly_super_cname(fra.me.REG[0])(fra.me.REG[0]);
674 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
675 if (!once_value_6) {
676 fra.me.REG[4] = BOX_NativeString("\n");
677 REGB0 = TAG_Int(1);
678 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
679 once_value_6 = fra.me.REG[4];
680 register_static_object(&once_value_6);
681 } else fra.me.REG[4] = once_value_6;
682 fra.me.REG[4] = fra.me.REG[4];
683 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
684 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
685 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
686 /* ./native_interface//frontier.nit:118 */
687 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
688 REGB0 = TAG_Int(5);
689 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
690 if (!once_value_7) {
691 fra.me.REG[4] = BOX_NativeString("#define ");
692 REGB0 = TAG_Int(8);
693 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
694 once_value_7 = fra.me.REG[4];
695 register_static_object(&once_value_7);
696 } else fra.me.REG[4] = once_value_7;
697 fra.me.REG[4] = fra.me.REG[4];
698 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
699 fra.me.REG[4] = CALL_ni_metamodel___MMMethod___friendly_super_cname(fra.me.REG[0])(fra.me.REG[0]);
700 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
701 if (!once_value_8) {
702 fra.me.REG[4] = BOX_NativeString(" ");
703 REGB0 = TAG_Int(1);
704 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
705 once_value_8 = fra.me.REG[4];
706 register_static_object(&once_value_8);
707 } else fra.me.REG[4] = once_value_8;
708 fra.me.REG[4] = fra.me.REG[4];
709 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
710 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
711 fra.me.REG[4] = CALL_ni_metamodel___MMMethod___local_friendly_super_name_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
712 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
713 if (!once_value_9) {
714 fra.me.REG[4] = BOX_NativeString("\n");
715 REGB0 = TAG_Int(1);
716 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
717 once_value_9 = fra.me.REG[4];
718 register_static_object(&once_value_9);
719 } else fra.me.REG[4] = once_value_9;
720 fra.me.REG[4] = fra.me.REG[4];
721 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
722 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
723 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
724 /* ./native_interface//frontier.nit:119 */
725 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
726 if (!once_value_10) {
727 fra.me.REG[3] = BOX_NativeString("#endif\n");
728 REGB0 = TAG_Int(7);
729 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
730 once_value_10 = fra.me.REG[3];
731 register_static_object(&once_value_10);
732 } else fra.me.REG[3] = once_value_10;
733 fra.me.REG[3] = fra.me.REG[3];
734 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
735 /* ./native_interface//frontier.nit:122 */
736 fra.me.REG[3] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
737 REGB0 = TAG_Int(3);
738 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
739 if (!once_value_11) {
740 fra.me.REG[4] = BOX_NativeString("\n/* friendly for super of ");
741 REGB0 = TAG_Int(26);
742 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
743 once_value_11 = fra.me.REG[4];
744 register_static_object(&once_value_11);
745 } else fra.me.REG[4] = once_value_11;
746 fra.me.REG[4] = fra.me.REG[4];
747 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
748 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
749 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
750 if (!once_value_12) {
751 fra.me.REG[4] = BOX_NativeString(" */\n");
752 REGB0 = TAG_Int(4);
753 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
754 once_value_12 = fra.me.REG[4];
755 register_static_object(&once_value_12);
756 } else fra.me.REG[4] = once_value_12;
757 fra.me.REG[4] = fra.me.REG[4];
758 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
759 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
760 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
761 /* ./native_interface//frontier.nit:123 */
762 fra.me.REG[2] = CALL_ni_metamodel___MMMethod___friendly_super_csignature(fra.me.REG[0])(fra.me.REG[0]);
763 fra.me.REG[2] = NEW_FunctionCompiler_ni_tools___FunctionCompiler___init(fra.me.REG[2]);
764 /* ./native_interface//frontier.nit:126 */
765 fra.me.REG[3] = NEW_Array_array___Array___init();
766 /* ./native_interface//frontier.nit:129 */
767 if (!once_value_13) {
768 fra.me.REG[4] = BOX_NativeString("recv___nit");
769 REGB0 = TAG_Int(10);
770 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
771 once_value_13 = fra.me.REG[4];
772 register_static_object(&once_value_13);
773 } else fra.me.REG[4] = once_value_13;
774 fra.me.REG[4] = fra.me.REG[4];
775 /* ./native_interface//frontier.nit:130 */
776 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
777 REGB0 = TAG_Int(3);
778 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
779 if (!once_value_14) {
780 fra.me.REG[7] = BOX_NativeString("val_t ");
781 REGB0 = TAG_Int(6);
782 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
783 once_value_14 = fra.me.REG[7];
784 register_static_object(&once_value_14);
785 } else fra.me.REG[7] = once_value_14;
786 fra.me.REG[7] = fra.me.REG[7];
787 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
788 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
789 if (!once_value_15) {
790 fra.me.REG[7] = BOX_NativeString(";\n");
791 REGB0 = TAG_Int(2);
792 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
793 once_value_15 = fra.me.REG[7];
794 register_static_object(&once_value_15);
795 } else fra.me.REG[7] = once_value_15;
796 fra.me.REG[7] = fra.me.REG[7];
797 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
798 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
799 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
800 /* ./native_interface//frontier.nit:131 */
801 fra.me.REG[6] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
802 REGB0 = TAG_Int(3);
803 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
804 if (!once_value_16) {
805 fra.me.REG[7] = BOX_NativeString("");
806 REGB0 = TAG_Int(0);
807 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
808 once_value_16 = fra.me.REG[7];
809 register_static_object(&once_value_16);
810 } else fra.me.REG[7] = once_value_16;
811 fra.me.REG[7] = fra.me.REG[7];
812 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
813 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
814 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
815 if (UNTAG_Bool(REGB0)) {
816 nit_abort("Reciever is null", NULL, LOCATE_frontier, 131);
817 }
818 fra.me.REG[7] = CALL_static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
819 if (!once_value_17) {
820 fra.me.REG[8] = BOX_NativeString("recv");
821 REGB0 = TAG_Int(4);
822 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
823 once_value_17 = fra.me.REG[8];
824 register_static_object(&once_value_17);
825 } else fra.me.REG[8] = once_value_17;
826 fra.me.REG[8] = fra.me.REG[8];
827 fra.me.REG[8] = CALL_ni_metamodel___MMType___assign_from_friendly(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4], fra.me.REG[8]);
828 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
829 if (!once_value_18) {
830 fra.me.REG[8] = BOX_NativeString(";\n");
831 REGB0 = TAG_Int(2);
832 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
833 once_value_18 = fra.me.REG[8];
834 register_static_object(&once_value_18);
835 } else fra.me.REG[8] = once_value_18;
836 fra.me.REG[8] = fra.me.REG[8];
837 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
838 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
839 CALL_compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
840 /* ./native_interface//frontier.nit:132 */
841 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
842 /* ./native_interface//frontier.nit:135 */
843 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
844 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
845 if (UNTAG_Bool(REGB0)) {
846 nit_abort("Reciever is null", NULL, LOCATE_frontier, 135);
847 }
848 fra.me.REG[5] = CALL_static_type___MMSignature___params(fra.me.REG[5])(fra.me.REG[5]);
849 /* ./../lib/standard//collection//array.nit:234 */
850 REGB0 = TAG_Int(0);
851 /* ./../lib/standard//collection//array.nit:235 */
852 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
853 if (UNTAG_Bool(REGB1)) {
854 } else {
855 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
856 }
857 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
858 /* ./../lib/standard//collection//array.nit:236 */
859 fra.me.REG[6] = ATTR_array___Array____items(fra.me.REG[5]);
860 /* ./../lib/standard//collection//array.nit:237 */
861 while(1) {
862 /* ./../lib/standard//collection//array.nit:23 */
863 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
864 if (UNTAG_Bool(REGB1)) {
865 } else {
866 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
867 }
868 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
869 /* ./../lib/standard//kernel.nit:212 */
870 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
871 /* ./../lib/standard//collection//array.nit:237 */
872 if (UNTAG_Bool(REGB1)) {
873 /* ./../lib/standard//collection//array.nit:238 */
874 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
875 if (UNTAG_Bool(REGB1)) {
876 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
877 }
878 /* ./../lib/standard//collection//array.nit:654 */
879 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
880 /* ./native_interface//frontier.nit:136 */
881 REGB1 = TAG_Int(3);
882 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB1);
883 if (!once_value_19) {
884 fra.me.REG[9] = BOX_NativeString("");
885 REGB1 = TAG_Int(0);
886 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB1);
887 once_value_19 = fra.me.REG[9];
888 register_static_object(&once_value_19);
889 } else fra.me.REG[9] = once_value_19;
890 fra.me.REG[9] = fra.me.REG[9];
891 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
892 fra.me.REG[9] = CALL_static_type___MMParam___name(fra.me.REG[8])(fra.me.REG[8]);
893 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
894 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
895 if (!once_value_20) {
896 fra.me.REG[9] = BOX_NativeString("___nit");
897 REGB1 = TAG_Int(6);
898 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB1);
899 once_value_20 = fra.me.REG[9];
900 register_static_object(&once_value_20);
901 } else fra.me.REG[9] = once_value_20;
902 fra.me.REG[9] = fra.me.REG[9];
903 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
904 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
905 fra.me.REG[4] = fra.me.REG[7];
906 /* ./native_interface//frontier.nit:137 */
907 fra.me.REG[7] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
908 REGB1 = TAG_Int(3);
909 fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB1);
910 if (!once_value_21) {
911 fra.me.REG[10] = BOX_NativeString("val_t ");
912 REGB1 = TAG_Int(6);
913 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
914 once_value_21 = fra.me.REG[10];
915 register_static_object(&once_value_21);
916 } else fra.me.REG[10] = once_value_21;
917 fra.me.REG[10] = fra.me.REG[10];
918 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
919 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[4]);
920 if (!once_value_22) {
921 fra.me.REG[10] = BOX_NativeString(";\n");
922 REGB1 = TAG_Int(2);
923 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
924 once_value_22 = fra.me.REG[10];
925 register_static_object(&once_value_22);
926 } else fra.me.REG[10] = once_value_22;
927 fra.me.REG[10] = fra.me.REG[10];
928 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
929 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
930 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
931 /* ./native_interface//frontier.nit:138 */
932 fra.me.REG[9] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
933 REGB1 = TAG_Int(3);
934 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB1);
935 if (!once_value_23) {
936 fra.me.REG[10] = BOX_NativeString("");
937 REGB1 = TAG_Int(0);
938 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
939 once_value_23 = fra.me.REG[10];
940 register_static_object(&once_value_23);
941 } else fra.me.REG[10] = once_value_23;
942 fra.me.REG[10] = fra.me.REG[10];
943 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
944 fra.me.REG[10] = CALL_static_type___MMParam___mmtype(fra.me.REG[8])(fra.me.REG[8]);
945 fra.me.REG[8] = CALL_static_type___MMParam___name(fra.me.REG[8])(fra.me.REG[8]);
946 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
947 fra.me.REG[8] = CALL_ni_metamodel___MMType___assign_from_friendly(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4], fra.me.REG[8]);
948 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
949 if (!once_value_24) {
950 fra.me.REG[8] = BOX_NativeString(";\n");
951 REGB1 = TAG_Int(2);
952 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
953 once_value_24 = fra.me.REG[8];
954 register_static_object(&once_value_24);
955 } else fra.me.REG[8] = once_value_24;
956 fra.me.REG[8] = fra.me.REG[8];
957 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
958 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
959 CALL_compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[7]);
960 /* ./native_interface//frontier.nit:139 */
961 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
962 /* ./../lib/standard//collection//array.nit:239 */
963 REGB1 = TAG_Int(1);
964 /* ./../lib/standard//kernel.nit:215 */
965 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
966 /* ./../lib/standard//collection//array.nit:239 */
967 REGB0 = REGB1;
968 } else {
969 /* ./../lib/standard//collection//array.nit:237 */
970 goto label25;
971 }
972 }
973 label25: while(0);
974 /* ./native_interface//frontier.nit:143 */
975 fra.me.REG[4] = NIT_NULL;
976 /* ./native_interface//frontier.nit:145 */
977 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
978 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
979 if (UNTAG_Bool(REGB0)) {
980 nit_abort("Reciever is null", NULL, LOCATE_frontier, 145);
981 }
982 fra.me.REG[6] = CALL_static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
983 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
984 if (UNTAG_Bool(REGB0)) {
985 } else {
986 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
987 if (UNTAG_Bool(REGB1)) {
988 REGB1 = TAG_Bool(false);
989 REGB0 = REGB1;
990 } else {
991 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
992 REGB0 = REGB1;
993 }
994 }
995 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
996 if (UNTAG_Bool(REGB0)) {
997 /* ./native_interface//frontier.nit:146 */
998 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
999 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1000 if (UNTAG_Bool(REGB0)) {
1001 nit_abort("Reciever is null", NULL, LOCATE_frontier, 146);
1002 }
1003 fra.me.REG[6] = CALL_static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
1004 fra.me.REG[4] = fra.me.REG[6];
1005 }
1006 /* ./native_interface//frontier.nit:149 */
1007 fra.me.REG[6] = NEW_Buffer_string___Buffer___init();
1008 /* ./native_interface//frontier.nit:150 */
1009 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1010 if (UNTAG_Bool(REGB0)) {
1011 } else {
1012 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1013 if (UNTAG_Bool(REGB1)) {
1014 REGB1 = TAG_Bool(false);
1015 REGB0 = REGB1;
1016 } else {
1017 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1018 REGB0 = REGB1;
1019 }
1020 }
1021 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1022 if (UNTAG_Bool(REGB0)) {
1023 /* ./native_interface//frontier.nit:151 */
1024 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
1025 REGB0 = TAG_Int(3);
1026 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
1027 if (!once_value_26) {
1028 fra.me.REG[9] = BOX_NativeString("");
1029 REGB0 = TAG_Int(0);
1030 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB0);
1031 once_value_26 = fra.me.REG[9];
1032 register_static_object(&once_value_26);
1033 } else fra.me.REG[9] = once_value_26;
1034 fra.me.REG[9] = fra.me.REG[9];
1035 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
1036 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1037 if (UNTAG_Bool(REGB0)) {
1038 nit_abort("Reciever is null", NULL, LOCATE_frontier, 151);
1039 }
1040 fra.me.REG[9] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[4])(fra.me.REG[4]);
1041 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
1042 if (!once_value_27) {
1043 fra.me.REG[9] = BOX_NativeString(" return___nitni;\n");
1044 REGB0 = TAG_Int(17);
1045 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB0);
1046 once_value_27 = fra.me.REG[9];
1047 register_static_object(&once_value_27);
1048 } else fra.me.REG[9] = once_value_27;
1049 fra.me.REG[9] = fra.me.REG[9];
1050 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
1051 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
1052 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1053 /* ./native_interface//frontier.nit:152 */
1054 fra.me.REG[7] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
1055 if (!once_value_28) {
1056 fra.me.REG[5] = BOX_NativeString("val_t return___nit;\n");
1057 REGB0 = TAG_Int(20);
1058 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
1059 once_value_28 = fra.me.REG[5];
1060 register_static_object(&once_value_28);
1061 } else fra.me.REG[5] = once_value_28;
1062 fra.me.REG[5] = fra.me.REG[5];
1063 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
1064 /* ./native_interface//frontier.nit:153 */
1065 if (!once_value_29) {
1066 fra.me.REG[5] = BOX_NativeString("return___nit = ");
1067 REGB0 = TAG_Int(15);
1068 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
1069 once_value_29 = fra.me.REG[5];
1070 register_static_object(&once_value_29);
1071 } else fra.me.REG[5] = once_value_29;
1072 fra.me.REG[5] = fra.me.REG[5];
1073 CALL_abstract_collection___Sequence___append(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1074 }
1075 /* ./native_interface//frontier.nit:156 */
1076 REGB0 = TAG_Int(3);
1077 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
1078 if (!once_value_30) {
1079 fra.me.REG[7] = BOX_NativeString("");
1080 REGB0 = TAG_Int(0);
1081 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
1082 once_value_30 = fra.me.REG[7];
1083 register_static_object(&once_value_30);
1084 } else fra.me.REG[7] = once_value_30;
1085 fra.me.REG[7] = fra.me.REG[7];
1086 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1087 fra.me.REG[0] = CALL_compiling_base___MMLocalProperty___super_meth_call(fra.me.REG[0])(fra.me.REG[0]);
1088 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1089 if (!once_value_31) {
1090 fra.me.REG[0] = BOX_NativeString("( recv___nit )");
1091 REGB0 = TAG_Int(14);
1092 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1093 once_value_31 = fra.me.REG[0];
1094 register_static_object(&once_value_31);
1095 } else fra.me.REG[0] = once_value_31;
1096 fra.me.REG[0] = fra.me.REG[0];
1097 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1098 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
1099 CALL_abstract_collection___Sequence___append(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1100 /* ./native_interface//frontier.nit:158 */
1101 REGB0 = TAG_Int(3);
1102 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
1103 if (!once_value_32) {
1104 fra.me.REG[0] = BOX_NativeString("( ");
1105 REGB0 = TAG_Int(2);
1106 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1107 once_value_32 = fra.me.REG[0];
1108 register_static_object(&once_value_32);
1109 } else fra.me.REG[0] = once_value_32;
1110 fra.me.REG[0] = fra.me.REG[0];
1111 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1112 if (!once_value_33) {
1113 fra.me.REG[0] = BOX_NativeString(", ");
1114 REGB0 = TAG_Int(2);
1115 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1116 once_value_33 = fra.me.REG[0];
1117 register_static_object(&once_value_33);
1118 } else fra.me.REG[0] = once_value_33;
1119 fra.me.REG[0] = fra.me.REG[0];
1120 fra.me.REG[0] = CALL_string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
1121 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1122 if (!once_value_34) {
1123 fra.me.REG[0] = BOX_NativeString(" );\n");
1124 REGB0 = TAG_Int(4);
1125 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1126 once_value_34 = fra.me.REG[0];
1127 register_static_object(&once_value_34);
1128 } else fra.me.REG[0] = once_value_34;
1129 fra.me.REG[0] = fra.me.REG[0];
1130 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1131 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
1132 CALL_abstract_collection___Sequence___append(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1133 /* ./native_interface//frontier.nit:160 */
1134 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
1135 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1136 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1137 /* ./native_interface//frontier.nit:163 */
1138 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1139 if (UNTAG_Bool(REGB0)) {
1140 } else {
1141 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1142 if (UNTAG_Bool(REGB1)) {
1143 REGB1 = TAG_Bool(false);
1144 REGB0 = REGB1;
1145 } else {
1146 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1147 REGB0 = REGB1;
1148 }
1149 }
1150 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1151 if (UNTAG_Bool(REGB0)) {
1152 /* ./native_interface//frontier.nit:165 */
1153 fra.me.REG[6] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
1154 REGB0 = TAG_Int(3);
1155 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
1156 if (!once_value_35) {
1157 fra.me.REG[0] = BOX_NativeString("");
1158 REGB0 = TAG_Int(0);
1159 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1160 once_value_35 = fra.me.REG[0];
1161 register_static_object(&once_value_35);
1162 } else fra.me.REG[0] = once_value_35;
1163 fra.me.REG[0] = fra.me.REG[0];
1164 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1165 if (!once_value_36) {
1166 fra.me.REG[0] = BOX_NativeString("return___nitni");
1167 REGB0 = TAG_Int(14);
1168 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1169 once_value_36 = fra.me.REG[0];
1170 register_static_object(&once_value_36);
1171 } else fra.me.REG[0] = once_value_36;
1172 fra.me.REG[0] = fra.me.REG[0];
1173 if (!once_value_37) {
1174 fra.me.REG[3] = BOX_NativeString("return___nit");
1175 REGB0 = TAG_Int(12);
1176 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
1177 once_value_37 = fra.me.REG[3];
1178 register_static_object(&once_value_37);
1179 } else fra.me.REG[3] = once_value_37;
1180 fra.me.REG[3] = fra.me.REG[3];
1181 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1182 if (UNTAG_Bool(REGB0)) {
1183 nit_abort("Reciever is null", NULL, LOCATE_frontier, 165);
1184 }
1185 fra.me.REG[3] = CALL_ni_metamodel___MMType___assign_to_friendly(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3]);
1186 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
1187 if (!once_value_38) {
1188 fra.me.REG[3] = BOX_NativeString(";\n");
1189 REGB0 = TAG_Int(2);
1190 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
1191 once_value_38 = fra.me.REG[3];
1192 register_static_object(&once_value_38);
1193 } else fra.me.REG[3] = once_value_38;
1194 fra.me.REG[3] = fra.me.REG[3];
1195 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
1196 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
1197 CALL_compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1198 /* ./native_interface//frontier.nit:166 */
1199 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
1200 if (!once_value_39) {
1201 fra.me.REG[6] = BOX_NativeString("return return___nitni;\n");
1202 REGB0 = TAG_Int(23);
1203 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
1204 once_value_39 = fra.me.REG[6];
1205 register_static_object(&once_value_39);
1206 } else fra.me.REG[6] = once_value_39;
1207 fra.me.REG[6] = fra.me.REG[6];
1208 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1209 }
1210 /* ./native_interface//frontier.nit:169 */
1211 fra.me.REG[1] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
1212 fra.me.REG[2] = CALL_ni_tools___FunctionCompiler___to_writer(fra.me.REG[2])(fra.me.REG[2]);
1213 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1214 stack_frame_head = fra.me.prev;
1215 return;
1216 }
1217 void frontier___MMSrcMethod___compile_out_to_frontier(val_t p0, val_t p1){
1218 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
1219 val_t REGB0;
1220 val_t REGB1;
1221 val_t tmp;
1222 static val_t once_value_1; /* Once value */
1223 static val_t once_value_2; /* Once value */
1224 static val_t once_value_3; /* Once value */
1225 static val_t once_value_4; /* Once value */
1226 static val_t once_value_5; /* Once value */
1227 static val_t once_value_6; /* Once value */
1228 static val_t once_value_7; /* Once value */
1229 static val_t once_value_8; /* Once value */
1230 static val_t once_value_9; /* Once value */
1231 static val_t once_value_10; /* Once value */
1232 static val_t once_value_11; /* Once value */
1233 static val_t once_value_12; /* Once value */
1234 static val_t once_value_13; /* Once value */
1235 static val_t once_value_14; /* Once value */
1236 static val_t once_value_15; /* Once value */
1237 static val_t once_value_16; /* Once value */
1238 static val_t once_value_17; /* Once value */
1239 static val_t once_value_18; /* Once value */
1240 static val_t once_value_19; /* Once value */
1241 static val_t once_value_20; /* Once value */
1242 static val_t once_value_22; /* Once value */
1243 static val_t once_value_23; /* Once value */
1244 static val_t once_value_24; /* Once value */
1245 static val_t once_value_25; /* Once value */
1246 static val_t once_value_26; /* Once value */
1247 static val_t once_value_27; /* Once value */
1248 static val_t once_value_28; /* Once value */
1249 static val_t once_value_29; /* Once value */
1250 static val_t once_value_30; /* Once value */
1251 static val_t once_value_31; /* Once value */
1252 static val_t once_value_32; /* Once value */
1253 static val_t once_value_33; /* Once value */
1254 static val_t once_value_34; /* Once value */
1255 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1256 fra.me.file = LOCATE_frontier;
1257 fra.me.line = 172;
1258 fra.me.meth = LOCATE_frontier___MMSrcMethod___compile_out_to_frontier;
1259 fra.me.has_broke = 0;
1260 fra.me.REG_size = 11;
1261 fra.me.REG[0] = NIT_NULL;
1262 fra.me.REG[1] = NIT_NULL;
1263 fra.me.REG[2] = NIT_NULL;
1264 fra.me.REG[3] = NIT_NULL;
1265 fra.me.REG[4] = NIT_NULL;
1266 fra.me.REG[5] = NIT_NULL;
1267 fra.me.REG[6] = NIT_NULL;
1268 fra.me.REG[7] = NIT_NULL;
1269 fra.me.REG[8] = NIT_NULL;
1270 fra.me.REG[9] = NIT_NULL;
1271 fra.me.REG[10] = NIT_NULL;
1272 fra.me.REG[0] = p0;
1273 fra.me.REG[1] = p1;
1274 /* ./native_interface//frontier.nit:178 */
1275 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1276 REGB0 = TAG_Int(3);
1277 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
1278 if (!once_value_1) {
1279 fra.me.REG[4] = BOX_NativeString("\n/* out/indirect function for ");
1280 REGB0 = TAG_Int(30);
1281 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1282 once_value_1 = fra.me.REG[4];
1283 register_static_object(&once_value_1);
1284 } else fra.me.REG[4] = once_value_1;
1285 fra.me.REG[4] = fra.me.REG[4];
1286 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1287 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
1288 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1289 if (!once_value_2) {
1290 fra.me.REG[4] = BOX_NativeString(" */\n");
1291 REGB0 = TAG_Int(4);
1292 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1293 once_value_2 = fra.me.REG[4];
1294 register_static_object(&once_value_2);
1295 } else fra.me.REG[4] = once_value_2;
1296 fra.me.REG[4] = fra.me.REG[4];
1297 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1298 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1299 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1300 /* ./native_interface//frontier.nit:179 */
1301 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1302 REGB0 = TAG_Int(3);
1303 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
1304 if (!once_value_3) {
1305 fra.me.REG[4] = BOX_NativeString("");
1306 REGB0 = TAG_Int(0);
1307 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1308 once_value_3 = fra.me.REG[4];
1309 register_static_object(&once_value_3);
1310 } else fra.me.REG[4] = once_value_3;
1311 fra.me.REG[4] = fra.me.REG[4];
1312 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1313 fra.me.REG[4] = CALL_ni_metamodel___MMMethod___out_csignature(fra.me.REG[0])(fra.me.REG[0]);
1314 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1315 if (!once_value_4) {
1316 fra.me.REG[4] = BOX_NativeString(";\n");
1317 REGB0 = TAG_Int(2);
1318 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1319 once_value_4 = fra.me.REG[4];
1320 register_static_object(&once_value_4);
1321 } else fra.me.REG[4] = once_value_4;
1322 fra.me.REG[4] = fra.me.REG[4];
1323 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1324 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1325 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1326 /* ./native_interface//frontier.nit:182 */
1327 fra.me.REG[2] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
1328 REGB0 = TAG_Int(3);
1329 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
1330 if (!once_value_5) {
1331 fra.me.REG[4] = BOX_NativeString("/* out/indirect function for ");
1332 REGB0 = TAG_Int(29);
1333 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1334 once_value_5 = fra.me.REG[4];
1335 register_static_object(&once_value_5);
1336 } else fra.me.REG[4] = once_value_5;
1337 fra.me.REG[4] = fra.me.REG[4];
1338 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1339 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
1340 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1341 if (!once_value_6) {
1342 fra.me.REG[4] = BOX_NativeString(" */\n");
1343 REGB0 = TAG_Int(4);
1344 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1345 once_value_6 = fra.me.REG[4];
1346 register_static_object(&once_value_6);
1347 } else fra.me.REG[4] = once_value_6;
1348 fra.me.REG[4] = fra.me.REG[4];
1349 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1350 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1351 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1352 /* ./native_interface//frontier.nit:183 */
1353 fra.me.REG[3] = CALL_ni_metamodel___MMMethod___out_csignature(fra.me.REG[0])(fra.me.REG[0]);
1354 fra.me.REG[3] = NEW_FunctionCompiler_ni_tools___FunctionCompiler___init(fra.me.REG[3]);
1355 /* ./native_interface//frontier.nit:186 */
1356 fra.me.REG[2] = NEW_List_list___List___init();
1357 /* ./native_interface//frontier.nit:188 */
1358 REGB0 = CALL_syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
1359 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1360 if (UNTAG_Bool(REGB0)) {
1361 /* ./native_interface//frontier.nit:189 */
1362 if (!once_value_7) {
1363 fra.me.REG[4] = BOX_NativeString("recv___nitni");
1364 REGB0 = TAG_Int(12);
1365 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1366 once_value_7 = fra.me.REG[4];
1367 register_static_object(&once_value_7);
1368 } else fra.me.REG[4] = once_value_7;
1369 fra.me.REG[4] = fra.me.REG[4];
1370 /* ./native_interface//frontier.nit:190 */
1371 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
1372 REGB0 = TAG_Int(5);
1373 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
1374 if (!once_value_8) {
1375 fra.me.REG[7] = BOX_NativeString("");
1376 REGB0 = TAG_Int(0);
1377 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
1378 once_value_8 = fra.me.REG[7];
1379 register_static_object(&once_value_8);
1380 } else fra.me.REG[7] = once_value_8;
1381 fra.me.REG[7] = fra.me.REG[7];
1382 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1383 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1384 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1385 if (UNTAG_Bool(REGB0)) {
1386 nit_abort("Reciever is null", NULL, LOCATE_frontier, 190);
1387 }
1388 fra.me.REG[7] = CALL_static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
1389 fra.me.REG[7] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[7])(fra.me.REG[7]);
1390 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1391 if (!once_value_9) {
1392 fra.me.REG[7] = BOX_NativeString(" ");
1393 REGB0 = TAG_Int(1);
1394 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
1395 once_value_9 = fra.me.REG[7];
1396 register_static_object(&once_value_9);
1397 } else fra.me.REG[7] = once_value_9;
1398 fra.me.REG[7] = fra.me.REG[7];
1399 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1400 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
1401 if (!once_value_10) {
1402 fra.me.REG[7] = BOX_NativeString(";\n");
1403 REGB0 = TAG_Int(2);
1404 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
1405 once_value_10 = fra.me.REG[7];
1406 register_static_object(&once_value_10);
1407 } else fra.me.REG[7] = once_value_10;
1408 fra.me.REG[7] = fra.me.REG[7];
1409 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1410 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1411 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1412 /* ./native_interface//frontier.nit:191 */
1413 fra.me.REG[6] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
1414 REGB0 = TAG_Int(3);
1415 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
1416 if (!once_value_11) {
1417 fra.me.REG[7] = BOX_NativeString("");
1418 REGB0 = TAG_Int(0);
1419 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
1420 once_value_11 = fra.me.REG[7];
1421 register_static_object(&once_value_11);
1422 } else fra.me.REG[7] = once_value_11;
1423 fra.me.REG[7] = fra.me.REG[7];
1424 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1425 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1426 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1427 if (UNTAG_Bool(REGB0)) {
1428 nit_abort("Reciever is null", NULL, LOCATE_frontier, 191);
1429 }
1430 fra.me.REG[7] = CALL_static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
1431 if (!once_value_12) {
1432 fra.me.REG[8] = BOX_NativeString("recv");
1433 REGB0 = TAG_Int(4);
1434 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
1435 once_value_12 = fra.me.REG[8];
1436 register_static_object(&once_value_12);
1437 } else fra.me.REG[8] = once_value_12;
1438 fra.me.REG[8] = fra.me.REG[8];
1439 fra.me.REG[8] = CALL_ni_metamodel___MMType___assign_to_friendly(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4], fra.me.REG[8]);
1440 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
1441 if (!once_value_13) {
1442 fra.me.REG[8] = BOX_NativeString(";\n");
1443 REGB0 = TAG_Int(2);
1444 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
1445 once_value_13 = fra.me.REG[8];
1446 register_static_object(&once_value_13);
1447 } else fra.me.REG[8] = once_value_13;
1448 fra.me.REG[8] = fra.me.REG[8];
1449 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
1450 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
1451 CALL_compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1452 /* ./native_interface//frontier.nit:192 */
1453 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1454 }
1455 /* ./native_interface//frontier.nit:195 */
1456 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1457 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1458 if (UNTAG_Bool(REGB0)) {
1459 nit_abort("Reciever is null", NULL, LOCATE_frontier, 195);
1460 }
1461 fra.me.REG[4] = CALL_static_type___MMSignature___params(fra.me.REG[4])(fra.me.REG[4]);
1462 /* ./../lib/standard//collection//array.nit:234 */
1463 REGB0 = TAG_Int(0);
1464 /* ./../lib/standard//collection//array.nit:235 */
1465 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1466 if (UNTAG_Bool(REGB1)) {
1467 } else {
1468 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
1469 }
1470 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1471 /* ./../lib/standard//collection//array.nit:236 */
1472 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[4]);
1473 /* ./../lib/standard//collection//array.nit:237 */
1474 while(1) {
1475 /* ./../lib/standard//collection//array.nit:23 */
1476 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1477 if (UNTAG_Bool(REGB1)) {
1478 } else {
1479 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1480 }
1481 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1482 /* ./../lib/standard//kernel.nit:212 */
1483 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1484 /* ./../lib/standard//collection//array.nit:237 */
1485 if (UNTAG_Bool(REGB1)) {
1486 /* ./../lib/standard//collection//array.nit:238 */
1487 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1488 if (UNTAG_Bool(REGB1)) {
1489 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
1490 }
1491 /* ./../lib/standard//collection//array.nit:654 */
1492 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
1493 /* ./native_interface//frontier.nit:196 */
1494 REGB1 = TAG_Int(3);
1495 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB1);
1496 if (!once_value_14) {
1497 fra.me.REG[7] = BOX_NativeString("");
1498 REGB1 = TAG_Int(0);
1499 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB1);
1500 once_value_14 = fra.me.REG[7];
1501 register_static_object(&once_value_14);
1502 } else fra.me.REG[7] = once_value_14;
1503 fra.me.REG[7] = fra.me.REG[7];
1504 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
1505 fra.me.REG[7] = CALL_static_type___MMParam___name(fra.me.REG[6])(fra.me.REG[6]);
1506 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
1507 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
1508 if (!once_value_15) {
1509 fra.me.REG[7] = BOX_NativeString("___nitni");
1510 REGB1 = TAG_Int(8);
1511 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB1);
1512 once_value_15 = fra.me.REG[7];
1513 register_static_object(&once_value_15);
1514 } else fra.me.REG[7] = once_value_15;
1515 fra.me.REG[7] = fra.me.REG[7];
1516 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
1517 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
1518 /* ./native_interface//frontier.nit:197 */
1519 fra.me.REG[7] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
1520 REGB1 = TAG_Int(5);
1521 fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB1);
1522 if (!once_value_16) {
1523 fra.me.REG[10] = BOX_NativeString("");
1524 REGB1 = TAG_Int(0);
1525 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
1526 once_value_16 = fra.me.REG[10];
1527 register_static_object(&once_value_16);
1528 } else fra.me.REG[10] = once_value_16;
1529 fra.me.REG[10] = fra.me.REG[10];
1530 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
1531 fra.me.REG[10] = CALL_static_type___MMParam___mmtype(fra.me.REG[6])(fra.me.REG[6]);
1532 fra.me.REG[10] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[10])(fra.me.REG[10]);
1533 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
1534 if (!once_value_17) {
1535 fra.me.REG[10] = BOX_NativeString(" ");
1536 REGB1 = TAG_Int(1);
1537 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
1538 once_value_17 = fra.me.REG[10];
1539 register_static_object(&once_value_17);
1540 } else fra.me.REG[10] = once_value_17;
1541 fra.me.REG[10] = fra.me.REG[10];
1542 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
1543 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
1544 if (!once_value_18) {
1545 fra.me.REG[10] = BOX_NativeString(";\n");
1546 REGB1 = TAG_Int(2);
1547 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
1548 once_value_18 = fra.me.REG[10];
1549 register_static_object(&once_value_18);
1550 } else fra.me.REG[10] = once_value_18;
1551 fra.me.REG[10] = fra.me.REG[10];
1552 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
1553 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
1554 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
1555 /* ./native_interface//frontier.nit:198 */
1556 fra.me.REG[9] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
1557 REGB1 = TAG_Int(3);
1558 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB1);
1559 if (!once_value_19) {
1560 fra.me.REG[10] = BOX_NativeString("");
1561 REGB1 = TAG_Int(0);
1562 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
1563 once_value_19 = fra.me.REG[10];
1564 register_static_object(&once_value_19);
1565 } else fra.me.REG[10] = once_value_19;
1566 fra.me.REG[10] = fra.me.REG[10];
1567 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
1568 fra.me.REG[10] = CALL_static_type___MMParam___mmtype(fra.me.REG[6])(fra.me.REG[6]);
1569 fra.me.REG[6] = CALL_static_type___MMParam___name(fra.me.REG[6])(fra.me.REG[6]);
1570 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1571 fra.me.REG[6] = CALL_ni_metamodel___MMType___assign_to_friendly(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8], fra.me.REG[6]);
1572 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
1573 if (!once_value_20) {
1574 fra.me.REG[6] = BOX_NativeString(";\n");
1575 REGB1 = TAG_Int(2);
1576 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB1);
1577 once_value_20 = fra.me.REG[6];
1578 register_static_object(&once_value_20);
1579 } else fra.me.REG[6] = once_value_20;
1580 fra.me.REG[6] = fra.me.REG[6];
1581 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
1582 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
1583 CALL_compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[7]);
1584 /* ./native_interface//frontier.nit:199 */
1585 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
1586 /* ./../lib/standard//collection//array.nit:239 */
1587 REGB1 = TAG_Int(1);
1588 /* ./../lib/standard//kernel.nit:215 */
1589 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1590 /* ./../lib/standard//collection//array.nit:239 */
1591 REGB0 = REGB1;
1592 } else {
1593 /* ./../lib/standard//collection//array.nit:237 */
1594 goto label21;
1595 }
1596 }
1597 label21: while(0);
1598 /* ./native_interface//frontier.nit:203 */
1599 fra.me.REG[5] = NIT_NULL;
1600 /* ./native_interface//frontier.nit:205 */
1601 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1602 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1603 if (UNTAG_Bool(REGB0)) {
1604 nit_abort("Reciever is null", NULL, LOCATE_frontier, 205);
1605 }
1606 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
1607 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1608 if (UNTAG_Bool(REGB0)) {
1609 } else {
1610 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1611 if (UNTAG_Bool(REGB1)) {
1612 REGB1 = TAG_Bool(false);
1613 REGB0 = REGB1;
1614 } else {
1615 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1616 REGB0 = REGB1;
1617 }
1618 }
1619 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1620 if (UNTAG_Bool(REGB0)) {
1621 /* ./native_interface//frontier.nit:206 */
1622 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1623 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1624 if (UNTAG_Bool(REGB0)) {
1625 nit_abort("Reciever is null", NULL, LOCATE_frontier, 206);
1626 }
1627 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
1628 fra.me.REG[5] = fra.me.REG[4];
1629 } else {
1630 /* ./native_interface//frontier.nit:207 */
1631 REGB0 = CALL_syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
1632 if (UNTAG_Bool(REGB0)) {
1633 /* ./native_interface//frontier.nit:208 */
1634 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
1635 fra.me.REG[4] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
1636 fra.me.REG[5] = fra.me.REG[4];
1637 }
1638 }
1639 /* ./native_interface//frontier.nit:211 */
1640 fra.me.REG[4] = NEW_Buffer_string___Buffer___init();
1641 /* ./native_interface//frontier.nit:212 */
1642 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1643 if (UNTAG_Bool(REGB0)) {
1644 } else {
1645 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1646 if (UNTAG_Bool(REGB1)) {
1647 REGB1 = TAG_Bool(false);
1648 REGB0 = REGB1;
1649 } else {
1650 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
1651 REGB0 = REGB1;
1652 }
1653 }
1654 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1655 if (UNTAG_Bool(REGB0)) {
1656 /* ./native_interface//frontier.nit:213 */
1657 fra.me.REG[8] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
1658 REGB0 = TAG_Int(3);
1659 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
1660 if (!once_value_22) {
1661 fra.me.REG[9] = BOX_NativeString("");
1662 REGB0 = TAG_Int(0);
1663 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB0);
1664 once_value_22 = fra.me.REG[9];
1665 register_static_object(&once_value_22);
1666 } else fra.me.REG[9] = once_value_22;
1667 fra.me.REG[9] = fra.me.REG[9];
1668 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
1669 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1670 if (UNTAG_Bool(REGB0)) {
1671 nit_abort("Reciever is null", NULL, LOCATE_frontier, 213);
1672 }
1673 fra.me.REG[9] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5]);
1674 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
1675 if (!once_value_23) {
1676 fra.me.REG[9] = BOX_NativeString(" return___nitni;\n");
1677 REGB0 = TAG_Int(17);
1678 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB0);
1679 once_value_23 = fra.me.REG[9];
1680 register_static_object(&once_value_23);
1681 } else fra.me.REG[9] = once_value_23;
1682 fra.me.REG[9] = fra.me.REG[9];
1683 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
1684 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
1685 CALL_compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
1686 /* ./native_interface//frontier.nit:214 */
1687 fra.me.REG[7] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
1688 if (!once_value_24) {
1689 fra.me.REG[8] = BOX_NativeString("val_t return___nit;\n");
1690 REGB0 = TAG_Int(20);
1691 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
1692 once_value_24 = fra.me.REG[8];
1693 register_static_object(&once_value_24);
1694 } else fra.me.REG[8] = once_value_24;
1695 fra.me.REG[8] = fra.me.REG[8];
1696 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
1697 /* ./native_interface//frontier.nit:215 */
1698 if (!once_value_25) {
1699 fra.me.REG[8] = BOX_NativeString("return___nitni = ");
1700 REGB0 = TAG_Int(17);
1701 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
1702 once_value_25 = fra.me.REG[8];
1703 register_static_object(&once_value_25);
1704 } else fra.me.REG[8] = once_value_25;
1705 fra.me.REG[8] = fra.me.REG[8];
1706 CALL_abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
1707 }
1708 /* ./native_interface//frontier.nit:218 */
1709 REGB0 = TAG_Int(5);
1710 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
1711 if (!once_value_26) {
1712 fra.me.REG[7] = BOX_NativeString("");
1713 REGB0 = TAG_Int(0);
1714 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
1715 once_value_26 = fra.me.REG[7];
1716 register_static_object(&once_value_26);
1717 } else fra.me.REG[7] = once_value_26;
1718 fra.me.REG[7] = fra.me.REG[7];
1719 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
1720 fra.me.REG[0] = CALL_abstractmetamodel___MMMethod___extern_name(fra.me.REG[0])(fra.me.REG[0]);
1721 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_String, ID_String)) /*cast String*/;
1722 if (UNTAG_Bool(REGB0)) {
1723 } else {
1724 nit_abort("Cast failed", NULL, LOCATE_frontier, 218);
1725 }
1726 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
1727 if (!once_value_27) {
1728 fra.me.REG[0] = BOX_NativeString("( ");
1729 REGB0 = TAG_Int(2);
1730 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1731 once_value_27 = fra.me.REG[0];
1732 register_static_object(&once_value_27);
1733 } else fra.me.REG[0] = once_value_27;
1734 fra.me.REG[0] = fra.me.REG[0];
1735 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
1736 if (!once_value_28) {
1737 fra.me.REG[0] = BOX_NativeString(", ");
1738 REGB0 = TAG_Int(2);
1739 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1740 once_value_28 = fra.me.REG[0];
1741 register_static_object(&once_value_28);
1742 } else fra.me.REG[0] = once_value_28;
1743 fra.me.REG[0] = fra.me.REG[0];
1744 fra.me.REG[0] = CALL_string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1745 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
1746 if (!once_value_29) {
1747 fra.me.REG[0] = BOX_NativeString(" );\n");
1748 REGB0 = TAG_Int(4);
1749 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1750 once_value_29 = fra.me.REG[0];
1751 register_static_object(&once_value_29);
1752 } else fra.me.REG[0] = once_value_29;
1753 fra.me.REG[0] = fra.me.REG[0];
1754 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
1755 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
1756 CALL_abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
1757 /* ./native_interface//frontier.nit:220 */
1758 fra.me.REG[8] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
1759 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1760 CALL_compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
1761 /* ./native_interface//frontier.nit:223 */
1762 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1763 if (UNTAG_Bool(REGB0)) {
1764 } else {
1765 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1766 if (UNTAG_Bool(REGB1)) {
1767 REGB1 = TAG_Bool(false);
1768 REGB0 = REGB1;
1769 } else {
1770 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
1771 REGB0 = REGB1;
1772 }
1773 }
1774 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1775 if (UNTAG_Bool(REGB0)) {
1776 /* ./native_interface//frontier.nit:224 */
1777 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
1778 REGB0 = TAG_Int(3);
1779 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
1780 if (!once_value_30) {
1781 fra.me.REG[0] = BOX_NativeString("");
1782 REGB0 = TAG_Int(0);
1783 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1784 once_value_30 = fra.me.REG[0];
1785 register_static_object(&once_value_30);
1786 } else fra.me.REG[0] = once_value_30;
1787 fra.me.REG[0] = fra.me.REG[0];
1788 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
1789 if (!once_value_31) {
1790 fra.me.REG[0] = BOX_NativeString("return___nit");
1791 REGB0 = TAG_Int(12);
1792 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1793 once_value_31 = fra.me.REG[0];
1794 register_static_object(&once_value_31);
1795 } else fra.me.REG[0] = once_value_31;
1796 fra.me.REG[0] = fra.me.REG[0];
1797 if (!once_value_32) {
1798 fra.me.REG[2] = BOX_NativeString("return___nitni");
1799 REGB0 = TAG_Int(14);
1800 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
1801 once_value_32 = fra.me.REG[2];
1802 register_static_object(&once_value_32);
1803 } else fra.me.REG[2] = once_value_32;
1804 fra.me.REG[2] = fra.me.REG[2];
1805 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1806 if (UNTAG_Bool(REGB0)) {
1807 nit_abort("Reciever is null", NULL, LOCATE_frontier, 224);
1808 }
1809 fra.me.REG[2] = CALL_ni_metamodel___MMType___assign_from_friendly(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0], fra.me.REG[2]);
1810 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[2]);
1811 if (!once_value_33) {
1812 fra.me.REG[2] = BOX_NativeString(";\n");
1813 REGB0 = TAG_Int(2);
1814 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
1815 once_value_33 = fra.me.REG[2];
1816 register_static_object(&once_value_33);
1817 } else fra.me.REG[2] = once_value_33;
1818 fra.me.REG[2] = fra.me.REG[2];
1819 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[2]);
1820 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
1821 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
1822 /* ./native_interface//frontier.nit:225 */
1823 fra.me.REG[8] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
1824 if (!once_value_34) {
1825 fra.me.REG[4] = BOX_NativeString("return return___nit;\n");
1826 REGB0 = TAG_Int(21);
1827 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1828 once_value_34 = fra.me.REG[4];
1829 register_static_object(&once_value_34);
1830 } else fra.me.REG[4] = once_value_34;
1831 fra.me.REG[4] = fra.me.REG[4];
1832 CALL_compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
1833 }
1834 /* ./native_interface//frontier.nit:228 */
1835 fra.me.REG[1] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
1836 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___to_writer(fra.me.REG[3])(fra.me.REG[3]);
1837 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1838 stack_frame_head = fra.me.prev;
1839 return;
1840 }
1841 void frontier___MMLocalClass___compile_defaut_extern_type(val_t p0, val_t p1){
1842 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1843 val_t REGB0;
1844 val_t tmp;
1845 static val_t once_value_1; /* Once value */
1846 static val_t once_value_2; /* Once value */
1847 static val_t once_value_3; /* Once value */
1848 static val_t once_value_4; /* Once value */
1849 static val_t once_value_5; /* Once value */
1850 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1851 fra.me.file = LOCATE_frontier;
1852 fra.me.line = 234;
1853 fra.me.meth = LOCATE_frontier___MMLocalClass___compile_defaut_extern_type;
1854 fra.me.has_broke = 0;
1855 fra.me.REG_size = 5;
1856 fra.me.REG[0] = NIT_NULL;
1857 fra.me.REG[1] = NIT_NULL;
1858 fra.me.REG[2] = NIT_NULL;
1859 fra.me.REG[3] = NIT_NULL;
1860 fra.me.REG[4] = NIT_NULL;
1861 fra.me.REG[0] = p0;
1862 fra.me.REG[1] = p1;
1863 /* ./native_interface//frontier.nit:238 */
1864 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1865 REGB0 = TAG_Int(3);
1866 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
1867 if (!once_value_1) {
1868 fra.me.REG[4] = BOX_NativeString("#ifndef ");
1869 REGB0 = TAG_Int(8);
1870 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1871 once_value_1 = fra.me.REG[4];
1872 register_static_object(&once_value_1);
1873 } else fra.me.REG[4] = once_value_1;
1874 fra.me.REG[4] = fra.me.REG[4];
1875 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1876 fra.me.REG[4] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
1877 fra.me.REG[4] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[4])(fra.me.REG[4]);
1878 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1879 if (!once_value_2) {
1880 fra.me.REG[4] = BOX_NativeString("\n");
1881 REGB0 = TAG_Int(1);
1882 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1883 once_value_2 = fra.me.REG[4];
1884 register_static_object(&once_value_2);
1885 } else fra.me.REG[4] = once_value_2;
1886 fra.me.REG[4] = fra.me.REG[4];
1887 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1888 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1889 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1890 /* ./native_interface//frontier.nit:239 */
1891 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1892 REGB0 = TAG_Int(3);
1893 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
1894 if (!once_value_3) {
1895 fra.me.REG[4] = BOX_NativeString("\ttypedef void* ");
1896 REGB0 = TAG_Int(15);
1897 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1898 once_value_3 = fra.me.REG[4];
1899 register_static_object(&once_value_3);
1900 } else fra.me.REG[4] = once_value_3;
1901 fra.me.REG[4] = fra.me.REG[4];
1902 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1903 fra.me.REG[0] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
1904 fra.me.REG[0] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
1905 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1906 if (!once_value_4) {
1907 fra.me.REG[0] = BOX_NativeString(";\n");
1908 REGB0 = TAG_Int(2);
1909 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
1910 once_value_4 = fra.me.REG[0];
1911 register_static_object(&once_value_4);
1912 } else fra.me.REG[0] = once_value_4;
1913 fra.me.REG[0] = fra.me.REG[0];
1914 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1915 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1916 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1917 /* ./native_interface//frontier.nit:240 */
1918 fra.me.REG[1] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1919 if (!once_value_5) {
1920 fra.me.REG[2] = BOX_NativeString("#endif\n\n");
1921 REGB0 = TAG_Int(8);
1922 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
1923 once_value_5 = fra.me.REG[2];
1924 register_static_object(&once_value_5);
1925 } else fra.me.REG[2] = once_value_5;
1926 fra.me.REG[2] = fra.me.REG[2];
1927 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1928 stack_frame_head = fra.me.prev;
1929 return;
1930 }
1931 void frontier___MMSignature___compile_frontier(val_t p0, val_t p1){
1932 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1933 val_t REGB0;
1934 val_t REGB1;
1935 val_t tmp;
1936 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1937 fra.me.file = LOCATE_frontier;
1938 fra.me.line = 245;
1939 fra.me.meth = LOCATE_frontier___MMSignature___compile_frontier;
1940 fra.me.has_broke = 0;
1941 fra.me.REG_size = 6;
1942 fra.me.REG[0] = NIT_NULL;
1943 fra.me.REG[1] = NIT_NULL;
1944 fra.me.REG[2] = NIT_NULL;
1945 fra.me.REG[3] = NIT_NULL;
1946 fra.me.REG[4] = NIT_NULL;
1947 fra.me.REG[5] = NIT_NULL;
1948 fra.me.REG[0] = p0;
1949 fra.me.REG[1] = p1;
1950 /* ./native_interface//frontier.nit:248 */
1951 fra.me.REG[2] = CALL_frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
1952 fra.me.REG[3] = CALL_static_type___MMSignature___recv(fra.me.REG[0])(fra.me.REG[0]);
1953 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1954 /* ./native_interface//frontier.nit:251 */
1955 fra.me.REG[3] = CALL_static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
1956 /* ./../lib/standard//collection//array.nit:234 */
1957 REGB0 = TAG_Int(0);
1958 /* ./../lib/standard//collection//array.nit:235 */
1959 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1960 if (UNTAG_Bool(REGB1)) {
1961 } else {
1962 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
1963 }
1964 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
1965 /* ./../lib/standard//collection//array.nit:236 */
1966 fra.me.REG[2] = ATTR_array___Array____items(fra.me.REG[3]);
1967 /* ./../lib/standard//collection//array.nit:237 */
1968 while(1) {
1969 /* ./../lib/standard//collection//array.nit:23 */
1970 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1971 if (UNTAG_Bool(REGB1)) {
1972 } else {
1973 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1974 }
1975 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
1976 /* ./../lib/standard//kernel.nit:212 */
1977 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1978 /* ./../lib/standard//collection//array.nit:237 */
1979 if (UNTAG_Bool(REGB1)) {
1980 /* ./../lib/standard//collection//array.nit:238 */
1981 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1982 if (UNTAG_Bool(REGB1)) {
1983 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
1984 }
1985 /* ./../lib/standard//collection//array.nit:654 */
1986 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
1987 /* ./native_interface//frontier.nit:251 */
1988 fra.me.REG[5] = CALL_frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
1989 fra.me.REG[4] = CALL_static_type___MMParam___mmtype(fra.me.REG[4])(fra.me.REG[4]);
1990 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1991 /* ./../lib/standard//collection//array.nit:239 */
1992 REGB1 = TAG_Int(1);
1993 /* ./../lib/standard//kernel.nit:215 */
1994 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1995 /* ./../lib/standard//collection//array.nit:239 */
1996 REGB0 = REGB1;
1997 } else {
1998 /* ./../lib/standard//collection//array.nit:237 */
1999 goto label1;
2000 }
2001 }
2002 label1: while(0);
2003 /* ./native_interface//frontier.nit:254 */
2004 fra.me.REG[0] = CALL_static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
2005 /* ./native_interface//frontier.nit:255 */
2006 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2007 if (UNTAG_Bool(REGB0)) {
2008 } else {
2009 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2010 if (UNTAG_Bool(REGB1)) {
2011 REGB1 = TAG_Bool(false);
2012 REGB0 = REGB1;
2013 } else {
2014 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2015 REGB0 = REGB1;
2016 }
2017 }
2018 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2019 if (UNTAG_Bool(REGB0)) {
2020 /* ./native_interface//frontier.nit:256 */
2021 fra.me.REG[1] = CALL_frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
2022 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2023 }
2024 stack_frame_head = fra.me.prev;
2025 return;
2026 }
2027 val_t frontier___FrontierVisitor___header_top(val_t p0){
2028 struct {struct stack_frame_t me;} fra;
2029 val_t REGB0;
2030 val_t tmp;
2031 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2032 fra.me.file = LOCATE_frontier;
2033 fra.me.line = 264;
2034 fra.me.meth = LOCATE_frontier___FrontierVisitor___header_top;
2035 fra.me.has_broke = 0;
2036 fra.me.REG_size = 1;
2037 fra.me.REG[0] = NIT_NULL;
2038 fra.me.REG[0] = p0;
2039 /* ./native_interface//frontier.nit:264 */
2040 REGB0 = TAG_Bool(ATTR_frontier___FrontierVisitor_____atheader_top(fra.me.REG[0])!=NIT_NULL);
2041 if (UNTAG_Bool(REGB0)) {
2042 } else {
2043 nit_abort("Uninitialized attribute %s", "@header_top", LOCATE_frontier, 264);
2044 }
2045 fra.me.REG[0] = ATTR_frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]);
2046 stack_frame_head = fra.me.prev;
2047 return fra.me.REG[0];
2048 }
2049 void frontier___FrontierVisitor___header_top__eq(val_t p0, val_t p1){
2050 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2051 val_t tmp;
2052 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2053 fra.me.file = LOCATE_frontier;
2054 fra.me.line = 264;
2055 fra.me.meth = LOCATE_frontier___FrontierVisitor___header_top__eq;
2056 fra.me.has_broke = 0;
2057 fra.me.REG_size = 2;
2058 fra.me.REG[0] = NIT_NULL;
2059 fra.me.REG[1] = NIT_NULL;
2060 fra.me.REG[0] = p0;
2061 fra.me.REG[1] = p1;
2062 /* ./native_interface//frontier.nit:264 */
2063 ATTR_frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]) = fra.me.REG[1];
2064 stack_frame_head = fra.me.prev;
2065 return;
2066 }
2067 val_t frontier___FrontierVisitor___header(val_t p0){
2068 struct {struct stack_frame_t me;} fra;
2069 val_t REGB0;
2070 val_t tmp;
2071 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2072 fra.me.file = LOCATE_frontier;
2073 fra.me.line = 267;
2074 fra.me.meth = LOCATE_frontier___FrontierVisitor___header;
2075 fra.me.has_broke = 0;
2076 fra.me.REG_size = 1;
2077 fra.me.REG[0] = NIT_NULL;
2078 fra.me.REG[0] = p0;
2079 /* ./native_interface//frontier.nit:267 */
2080 REGB0 = TAG_Bool(ATTR_frontier___FrontierVisitor_____atheader(fra.me.REG[0])!=NIT_NULL);
2081 if (UNTAG_Bool(REGB0)) {
2082 } else {
2083 nit_abort("Uninitialized attribute %s", "@header", LOCATE_frontier, 267);
2084 }
2085 fra.me.REG[0] = ATTR_frontier___FrontierVisitor_____atheader(fra.me.REG[0]);
2086 stack_frame_head = fra.me.prev;
2087 return fra.me.REG[0];
2088 }
2089 void frontier___FrontierVisitor___header__eq(val_t p0, val_t p1){
2090 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2091 val_t tmp;
2092 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2093 fra.me.file = LOCATE_frontier;
2094 fra.me.line = 267;
2095 fra.me.meth = LOCATE_frontier___FrontierVisitor___header__eq;
2096 fra.me.has_broke = 0;
2097 fra.me.REG_size = 2;
2098 fra.me.REG[0] = NIT_NULL;
2099 fra.me.REG[1] = NIT_NULL;
2100 fra.me.REG[0] = p0;
2101 fra.me.REG[1] = p1;
2102 /* ./native_interface//frontier.nit:267 */
2103 ATTR_frontier___FrontierVisitor_____atheader(fra.me.REG[0]) = fra.me.REG[1];
2104 stack_frame_head = fra.me.prev;
2105 return;
2106 }
2107 val_t frontier___FrontierVisitor___body(val_t p0){
2108 struct {struct stack_frame_t me;} fra;
2109 val_t REGB0;
2110 val_t tmp;
2111 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2112 fra.me.file = LOCATE_frontier;
2113 fra.me.line = 270;
2114 fra.me.meth = LOCATE_frontier___FrontierVisitor___body;
2115 fra.me.has_broke = 0;
2116 fra.me.REG_size = 1;
2117 fra.me.REG[0] = NIT_NULL;
2118 fra.me.REG[0] = p0;
2119 /* ./native_interface//frontier.nit:270 */
2120 REGB0 = TAG_Bool(ATTR_frontier___FrontierVisitor_____atbody(fra.me.REG[0])!=NIT_NULL);
2121 if (UNTAG_Bool(REGB0)) {
2122 } else {
2123 nit_abort("Uninitialized attribute %s", "@body", LOCATE_frontier, 270);
2124 }
2125 fra.me.REG[0] = ATTR_frontier___FrontierVisitor_____atbody(fra.me.REG[0]);
2126 stack_frame_head = fra.me.prev;
2127 return fra.me.REG[0];
2128 }
2129 void frontier___FrontierVisitor___body__eq(val_t p0, val_t p1){
2130 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2131 val_t tmp;
2132 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2133 fra.me.file = LOCATE_frontier;
2134 fra.me.line = 270;
2135 fra.me.meth = LOCATE_frontier___FrontierVisitor___body__eq;
2136 fra.me.has_broke = 0;
2137 fra.me.REG_size = 2;
2138 fra.me.REG[0] = NIT_NULL;
2139 fra.me.REG[1] = NIT_NULL;
2140 fra.me.REG[0] = p0;
2141 fra.me.REG[1] = p1;
2142 /* ./native_interface//frontier.nit:270 */
2143 ATTR_frontier___FrontierVisitor_____atbody(fra.me.REG[0]) = fra.me.REG[1];
2144 stack_frame_head = fra.me.prev;
2145 return;
2146 }
2147 val_t frontier___FrontierVisitor___friendlys(val_t p0){
2148 struct {struct stack_frame_t me;} fra;
2149 val_t REGB0;
2150 val_t tmp;
2151 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2152 fra.me.file = LOCATE_frontier;
2153 fra.me.line = 273;
2154 fra.me.meth = LOCATE_frontier___FrontierVisitor___friendlys;
2155 fra.me.has_broke = 0;
2156 fra.me.REG_size = 1;
2157 fra.me.REG[0] = NIT_NULL;
2158 fra.me.REG[0] = p0;
2159 /* ./native_interface//frontier.nit:273 */
2160 REGB0 = TAG_Bool(ATTR_frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0])!=NIT_NULL);
2161 if (UNTAG_Bool(REGB0)) {
2162 } else {
2163 nit_abort("Uninitialized attribute %s", "@friendlys", LOCATE_frontier, 273);
2164 }
2165 fra.me.REG[0] = ATTR_frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]);
2166 stack_frame_head = fra.me.prev;
2167 return fra.me.REG[0];
2168 }
2169 void frontier___FrontierVisitor___friendlys__eq(val_t p0, val_t p1){
2170 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2171 val_t tmp;
2172 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2173 fra.me.file = LOCATE_frontier;
2174 fra.me.line = 273;
2175 fra.me.meth = LOCATE_frontier___FrontierVisitor___friendlys__eq;
2176 fra.me.has_broke = 0;
2177 fra.me.REG_size = 2;
2178 fra.me.REG[0] = NIT_NULL;
2179 fra.me.REG[1] = NIT_NULL;
2180 fra.me.REG[0] = p0;
2181 fra.me.REG[1] = p1;
2182 /* ./native_interface//frontier.nit:273 */
2183 ATTR_frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]) = fra.me.REG[1];
2184 stack_frame_head = fra.me.prev;
2185 return;
2186 }
2187 val_t frontier___FrontierVisitor___types(val_t p0){
2188 struct {struct stack_frame_t me;} fra;
2189 val_t REGB0;
2190 val_t tmp;
2191 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2192 fra.me.file = LOCATE_frontier;
2193 fra.me.line = 276;
2194 fra.me.meth = LOCATE_frontier___FrontierVisitor___types;
2195 fra.me.has_broke = 0;
2196 fra.me.REG_size = 1;
2197 fra.me.REG[0] = NIT_NULL;
2198 fra.me.REG[0] = p0;
2199 /* ./native_interface//frontier.nit:276 */
2200 REGB0 = TAG_Bool(ATTR_frontier___FrontierVisitor_____attypes(fra.me.REG[0])!=NIT_NULL);
2201 if (UNTAG_Bool(REGB0)) {
2202 } else {
2203 nit_abort("Uninitialized attribute %s", "@types", LOCATE_frontier, 276);
2204 }
2205 fra.me.REG[0] = ATTR_frontier___FrontierVisitor_____attypes(fra.me.REG[0]);
2206 stack_frame_head = fra.me.prev;
2207 return fra.me.REG[0];
2208 }
2209 void frontier___FrontierVisitor___types__eq(val_t p0, val_t p1){
2210 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2211 val_t tmp;
2212 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2213 fra.me.file = LOCATE_frontier;
2214 fra.me.line = 276;
2215 fra.me.meth = LOCATE_frontier___FrontierVisitor___types__eq;
2216 fra.me.has_broke = 0;
2217 fra.me.REG_size = 2;
2218 fra.me.REG[0] = NIT_NULL;
2219 fra.me.REG[1] = NIT_NULL;
2220 fra.me.REG[0] = p0;
2221 fra.me.REG[1] = p1;
2222 /* ./native_interface//frontier.nit:276 */
2223 ATTR_frontier___FrontierVisitor_____attypes(fra.me.REG[0]) = fra.me.REG[1];
2224 stack_frame_head = fra.me.prev;
2225 return;
2226 }
2227 val_t frontier___FrontierVisitor___casts(val_t p0){
2228 struct {struct stack_frame_t me;} fra;
2229 val_t REGB0;
2230 val_t tmp;
2231 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2232 fra.me.file = LOCATE_frontier;
2233 fra.me.line = 279;
2234 fra.me.meth = LOCATE_frontier___FrontierVisitor___casts;
2235 fra.me.has_broke = 0;
2236 fra.me.REG_size = 1;
2237 fra.me.REG[0] = NIT_NULL;
2238 fra.me.REG[0] = p0;
2239 /* ./native_interface//frontier.nit:279 */
2240 REGB0 = TAG_Bool(ATTR_frontier___FrontierVisitor_____atcasts(fra.me.REG[0])!=NIT_NULL);
2241 if (UNTAG_Bool(REGB0)) {
2242 } else {
2243 nit_abort("Uninitialized attribute %s", "@casts", LOCATE_frontier, 279);
2244 }
2245 fra.me.REG[0] = ATTR_frontier___FrontierVisitor_____atcasts(fra.me.REG[0]);
2246 stack_frame_head = fra.me.prev;
2247 return fra.me.REG[0];
2248 }
2249 void frontier___FrontierVisitor___casts__eq(val_t p0, val_t p1){
2250 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2251 val_t tmp;
2252 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2253 fra.me.file = LOCATE_frontier;
2254 fra.me.line = 279;
2255 fra.me.meth = LOCATE_frontier___FrontierVisitor___casts__eq;
2256 fra.me.has_broke = 0;
2257 fra.me.REG_size = 2;
2258 fra.me.REG[0] = NIT_NULL;
2259 fra.me.REG[1] = NIT_NULL;
2260 fra.me.REG[0] = p0;
2261 fra.me.REG[1] = p1;
2262 /* ./native_interface//frontier.nit:279 */
2263 ATTR_frontier___FrontierVisitor_____atcasts(fra.me.REG[0]) = fra.me.REG[1];
2264 stack_frame_head = fra.me.prev;
2265 return;
2266 }
2267 val_t frontier___FrontierVisitor___mmmodule(val_t p0){
2268 struct {struct stack_frame_t me;} fra;
2269 val_t REGB0;
2270 val_t tmp;
2271 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2272 fra.me.file = LOCATE_frontier;
2273 fra.me.line = 282;
2274 fra.me.meth = LOCATE_frontier___FrontierVisitor___mmmodule;
2275 fra.me.has_broke = 0;
2276 fra.me.REG_size = 1;
2277 fra.me.REG[0] = NIT_NULL;
2278 fra.me.REG[0] = p0;
2279 /* ./native_interface//frontier.nit:282 */
2280 REGB0 = TAG_Bool(ATTR_frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0])!=NIT_NULL);
2281 if (UNTAG_Bool(REGB0)) {
2282 } else {
2283 nit_abort("Uninitialized attribute %s", "@mmmodule", LOCATE_frontier, 282);
2284 }
2285 fra.me.REG[0] = ATTR_frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0]);
2286 stack_frame_head = fra.me.prev;
2287 return fra.me.REG[0];
2288 }
2289 void frontier___FrontierVisitor___mmmodule__eq(val_t p0, val_t p1){
2290 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2291 val_t tmp;
2292 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2293 fra.me.file = LOCATE_frontier;
2294 fra.me.line = 282;
2295 fra.me.meth = LOCATE_frontier___FrontierVisitor___mmmodule__eq;
2296 fra.me.has_broke = 0;
2297 fra.me.REG_size = 2;
2298 fra.me.REG[0] = NIT_NULL;
2299 fra.me.REG[1] = NIT_NULL;
2300 fra.me.REG[0] = p0;
2301 fra.me.REG[1] = p1;
2302 /* ./native_interface//frontier.nit:282 */
2303 ATTR_frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0]) = fra.me.REG[1];
2304 stack_frame_head = fra.me.prev;
2305 return;
2306 }
2307 void frontier___FrontierVisitor___init(val_t p0, val_t p1, int* init_table){
2308 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_FrontierVisitor].i;
2309 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2310 val_t tmp;
2311 if (init_table[itpos0]) return;
2312 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2313 fra.me.file = LOCATE_frontier;
2314 fra.me.line = 284;
2315 fra.me.meth = LOCATE_frontier___FrontierVisitor___init;
2316 fra.me.has_broke = 0;
2317 fra.me.REG_size = 2;
2318 fra.me.REG[0] = NIT_NULL;
2319 fra.me.REG[1] = NIT_NULL;
2320 fra.me.REG[0] = p0;
2321 fra.me.REG[1] = p1;
2322 /* ./native_interface//frontier.nit:284 */
2323 CALL_frontier___FrontierVisitor___mmmodule__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2324 stack_frame_head = fra.me.prev;
2325 init_table[itpos0] = 1;
2326 return;
2327 }
2328 void frontier___FrontierVisitor___compile_cached(val_t p0){
2329 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2330 val_t tmp;
2331 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2332 fra.me.file = LOCATE_frontier;
2333 fra.me.line = 286;
2334 fra.me.meth = LOCATE_frontier___FrontierVisitor___compile_cached;
2335 fra.me.has_broke = 0;
2336 fra.me.REG_size = 2;
2337 fra.me.REG[0] = NIT_NULL;
2338 fra.me.REG[1] = NIT_NULL;
2339 fra.me.REG[0] = p0;
2340 /* ./native_interface//frontier.nit:289 */
2341 fra.me.REG[1] = CALL_frontier___FrontierVisitor___types(fra.me.REG[0])(fra.me.REG[0]);
2342 CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_frontier___FrontierVisitor___compile_cached_1));
2343 /* ./native_interface//frontier.nit:292 */
2344 fra.me.REG[1] = CALL_frontier___FrontierVisitor___friendlys(fra.me.REG[0])(fra.me.REG[0]);
2345 CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_frontier___FrontierVisitor___compile_cached_2));
2346 /* ./native_interface//frontier.nit:295 */
2347 fra.me.REG[1] = CALL_frontier___FrontierVisitor___casts(fra.me.REG[0])(fra.me.REG[0]);
2348 CALL_abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_frontier___FrontierVisitor___compile_cached_3));
2349 stack_frame_head = fra.me.prev;
2350 return;
2351 }
2352 void OC_frontier___FrontierVisitor___compile_cached_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2353 struct {struct stack_frame_t me;} fra;
2354 fun_t CREG[1];
2355 val_t tmp;
2356 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2357 fra.me.file = LOCATE_frontier;
2358 fra.me.line = 0;
2359 fra.me.meth = LOCATE_frontier___FrontierVisitor___compile_cached;
2360 fra.me.has_broke = 0;
2361 fra.me.REG_size = 1;
2362 fra.me.REG[0] = NIT_NULL;
2363 fra.me.closure_ctx = closctx_param;
2364 fra.me.closure_funs = CREG;
2365 fra.me.REG[0] = p0;
2366 CREG[0] = clos_fun0;
2367 CALL_frontier___MMType___compile_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
2368 stack_frame_head = fra.me.prev;
2369 return;
2370 }
2371 void OC_frontier___FrontierVisitor___compile_cached_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2372 struct {struct stack_frame_t me;} fra;
2373 fun_t CREG[1];
2374 val_t tmp;
2375 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2376 fra.me.file = LOCATE_frontier;
2377 fra.me.line = 0;
2378 fra.me.meth = LOCATE_frontier___FrontierVisitor___compile_cached;
2379 fra.me.has_broke = 0;
2380 fra.me.REG_size = 1;
2381 fra.me.REG[0] = NIT_NULL;
2382 fra.me.closure_ctx = closctx_param;
2383 fra.me.closure_funs = CREG;
2384 fra.me.REG[0] = p0;
2385 CREG[0] = clos_fun0;
2386 CALL_frontier___MMExplicitImport___compile_friendly_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
2387 stack_frame_head = fra.me.prev;
2388 return;
2389 }
2390 void OC_frontier___FrontierVisitor___compile_cached_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2391 struct {struct stack_frame_t me;} fra;
2392 fun_t CREG[1];
2393 val_t tmp;
2394 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2395 fra.me.file = LOCATE_frontier;
2396 fra.me.line = 0;
2397 fra.me.meth = LOCATE_frontier___FrontierVisitor___compile_cached;
2398 fra.me.has_broke = 0;
2399 fra.me.REG_size = 1;
2400 fra.me.REG[0] = NIT_NULL;
2401 fra.me.closure_ctx = closctx_param;
2402 fra.me.closure_funs = CREG;
2403 fra.me.REG[0] = p0;
2404 CREG[0] = clos_fun0;
2405 CALL_frontier___MMImportedCast___compile_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
2406 stack_frame_head = fra.me.prev;
2407 return;
2408 }
2409 void frontier___FrontierVisitor___write_to_files(val_t p0, val_t p1){
2410 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
2411 val_t REGB0;
2412 val_t tmp;
2413 static val_t once_value_1; /* Once value */
2414 static val_t once_value_2; /* Once value */
2415 static val_t once_value_3; /* Once value */
2416 static val_t once_value_4; /* Once value */
2417 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2418 fra.me.file = LOCATE_frontier;
2419 fra.me.line = 298;
2420 fra.me.meth = LOCATE_frontier___FrontierVisitor___write_to_files;
2421 fra.me.has_broke = 0;
2422 fra.me.REG_size = 6;
2423 fra.me.REG[0] = NIT_NULL;
2424 fra.me.REG[1] = NIT_NULL;
2425 fra.me.REG[2] = NIT_NULL;
2426 fra.me.REG[3] = NIT_NULL;
2427 fra.me.REG[4] = NIT_NULL;
2428 fra.me.REG[5] = NIT_NULL;
2429 fra.me.REG[0] = p0;
2430 fra.me.REG[1] = p1;
2431 /* ./native_interface//frontier.nit:300 */
2432 REGB0 = TAG_Int(3);
2433 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
2434 if (!once_value_1) {
2435 fra.me.REG[3] = BOX_NativeString("");
2436 REGB0 = TAG_Int(0);
2437 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2438 once_value_1 = fra.me.REG[3];
2439 register_static_object(&once_value_1);
2440 } else fra.me.REG[3] = once_value_1;
2441 fra.me.REG[3] = fra.me.REG[3];
2442 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2443 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
2444 if (!once_value_2) {
2445 fra.me.REG[3] = BOX_NativeString("._nitni.h");
2446 REGB0 = TAG_Int(9);
2447 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2448 once_value_2 = fra.me.REG[3];
2449 register_static_object(&once_value_2);
2450 } else fra.me.REG[3] = once_value_2;
2451 fra.me.REG[3] = fra.me.REG[3];
2452 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2453 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2454 /* ./native_interface//frontier.nit:301 */
2455 fra.me.REG[3] = NEW_OFStream_file___OFStream___open(fra.me.REG[2]);
2456 /* ./native_interface//frontier.nit:302 */
2457 fra.me.REG[4] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[0])(fra.me.REG[0]);
2458 CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2459 /* ./native_interface//frontier.nit:303 */
2460 fra.me.REG[4] = CALL_frontier___FrontierVisitor___header(fra.me.REG[0])(fra.me.REG[0]);
2461 CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2462 /* ./native_interface//frontier.nit:304 */
2463 CALL_stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
2464 /* ./native_interface//frontier.nit:306 */
2465 REGB0 = TAG_Int(3);
2466 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
2467 if (!once_value_3) {
2468 fra.me.REG[5] = BOX_NativeString("");
2469 REGB0 = TAG_Int(0);
2470 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
2471 once_value_3 = fra.me.REG[5];
2472 register_static_object(&once_value_3);
2473 } else fra.me.REG[5] = once_value_3;
2474 fra.me.REG[5] = fra.me.REG[5];
2475 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2476 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
2477 if (!once_value_4) {
2478 fra.me.REG[1] = BOX_NativeString("._nitni.c");
2479 REGB0 = TAG_Int(9);
2480 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
2481 once_value_4 = fra.me.REG[1];
2482 register_static_object(&once_value_4);
2483 } else fra.me.REG[1] = once_value_4;
2484 fra.me.REG[1] = fra.me.REG[1];
2485 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
2486 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2487 fra.me.REG[2] = fra.me.REG[4];
2488 /* ./native_interface//frontier.nit:307 */
2489 fra.me.REG[2] = NEW_OFStream_file___OFStream___open(fra.me.REG[2]);
2490 fra.me.REG[3] = fra.me.REG[2];
2491 /* ./native_interface//frontier.nit:308 */
2492 fra.me.REG[0] = CALL_frontier___FrontierVisitor___body(fra.me.REG[0])(fra.me.REG[0]);
2493 CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
2494 /* ./native_interface//frontier.nit:309 */
2495 CALL_stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
2496 stack_frame_head = fra.me.prev;
2497 return;
2498 }
2499 val_t frontier___String___path_from_parent(val_t p0){
2500 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2501 val_t REGB0;
2502 val_t REGB1;
2503 val_t REGB2;
2504 val_t tmp;
2505 static val_t once_value_2; /* Once value */
2506 static val_t once_value_3; /* Once value */
2507 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2508 fra.me.file = LOCATE_frontier;
2509 fra.me.line = 314;
2510 fra.me.meth = LOCATE_frontier___String___path_from_parent;
2511 fra.me.has_broke = 0;
2512 fra.me.REG_size = 4;
2513 fra.me.REG[0] = NIT_NULL;
2514 fra.me.REG[1] = NIT_NULL;
2515 fra.me.REG[2] = NIT_NULL;
2516 fra.me.REG[3] = NIT_NULL;
2517 fra.me.REG[0] = p0;
2518 /* ./native_interface//frontier.nit:318 */
2519 REGB0 = TAG_Int(0);
2520 REGB0 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
2521 REGB1 = TAG_Char('/');
2522 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2523 if (UNTAG_Bool(REGB2)) {
2524 } else {
2525 /* ./../lib/standard//kernel.nit:347 */
2526 REGB1 = TAG_Bool((REGB0)==(REGB1));
2527 /* ./native_interface//frontier.nit:318 */
2528 REGB2 = REGB1;
2529 }
2530 if (UNTAG_Bool(REGB2)) {
2531 /* ./native_interface//frontier.nit:320 */
2532 fra.me.REG[1] = fra.me.REG[0];
2533 goto label1;
2534 } else {
2535 /* ./native_interface//frontier.nit:322 */
2536 REGB2 = TAG_Int(3);
2537 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB2);
2538 if (!once_value_2) {
2539 fra.me.REG[3] = BOX_NativeString("../");
2540 REGB2 = TAG_Int(3);
2541 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB2);
2542 once_value_2 = fra.me.REG[3];
2543 register_static_object(&once_value_2);
2544 } else fra.me.REG[3] = once_value_2;
2545 fra.me.REG[3] = fra.me.REG[3];
2546 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2547 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
2548 if (!once_value_3) {
2549 fra.me.REG[0] = BOX_NativeString("");
2550 REGB2 = TAG_Int(0);
2551 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB2);
2552 once_value_3 = fra.me.REG[0];
2553 register_static_object(&once_value_3);
2554 } else fra.me.REG[0] = once_value_3;
2555 fra.me.REG[0] = fra.me.REG[0];
2556 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
2557 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2558 fra.me.REG[1] = fra.me.REG[2];
2559 goto label1;
2560 }
2561 label1: while(0);
2562 stack_frame_head = fra.me.prev;
2563 return fra.me.REG[1];
2564 }
2565 void frontier___MMImportedCast___compile_to_frontier(val_t p0, val_t p1){
2566 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2567 val_t REGB0;
2568 val_t REGB1;
2569 val_t tmp;
2570 static val_t once_value_1; /* Once value */
2571 static val_t once_value_2; /* Once value */
2572 static val_t once_value_3; /* Once value */
2573 static val_t once_value_4; /* Once value */
2574 static val_t once_value_5; /* Once value */
2575 static val_t once_value_6; /* Once value */
2576 static val_t once_value_7; /* Once value */
2577 static val_t once_value_8; /* Once value */
2578 static val_t once_value_9; /* Once value */
2579 static val_t once_value_10; /* Once value */
2580 static val_t once_value_11; /* Once value */
2581 static val_t once_value_12; /* Once value */
2582 static val_t once_value_13; /* Once value */
2583 static val_t once_value_14; /* Once value */
2584 static val_t once_value_15; /* Once value */
2585 static val_t once_value_16; /* Once value */
2586 static val_t once_value_17; /* Once value */
2587 static val_t once_value_18; /* Once value */
2588 static val_t once_value_19; /* Once value */
2589 static val_t once_value_20; /* Once value */
2590 static val_t once_value_21; /* Once value */
2591 static val_t once_value_22; /* Once value */
2592 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2593 fra.me.file = LOCATE_frontier;
2594 fra.me.line = 329;
2595 fra.me.meth = LOCATE_frontier___MMImportedCast___compile_to_frontier;
2596 fra.me.has_broke = 0;
2597 fra.me.REG_size = 5;
2598 fra.me.REG[0] = NIT_NULL;
2599 fra.me.REG[1] = NIT_NULL;
2600 fra.me.REG[2] = NIT_NULL;
2601 fra.me.REG[3] = NIT_NULL;
2602 fra.me.REG[4] = NIT_NULL;
2603 fra.me.REG[0] = p0;
2604 fra.me.REG[1] = p1;
2605 /* ./native_interface//frontier.nit:333 */
2606 REGB0 = CALL_static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
2607 if (UNTAG_Bool(REGB0)) {
2608 REGB0 = CALL_static_type___MMImportedCast___is_not_null_to_nullable(fra.me.REG[0])(fra.me.REG[0]);
2609 } else {
2610 REGB1 = TAG_Bool(false);
2611 REGB0 = REGB1;
2612 }
2613 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2614 if (UNTAG_Bool(REGB0)) {
2615 /* ./native_interface//frontier.nit:334 */
2616 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2617 REGB0 = TAG_Int(5);
2618 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
2619 if (!once_value_1) {
2620 fra.me.REG[4] = BOX_NativeString("\n/* Type check for ");
2621 REGB0 = TAG_Int(19);
2622 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2623 once_value_1 = fra.me.REG[4];
2624 register_static_object(&once_value_1);
2625 } else fra.me.REG[4] = once_value_1;
2626 fra.me.REG[4] = fra.me.REG[4];
2627 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2628 fra.me.REG[4] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
2629 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2630 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2631 if (!once_value_2) {
2632 fra.me.REG[4] = BOX_NativeString(" with ");
2633 REGB0 = TAG_Int(6);
2634 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2635 once_value_2 = fra.me.REG[4];
2636 register_static_object(&once_value_2);
2637 } else fra.me.REG[4] = once_value_2;
2638 fra.me.REG[4] = fra.me.REG[4];
2639 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2640 fra.me.REG[4] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
2641 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2642 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2643 if (!once_value_3) {
2644 fra.me.REG[4] = BOX_NativeString(" */\n");
2645 REGB0 = TAG_Int(4);
2646 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2647 once_value_3 = fra.me.REG[4];
2648 register_static_object(&once_value_3);
2649 } else fra.me.REG[4] = once_value_3;
2650 fra.me.REG[4] = fra.me.REG[4];
2651 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2652 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2653 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2654 /* ./native_interface//frontier.nit:335 */
2655 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2656 REGB0 = TAG_Int(3);
2657 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
2658 if (!once_value_4) {
2659 fra.me.REG[4] = BOX_NativeString("");
2660 REGB0 = TAG_Int(0);
2661 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2662 once_value_4 = fra.me.REG[4];
2663 register_static_object(&once_value_4);
2664 } else fra.me.REG[4] = once_value_4;
2665 fra.me.REG[4] = fra.me.REG[4];
2666 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2667 fra.me.REG[4] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
2668 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___is_a_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
2669 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2670 if (!once_value_5) {
2671 fra.me.REG[4] = BOX_NativeString(";\n");
2672 REGB0 = TAG_Int(2);
2673 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2674 once_value_5 = fra.me.REG[4];
2675 register_static_object(&once_value_5);
2676 } else fra.me.REG[4] = once_value_5;
2677 fra.me.REG[4] = fra.me.REG[4];
2678 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2679 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2680 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2681 /* ./native_interface//frontier.nit:337 */
2682 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2683 REGB0 = TAG_Int(3);
2684 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
2685 if (!once_value_6) {
2686 fra.me.REG[4] = BOX_NativeString("#ifndef ");
2687 REGB0 = TAG_Int(8);
2688 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2689 once_value_6 = fra.me.REG[4];
2690 register_static_object(&once_value_6);
2691 } else fra.me.REG[4] = once_value_6;
2692 fra.me.REG[4] = fra.me.REG[4];
2693 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2694 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___is_a_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
2695 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2696 if (!once_value_7) {
2697 fra.me.REG[4] = BOX_NativeString("\n");
2698 REGB0 = TAG_Int(1);
2699 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2700 once_value_7 = fra.me.REG[4];
2701 register_static_object(&once_value_7);
2702 } else fra.me.REG[4] = once_value_7;
2703 fra.me.REG[4] = fra.me.REG[4];
2704 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2705 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2706 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2707 /* ./native_interface//frontier.nit:338 */
2708 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2709 REGB0 = TAG_Int(5);
2710 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
2711 if (!once_value_8) {
2712 fra.me.REG[4] = BOX_NativeString("#define ");
2713 REGB0 = TAG_Int(8);
2714 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2715 once_value_8 = fra.me.REG[4];
2716 register_static_object(&once_value_8);
2717 } else fra.me.REG[4] = once_value_8;
2718 fra.me.REG[4] = fra.me.REG[4];
2719 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2720 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___is_a_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
2721 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2722 if (!once_value_9) {
2723 fra.me.REG[4] = BOX_NativeString(" ");
2724 REGB0 = TAG_Int(1);
2725 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2726 once_value_9 = fra.me.REG[4];
2727 register_static_object(&once_value_9);
2728 } else fra.me.REG[4] = once_value_9;
2729 fra.me.REG[4] = fra.me.REG[4];
2730 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2731 fra.me.REG[4] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
2732 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___is_a_local_cname(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
2733 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2734 if (!once_value_10) {
2735 fra.me.REG[4] = BOX_NativeString("\n");
2736 REGB0 = TAG_Int(1);
2737 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2738 once_value_10 = fra.me.REG[4];
2739 register_static_object(&once_value_10);
2740 } else fra.me.REG[4] = once_value_10;
2741 fra.me.REG[4] = fra.me.REG[4];
2742 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2743 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2744 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2745 /* ./native_interface//frontier.nit:339 */
2746 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2747 if (!once_value_11) {
2748 fra.me.REG[3] = BOX_NativeString("#endif\n");
2749 REGB0 = TAG_Int(7);
2750 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2751 once_value_11 = fra.me.REG[3];
2752 register_static_object(&once_value_11);
2753 } else fra.me.REG[3] = once_value_11;
2754 fra.me.REG[3] = fra.me.REG[3];
2755 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2756 /* ./native_interface//frontier.nit:341 */
2757 fra.me.REG[3] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
2758 fra.me.REG[3] = CALL_frontier___MMImportedCast___compile_is(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
2759 /* ./native_interface//frontier.nit:342 */
2760 fra.me.REG[2] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
2761 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___to_writer(fra.me.REG[3])(fra.me.REG[3]);
2762 CALL_compiling_writer___Writer___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2763 }
2764 /* ./native_interface//frontier.nit:346 */
2765 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2766 REGB0 = TAG_Int(5);
2767 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
2768 if (!once_value_12) {
2769 fra.me.REG[4] = BOX_NativeString("\n/* Cast for ");
2770 REGB0 = TAG_Int(13);
2771 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2772 once_value_12 = fra.me.REG[4];
2773 register_static_object(&once_value_12);
2774 } else fra.me.REG[4] = once_value_12;
2775 fra.me.REG[4] = fra.me.REG[4];
2776 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2777 fra.me.REG[4] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
2778 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2779 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2780 if (!once_value_13) {
2781 fra.me.REG[4] = BOX_NativeString(" to ");
2782 REGB0 = TAG_Int(4);
2783 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2784 once_value_13 = fra.me.REG[4];
2785 register_static_object(&once_value_13);
2786 } else fra.me.REG[4] = once_value_13;
2787 fra.me.REG[4] = fra.me.REG[4];
2788 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2789 fra.me.REG[4] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
2790 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2791 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2792 if (!once_value_14) {
2793 fra.me.REG[4] = BOX_NativeString(" */\n");
2794 REGB0 = TAG_Int(4);
2795 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2796 once_value_14 = fra.me.REG[4];
2797 register_static_object(&once_value_14);
2798 } else fra.me.REG[4] = once_value_14;
2799 fra.me.REG[4] = fra.me.REG[4];
2800 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2801 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2802 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2803 /* ./native_interface//frontier.nit:347 */
2804 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2805 REGB0 = TAG_Int(3);
2806 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
2807 if (!once_value_15) {
2808 fra.me.REG[4] = BOX_NativeString("");
2809 REGB0 = TAG_Int(0);
2810 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2811 once_value_15 = fra.me.REG[4];
2812 register_static_object(&once_value_15);
2813 } else fra.me.REG[4] = once_value_15;
2814 fra.me.REG[4] = fra.me.REG[4];
2815 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2816 fra.me.REG[4] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
2817 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___as_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
2818 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2819 if (!once_value_16) {
2820 fra.me.REG[4] = BOX_NativeString(";\n");
2821 REGB0 = TAG_Int(2);
2822 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2823 once_value_16 = fra.me.REG[4];
2824 register_static_object(&once_value_16);
2825 } else fra.me.REG[4] = once_value_16;
2826 fra.me.REG[4] = fra.me.REG[4];
2827 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2828 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2829 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2830 /* ./native_interface//frontier.nit:349 */
2831 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2832 REGB0 = TAG_Int(3);
2833 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
2834 if (!once_value_17) {
2835 fra.me.REG[4] = BOX_NativeString("#ifndef ");
2836 REGB0 = TAG_Int(8);
2837 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2838 once_value_17 = fra.me.REG[4];
2839 register_static_object(&once_value_17);
2840 } else fra.me.REG[4] = once_value_17;
2841 fra.me.REG[4] = fra.me.REG[4];
2842 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2843 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___as_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
2844 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2845 if (!once_value_18) {
2846 fra.me.REG[4] = BOX_NativeString("\n");
2847 REGB0 = TAG_Int(1);
2848 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2849 once_value_18 = fra.me.REG[4];
2850 register_static_object(&once_value_18);
2851 } else fra.me.REG[4] = once_value_18;
2852 fra.me.REG[4] = fra.me.REG[4];
2853 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
2854 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2855 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2856 /* ./native_interface//frontier.nit:350 */
2857 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2858 REGB0 = TAG_Int(5);
2859 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
2860 if (!once_value_19) {
2861 fra.me.REG[4] = BOX_NativeString("#define ");
2862 REGB0 = TAG_Int(8);
2863 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2864 once_value_19 = fra.me.REG[4];
2865 register_static_object(&once_value_19);
2866 } else fra.me.REG[4] = once_value_19;
2867 fra.me.REG[4] = fra.me.REG[4];
2868 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2869 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___as_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
2870 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2871 if (!once_value_20) {
2872 fra.me.REG[4] = BOX_NativeString(" ");
2873 REGB0 = TAG_Int(1);
2874 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2875 once_value_20 = fra.me.REG[4];
2876 register_static_object(&once_value_20);
2877 } else fra.me.REG[4] = once_value_20;
2878 fra.me.REG[4] = fra.me.REG[4];
2879 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2880 fra.me.REG[4] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
2881 fra.me.REG[4] = CALL_ni_metamodel___MMImportedCast___as_local_cname(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
2882 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2883 if (!once_value_21) {
2884 fra.me.REG[4] = BOX_NativeString("\n");
2885 REGB0 = TAG_Int(1);
2886 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2887 once_value_21 = fra.me.REG[4];
2888 register_static_object(&once_value_21);
2889 } else fra.me.REG[4] = once_value_21;
2890 fra.me.REG[4] = fra.me.REG[4];
2891 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2892 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2893 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2894 /* ./native_interface//frontier.nit:351 */
2895 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2896 if (!once_value_22) {
2897 fra.me.REG[2] = BOX_NativeString("#endif\n");
2898 REGB0 = TAG_Int(7);
2899 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2900 once_value_22 = fra.me.REG[2];
2901 register_static_object(&once_value_22);
2902 } else fra.me.REG[2] = once_value_22;
2903 fra.me.REG[2] = fra.me.REG[2];
2904 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2905 /* ./native_interface//frontier.nit:353 */
2906 fra.me.REG[2] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
2907 fra.me.REG[2] = CALL_frontier___MMImportedCast___compile_as(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
2908 /* ./native_interface//frontier.nit:354 */
2909 fra.me.REG[1] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
2910 fra.me.REG[2] = CALL_ni_tools___FunctionCompiler___to_writer(fra.me.REG[2])(fra.me.REG[2]);
2911 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2912 stack_frame_head = fra.me.prev;
2913 return;
2914 }
2915 val_t frontier___MMImportedCast___compile_as(val_t p0, val_t p1){
2916 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
2917 val_t REGB0;
2918 val_t tmp;
2919 static val_t once_value_1; /* Once value */
2920 static val_t once_value_2; /* Once value */
2921 static val_t once_value_3; /* Once value */
2922 static val_t once_value_4; /* Once value */
2923 static val_t once_value_5; /* Once value */
2924 static val_t once_value_6; /* Once value */
2925 static val_t once_value_7; /* Once value */
2926 static val_t once_value_8; /* Once value */
2927 static val_t once_value_9; /* Once value */
2928 static val_t once_value_10; /* Once value */
2929 static val_t once_value_11; /* Once value */
2930 static val_t once_value_12; /* Once value */
2931 static val_t once_value_13; /* Once value */
2932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2933 fra.me.file = LOCATE_frontier;
2934 fra.me.line = 357;
2935 fra.me.meth = LOCATE_frontier___MMImportedCast___compile_as;
2936 fra.me.has_broke = 0;
2937 fra.me.REG_size = 8;
2938 fra.me.REG[0] = NIT_NULL;
2939 fra.me.REG[1] = NIT_NULL;
2940 fra.me.REG[2] = NIT_NULL;
2941 fra.me.REG[3] = NIT_NULL;
2942 fra.me.REG[4] = NIT_NULL;
2943 fra.me.REG[5] = NIT_NULL;
2944 fra.me.REG[6] = NIT_NULL;
2945 fra.me.REG[7] = NIT_NULL;
2946 fra.me.REG[0] = p0;
2947 fra.me.REG[1] = p1;
2948 /* ./native_interface//frontier.nit:361 */
2949 fra.me.REG[1] = CALL_ni_metamodel___MMImportedCast___as_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2950 fra.me.REG[1] = NEW_FunctionCompiler_ni_tools___FunctionCompiler___init(fra.me.REG[1]);
2951 /* ./native_interface//frontier.nit:363 */
2952 if (!once_value_1) {
2953 fra.me.REG[2] = BOX_NativeString("out");
2954 REGB0 = TAG_Int(3);
2955 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2956 once_value_1 = fra.me.REG[2];
2957 register_static_object(&once_value_1);
2958 } else fra.me.REG[2] = once_value_1;
2959 fra.me.REG[2] = fra.me.REG[2];
2960 /* ./native_interface//frontier.nit:364 */
2961 if (!once_value_2) {
2962 fra.me.REG[3] = BOX_NativeString("temp");
2963 REGB0 = TAG_Int(4);
2964 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2965 once_value_2 = fra.me.REG[3];
2966 register_static_object(&once_value_2);
2967 } else fra.me.REG[3] = once_value_2;
2968 fra.me.REG[3] = fra.me.REG[3];
2969 /* ./native_interface//frontier.nit:366 */
2970 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
2971 REGB0 = TAG_Int(3);
2972 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
2973 if (!once_value_3) {
2974 fra.me.REG[6] = BOX_NativeString("val_t ");
2975 REGB0 = TAG_Int(6);
2976 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
2977 once_value_3 = fra.me.REG[6];
2978 register_static_object(&once_value_3);
2979 } else fra.me.REG[6] = once_value_3;
2980 fra.me.REG[6] = fra.me.REG[6];
2981 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2982 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
2983 if (!once_value_4) {
2984 fra.me.REG[6] = BOX_NativeString(";\n");
2985 REGB0 = TAG_Int(2);
2986 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
2987 once_value_4 = fra.me.REG[6];
2988 register_static_object(&once_value_4);
2989 } else fra.me.REG[6] = once_value_4;
2990 fra.me.REG[6] = fra.me.REG[6];
2991 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2992 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
2993 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2994 /* ./native_interface//frontier.nit:367 */
2995 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
2996 REGB0 = TAG_Int(5);
2997 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
2998 if (!once_value_5) {
2999 fra.me.REG[6] = BOX_NativeString("");
3000 REGB0 = TAG_Int(0);
3001 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3002 once_value_5 = fra.me.REG[6];
3003 register_static_object(&once_value_5);
3004 } else fra.me.REG[6] = once_value_5;
3005 fra.me.REG[6] = fra.me.REG[6];
3006 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3007 fra.me.REG[6] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3008 fra.me.REG[6] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[6])(fra.me.REG[6]);
3009 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3010 if (!once_value_6) {
3011 fra.me.REG[6] = BOX_NativeString(" ");
3012 REGB0 = TAG_Int(1);
3013 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3014 once_value_6 = fra.me.REG[6];
3015 register_static_object(&once_value_6);
3016 } else fra.me.REG[6] = once_value_6;
3017 fra.me.REG[6] = fra.me.REG[6];
3018 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3019 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3020 if (!once_value_7) {
3021 fra.me.REG[6] = BOX_NativeString(";\n");
3022 REGB0 = TAG_Int(2);
3023 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3024 once_value_7 = fra.me.REG[6];
3025 register_static_object(&once_value_7);
3026 } else fra.me.REG[6] = once_value_7;
3027 fra.me.REG[6] = fra.me.REG[6];
3028 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3029 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3030 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3031 /* ./native_interface//frontier.nit:369 */
3032 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3033 REGB0 = TAG_Int(3);
3034 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
3035 if (!once_value_8) {
3036 fra.me.REG[6] = BOX_NativeString("");
3037 REGB0 = TAG_Int(0);
3038 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3039 once_value_8 = fra.me.REG[6];
3040 register_static_object(&once_value_8);
3041 } else fra.me.REG[6] = once_value_8;
3042 fra.me.REG[6] = fra.me.REG[6];
3043 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3044 fra.me.REG[6] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3045 fra.me.REG[7] = CALL_ni_metamodel___MMImportedCast___in_name(fra.me.REG[0])(fra.me.REG[0]);
3046 fra.me.REG[7] = CALL_ni_metamodel___MMType___assign_from_friendly(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[7]);
3047 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
3048 if (!once_value_9) {
3049 fra.me.REG[7] = BOX_NativeString(";\n");
3050 REGB0 = TAG_Int(2);
3051 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
3052 once_value_9 = fra.me.REG[7];
3053 register_static_object(&once_value_9);
3054 } else fra.me.REG[7] = once_value_9;
3055 fra.me.REG[7] = fra.me.REG[7];
3056 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
3057 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
3058 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3059 /* ./native_interface//frontier.nit:372 */
3060 fra.me.REG[5] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3061 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[5])(fra.me.REG[5]);
3062 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3063 if (UNTAG_Bool(REGB0)) {
3064 /* ./native_interface//frontier.nit:373 */
3065 CALL_frontier___MMImportedCast___compile_check_is_not_null(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
3066 }
3067 /* ./native_interface//frontier.nit:377 */
3068 REGB0 = CALL_static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
3069 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3070 if (UNTAG_Bool(REGB0)) {
3071 /* ./native_interface//frontier.nit:378 */
3072 fra.me.REG[5] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3073 CALL_frontier___MMType___compile_check_isa(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[3]);
3074 }
3075 /* ./native_interface//frontier.nit:381 */
3076 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3077 REGB0 = TAG_Int(3);
3078 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3079 if (!once_value_10) {
3080 fra.me.REG[7] = BOX_NativeString("");
3081 REGB0 = TAG_Int(0);
3082 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
3083 once_value_10 = fra.me.REG[7];
3084 register_static_object(&once_value_10);
3085 } else fra.me.REG[7] = once_value_10;
3086 fra.me.REG[7] = fra.me.REG[7];
3087 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
3088 fra.me.REG[0] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3089 fra.me.REG[3] = CALL_ni_metamodel___MMType___assign_to_friendly(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
3090 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3091 if (!once_value_11) {
3092 fra.me.REG[3] = BOX_NativeString(";\n");
3093 REGB0 = TAG_Int(2);
3094 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3095 once_value_11 = fra.me.REG[3];
3096 register_static_object(&once_value_11);
3097 } else fra.me.REG[3] = once_value_11;
3098 fra.me.REG[3] = fra.me.REG[3];
3099 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3100 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3101 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3102 /* ./native_interface//frontier.nit:383 */
3103 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3104 REGB0 = TAG_Int(3);
3105 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
3106 if (!once_value_12) {
3107 fra.me.REG[3] = BOX_NativeString("return ");
3108 REGB0 = TAG_Int(7);
3109 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3110 once_value_12 = fra.me.REG[3];
3111 register_static_object(&once_value_12);
3112 } else fra.me.REG[3] = once_value_12;
3113 fra.me.REG[3] = fra.me.REG[3];
3114 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3115 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
3116 if (!once_value_13) {
3117 fra.me.REG[2] = BOX_NativeString(";\n");
3118 REGB0 = TAG_Int(2);
3119 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3120 once_value_13 = fra.me.REG[2];
3121 register_static_object(&once_value_13);
3122 } else fra.me.REG[2] = once_value_13;
3123 fra.me.REG[2] = fra.me.REG[2];
3124 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
3125 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
3126 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3127 /* ./native_interface//frontier.nit:385 */
3128 goto label14;
3129 label14: while(0);
3130 stack_frame_head = fra.me.prev;
3131 return fra.me.REG[1];
3132 }
3133 val_t frontier___MMImportedCast___compile_is(val_t p0, val_t p1){
3134 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3135 val_t REGB0;
3136 val_t tmp;
3137 static val_t once_value_1; /* Once value */
3138 static val_t once_value_2; /* Once value */
3139 static val_t once_value_3; /* Once value */
3140 static val_t once_value_4; /* Once value */
3141 static val_t once_value_5; /* Once value */
3142 static val_t once_value_6; /* Once value */
3143 static val_t once_value_7; /* Once value */
3144 static val_t once_value_8; /* Once value */
3145 static val_t once_value_9; /* Once value */
3146 static val_t once_value_10; /* Once value */
3147 static val_t once_value_11; /* Once value */
3148 static val_t once_value_12; /* Once value */
3149 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3150 fra.me.file = LOCATE_frontier;
3151 fra.me.line = 388;
3152 fra.me.meth = LOCATE_frontier___MMImportedCast___compile_is;
3153 fra.me.has_broke = 0;
3154 fra.me.REG_size = 7;
3155 fra.me.REG[0] = NIT_NULL;
3156 fra.me.REG[1] = NIT_NULL;
3157 fra.me.REG[2] = NIT_NULL;
3158 fra.me.REG[3] = NIT_NULL;
3159 fra.me.REG[4] = NIT_NULL;
3160 fra.me.REG[5] = NIT_NULL;
3161 fra.me.REG[6] = NIT_NULL;
3162 fra.me.REG[0] = p0;
3163 fra.me.REG[1] = p1;
3164 /* ./native_interface//frontier.nit:392 */
3165 fra.me.REG[1] = CALL_ni_metamodel___MMImportedCast___is_a_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3166 fra.me.REG[1] = NEW_FunctionCompiler_ni_tools___FunctionCompiler___init(fra.me.REG[1]);
3167 /* ./native_interface//frontier.nit:394 */
3168 if (!once_value_1) {
3169 fra.me.REG[2] = BOX_NativeString("temp");
3170 REGB0 = TAG_Int(4);
3171 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3172 once_value_1 = fra.me.REG[2];
3173 register_static_object(&once_value_1);
3174 } else fra.me.REG[2] = once_value_1;
3175 fra.me.REG[2] = fra.me.REG[2];
3176 /* ./native_interface//frontier.nit:395 */
3177 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
3178 REGB0 = TAG_Int(3);
3179 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3180 if (!once_value_2) {
3181 fra.me.REG[5] = BOX_NativeString("val_t ");
3182 REGB0 = TAG_Int(6);
3183 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
3184 once_value_2 = fra.me.REG[5];
3185 register_static_object(&once_value_2);
3186 } else fra.me.REG[5] = once_value_2;
3187 fra.me.REG[5] = fra.me.REG[5];
3188 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3189 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3190 if (!once_value_3) {
3191 fra.me.REG[5] = BOX_NativeString(";\n");
3192 REGB0 = TAG_Int(2);
3193 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
3194 once_value_3 = fra.me.REG[5];
3195 register_static_object(&once_value_3);
3196 } else fra.me.REG[5] = once_value_3;
3197 fra.me.REG[5] = fra.me.REG[5];
3198 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3199 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3200 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3201 /* ./native_interface//frontier.nit:397 */
3202 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3203 REGB0 = TAG_Int(3);
3204 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
3205 if (!once_value_4) {
3206 fra.me.REG[5] = BOX_NativeString("");
3207 REGB0 = TAG_Int(0);
3208 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
3209 once_value_4 = fra.me.REG[5];
3210 register_static_object(&once_value_4);
3211 } else fra.me.REG[5] = once_value_4;
3212 fra.me.REG[5] = fra.me.REG[5];
3213 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3214 fra.me.REG[5] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3215 fra.me.REG[6] = CALL_ni_metamodel___MMImportedCast___in_name(fra.me.REG[0])(fra.me.REG[0]);
3216 fra.me.REG[6] = CALL_ni_metamodel___MMType___assign_from_friendly(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2], fra.me.REG[6]);
3217 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3218 if (!once_value_5) {
3219 fra.me.REG[6] = BOX_NativeString(";\n");
3220 REGB0 = TAG_Int(2);
3221 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3222 once_value_5 = fra.me.REG[6];
3223 register_static_object(&once_value_5);
3224 } else fra.me.REG[6] = once_value_5;
3225 fra.me.REG[6] = fra.me.REG[6];
3226 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3227 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3228 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3229 /* ./native_interface//frontier.nit:399 */
3230 REGB0 = CALL_static_type___MMImportedCast___is_nullable_to_not_null(fra.me.REG[0])(fra.me.REG[0]);
3231 if (UNTAG_Bool(REGB0)) {
3232 /* ./native_interface//frontier.nit:400 */
3233 REGB0 = CALL_static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
3234 if (UNTAG_Bool(REGB0)) {
3235 /* ./native_interface//frontier.nit:401 */
3236 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3237 REGB0 = TAG_Int(3);
3238 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3239 if (!once_value_6) {
3240 fra.me.REG[6] = BOX_NativeString("if ( ! ISNULL(");
3241 REGB0 = TAG_Int(14);
3242 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3243 once_value_6 = fra.me.REG[6];
3244 register_static_object(&once_value_6);
3245 } else fra.me.REG[6] = once_value_6;
3246 fra.me.REG[6] = fra.me.REG[6];
3247 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3248 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3249 if (!once_value_7) {
3250 fra.me.REG[6] = BOX_NativeString(") ) return 0;\n");
3251 REGB0 = TAG_Int(14);
3252 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3253 once_value_7 = fra.me.REG[6];
3254 register_static_object(&once_value_7);
3255 } else fra.me.REG[6] = once_value_7;
3256 fra.me.REG[6] = fra.me.REG[6];
3257 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3258 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3259 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3260 } else {
3261 /* ./native_interface//frontier.nit:403 */
3262 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3263 REGB0 = TAG_Int(3);
3264 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
3265 if (!once_value_8) {
3266 fra.me.REG[6] = BOX_NativeString("if ( ISNULL(");
3267 REGB0 = TAG_Int(12);
3268 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3269 once_value_8 = fra.me.REG[6];
3270 register_static_object(&once_value_8);
3271 } else fra.me.REG[6] = once_value_8;
3272 fra.me.REG[6] = fra.me.REG[6];
3273 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3274 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3275 if (!once_value_9) {
3276 fra.me.REG[6] = BOX_NativeString(") ) return 0;\n");
3277 REGB0 = TAG_Int(14);
3278 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3279 once_value_9 = fra.me.REG[6];
3280 register_static_object(&once_value_9);
3281 } else fra.me.REG[6] = once_value_9;
3282 fra.me.REG[6] = fra.me.REG[6];
3283 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3284 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3285 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3286 }
3287 }
3288 /* ./native_interface//frontier.nit:407 */
3289 REGB0 = CALL_static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
3290 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3291 if (UNTAG_Bool(REGB0)) {
3292 /* ./native_interface//frontier.nit:408 */
3293 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3294 REGB0 = TAG_Int(3);
3295 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3296 if (!once_value_10) {
3297 fra.me.REG[6] = BOX_NativeString("if ( ! ");
3298 REGB0 = TAG_Int(7);
3299 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3300 once_value_10 = fra.me.REG[6];
3301 register_static_object(&once_value_10);
3302 } else fra.me.REG[6] = once_value_10;
3303 fra.me.REG[6] = fra.me.REG[6];
3304 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3305 fra.me.REG[0] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3306 fra.me.REG[2] = CALL_frontier___MMType___compile_condition_isa(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3307 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3308 if (!once_value_11) {
3309 fra.me.REG[2] = BOX_NativeString(" ) return 0;\n");
3310 REGB0 = TAG_Int(13);
3311 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3312 once_value_11 = fra.me.REG[2];
3313 register_static_object(&once_value_11);
3314 } else fra.me.REG[2] = once_value_11;
3315 fra.me.REG[2] = fra.me.REG[2];
3316 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3317 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3318 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3319 }
3320 /* ./native_interface//frontier.nit:411 */
3321 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3322 if (!once_value_12) {
3323 fra.me.REG[3] = BOX_NativeString("return 1;\n");
3324 REGB0 = TAG_Int(10);
3325 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3326 once_value_12 = fra.me.REG[3];
3327 register_static_object(&once_value_12);
3328 } else fra.me.REG[3] = once_value_12;
3329 fra.me.REG[3] = fra.me.REG[3];
3330 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3331 /* ./native_interface//frontier.nit:413 */
3332 goto label13;
3333 label13: while(0);
3334 stack_frame_head = fra.me.prev;
3335 return fra.me.REG[1];
3336 }
3337 void frontier___MMImportedCast___compile_check_is_not_null(val_t p0, val_t p1, val_t p2){
3338 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3339 val_t REGB0;
3340 val_t tmp;
3341 static val_t once_value_1; /* Once value */
3342 static val_t once_value_2; /* Once value */
3343 static val_t once_value_3; /* Once value */
3344 static val_t once_value_4; /* Once value */
3345 static val_t once_value_5; /* Once value */
3346 static val_t once_value_6; /* Once value */
3347 static val_t once_value_7; /* Once value */
3348 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3349 fra.me.file = LOCATE_frontier;
3350 fra.me.line = 416;
3351 fra.me.meth = LOCATE_frontier___MMImportedCast___compile_check_is_not_null;
3352 fra.me.has_broke = 0;
3353 fra.me.REG_size = 6;
3354 fra.me.REG[0] = NIT_NULL;
3355 fra.me.REG[1] = NIT_NULL;
3356 fra.me.REG[2] = NIT_NULL;
3357 fra.me.REG[3] = NIT_NULL;
3358 fra.me.REG[4] = NIT_NULL;
3359 fra.me.REG[5] = NIT_NULL;
3360 fra.me.REG[0] = p0;
3361 fra.me.REG[1] = p1;
3362 fra.me.REG[2] = p2;
3363 /* ./native_interface//frontier.nit:420 */
3364 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3365 REGB0 = TAG_Int(3);
3366 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3367 if (!once_value_1) {
3368 fra.me.REG[5] = BOX_NativeString("if ( ISNULL(");
3369 REGB0 = TAG_Int(12);
3370 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
3371 once_value_1 = fra.me.REG[5];
3372 register_static_object(&once_value_1);
3373 } else fra.me.REG[5] = once_value_1;
3374 fra.me.REG[5] = fra.me.REG[5];
3375 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3376 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3377 if (!once_value_2) {
3378 fra.me.REG[2] = BOX_NativeString(") ){");
3379 REGB0 = TAG_Int(4);
3380 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3381 once_value_2 = fra.me.REG[2];
3382 register_static_object(&once_value_2);
3383 } else fra.me.REG[2] = once_value_2;
3384 fra.me.REG[2] = fra.me.REG[2];
3385 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3386 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3387 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3388 /* ./native_interface//frontier.nit:421 */
3389 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3390 REGB0 = TAG_Int(5);
3391 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
3392 if (!once_value_3) {
3393 fra.me.REG[2] = BOX_NativeString("\tfprintf( stderr, \"Casting from ");
3394 REGB0 = TAG_Int(32);
3395 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3396 once_value_3 = fra.me.REG[2];
3397 register_static_object(&once_value_3);
3398 } else fra.me.REG[2] = once_value_3;
3399 fra.me.REG[2] = fra.me.REG[2];
3400 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3401 fra.me.REG[2] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3402 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3403 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3404 if (!once_value_4) {
3405 fra.me.REG[2] = BOX_NativeString(" to ");
3406 REGB0 = TAG_Int(4);
3407 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3408 once_value_4 = fra.me.REG[2];
3409 register_static_object(&once_value_4);
3410 } else fra.me.REG[2] = once_value_4;
3411 fra.me.REG[2] = fra.me.REG[2];
3412 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3413 fra.me.REG[0] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3414 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
3415 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
3416 if (!once_value_5) {
3417 fra.me.REG[0] = BOX_NativeString(" failed because value is null.\" );\n");
3418 REGB0 = TAG_Int(35);
3419 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
3420 once_value_5 = fra.me.REG[0];
3421 register_static_object(&once_value_5);
3422 } else fra.me.REG[0] = once_value_5;
3423 fra.me.REG[0] = fra.me.REG[0];
3424 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
3425 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3426 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3427 /* ./native_interface//frontier.nit:422 */
3428 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3429 if (!once_value_6) {
3430 fra.me.REG[4] = BOX_NativeString("\tabort();\n");
3431 REGB0 = TAG_Int(10);
3432 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3433 once_value_6 = fra.me.REG[4];
3434 register_static_object(&once_value_6);
3435 } else fra.me.REG[4] = once_value_6;
3436 fra.me.REG[4] = fra.me.REG[4];
3437 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3438 /* ./native_interface//frontier.nit:423 */
3439 fra.me.REG[1] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3440 if (!once_value_7) {
3441 fra.me.REG[4] = BOX_NativeString("}");
3442 REGB0 = TAG_Int(1);
3443 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3444 once_value_7 = fra.me.REG[4];
3445 register_static_object(&once_value_7);
3446 } else fra.me.REG[4] = once_value_7;
3447 fra.me.REG[4] = fra.me.REG[4];
3448 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3449 stack_frame_head = fra.me.prev;
3450 return;
3451 }
3452 val_t frontier___MMImportedCast_____eqeq(val_t p0, val_t p1){
3453 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3454 val_t REGB0;
3455 val_t REGB1;
3456 val_t tmp;
3457 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3458 fra.me.file = LOCATE_frontier;
3459 fra.me.line = 426;
3460 fra.me.meth = LOCATE_frontier___MMImportedCast_____eqeq;
3461 fra.me.has_broke = 0;
3462 fra.me.REG_size = 4;
3463 fra.me.REG[0] = NIT_NULL;
3464 fra.me.REG[1] = NIT_NULL;
3465 fra.me.REG[2] = NIT_NULL;
3466 fra.me.REG[3] = NIT_NULL;
3467 fra.me.REG[0] = p0;
3468 fra.me.REG[1] = p1;
3469 /* ./native_interface//frontier.nit:428 */
3470 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_MMImportedCast, ID_MMImportedCast)) /*cast MMImportedCast*/;
3471 if (UNTAG_Bool(REGB0)) {
3472 /* ./native_interface//frontier.nit:429 */
3473 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
3474 if (UNTAG_Bool(REGB0)) {
3475 nit_abort("Reciever is null", NULL, LOCATE_frontier, 429);
3476 }
3477 fra.me.REG[2] = CALL_static_type___MMImportedCast___from(fra.me.REG[1])(fra.me.REG[1]);
3478 fra.me.REG[3] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3479 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
3480 if (UNTAG_Bool(REGB0)) {
3481 } else {
3482 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3483 REGB0 = REGB1;
3484 }
3485 } else {
3486 /* ./native_interface//frontier.nit:428 */
3487 REGB1 = TAG_Bool(false);
3488 REGB0 = REGB1;
3489 }
3490 if (UNTAG_Bool(REGB0)) {
3491 /* ./native_interface//frontier.nit:429 */
3492 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
3493 if (UNTAG_Bool(REGB0)) {
3494 nit_abort("Reciever is null", NULL, LOCATE_frontier, 429);
3495 }
3496 fra.me.REG[1] = CALL_static_type___MMImportedCast___to(fra.me.REG[1])(fra.me.REG[1]);
3497 fra.me.REG[0] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3498 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
3499 if (UNTAG_Bool(REGB0)) {
3500 } else {
3501 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3502 REGB0 = REGB1;
3503 }
3504 } else {
3505 /* ./native_interface//frontier.nit:428 */
3506 REGB1 = TAG_Bool(false);
3507 REGB0 = REGB1;
3508 }
3509 goto label1;
3510 label1: while(0);
3511 stack_frame_head = fra.me.prev;
3512 return REGB0;
3513 }
3514 val_t frontier___MMImportedCast___hash(val_t p0){
3515 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3516 val_t REGB0;
3517 val_t REGB1;
3518 val_t tmp;
3519 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3520 fra.me.file = LOCATE_frontier;
3521 fra.me.line = 431;
3522 fra.me.meth = LOCATE_frontier___MMImportedCast___hash;
3523 fra.me.has_broke = 0;
3524 fra.me.REG_size = 2;
3525 fra.me.REG[0] = NIT_NULL;
3526 fra.me.REG[1] = NIT_NULL;
3527 fra.me.REG[0] = p0;
3528 /* ./native_interface//frontier.nit:433 */
3529 fra.me.REG[1] = CALL_static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3530 REGB0 = CALL_hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
3531 fra.me.REG[0] = CALL_static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3532 REGB1 = CALL_hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
3533 /* ./../lib/standard//kernel.nit:215 */
3534 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
3535 /* ./native_interface//frontier.nit:433 */
3536 goto label1;
3537 label1: while(0);
3538 stack_frame_head = fra.me.prev;
3539 return REGB1;
3540 }
3541 void frontier___MMType___compile_check_isa(val_t p0, val_t p1, val_t p2){
3542 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3543 val_t REGB0;
3544 val_t tmp;
3545 static val_t once_value_1; /* Once value */
3546 static val_t once_value_2; /* Once value */
3547 static val_t once_value_3; /* Once value */
3548 static val_t once_value_4; /* Once value */
3549 static val_t once_value_5; /* Once value */
3550 static val_t once_value_6; /* Once value */
3551 static val_t once_value_7; /* Once value */
3552 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3553 fra.me.file = LOCATE_frontier;
3554 fra.me.line = 438;
3555 fra.me.meth = LOCATE_frontier___MMType___compile_check_isa;
3556 fra.me.has_broke = 0;
3557 fra.me.REG_size = 6;
3558 fra.me.REG[0] = NIT_NULL;
3559 fra.me.REG[1] = NIT_NULL;
3560 fra.me.REG[2] = NIT_NULL;
3561 fra.me.REG[3] = NIT_NULL;
3562 fra.me.REG[4] = NIT_NULL;
3563 fra.me.REG[5] = NIT_NULL;
3564 fra.me.REG[0] = p0;
3565 fra.me.REG[1] = p1;
3566 fra.me.REG[2] = p2;
3567 /* ./native_interface//frontier.nit:444 */
3568 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3569 REGB0 = TAG_Int(3);
3570 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3571 if (!once_value_1) {
3572 fra.me.REG[5] = BOX_NativeString("if ( ! ");
3573 REGB0 = TAG_Int(7);
3574 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
3575 once_value_1 = fra.me.REG[5];
3576 register_static_object(&once_value_1);
3577 } else fra.me.REG[5] = once_value_1;
3578 fra.me.REG[5] = fra.me.REG[5];
3579 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3580 fra.me.REG[2] = CALL_frontier___MMType___compile_condition_isa(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3581 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3582 if (!once_value_2) {
3583 fra.me.REG[2] = BOX_NativeString(" ){");
3584 REGB0 = TAG_Int(3);
3585 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3586 once_value_2 = fra.me.REG[2];
3587 register_static_object(&once_value_2);
3588 } else fra.me.REG[2] = once_value_2;
3589 fra.me.REG[2] = fra.me.REG[2];
3590 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3591 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3592 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3593 /* ./native_interface//frontier.nit:445 */
3594 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3595 REGB0 = TAG_Int(5);
3596 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
3597 if (!once_value_3) {
3598 fra.me.REG[2] = BOX_NativeString("\tfprintf( stderr, \"Casting to ");
3599 REGB0 = TAG_Int(30);
3600 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3601 once_value_3 = fra.me.REG[2];
3602 register_static_object(&once_value_3);
3603 } else fra.me.REG[2] = once_value_3;
3604 fra.me.REG[2] = fra.me.REG[2];
3605 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3606 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
3607 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3608 if (!once_value_4) {
3609 fra.me.REG[2] = BOX_NativeString(" failed because value is not a ");
3610 REGB0 = TAG_Int(31);
3611 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3612 once_value_4 = fra.me.REG[2];
3613 register_static_object(&once_value_4);
3614 } else fra.me.REG[2] = once_value_4;
3615 fra.me.REG[2] = fra.me.REG[2];
3616 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3617 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
3618 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
3619 if (!once_value_5) {
3620 fra.me.REG[0] = BOX_NativeString(".\" );\n");
3621 REGB0 = TAG_Int(6);
3622 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
3623 once_value_5 = fra.me.REG[0];
3624 register_static_object(&once_value_5);
3625 } else fra.me.REG[0] = once_value_5;
3626 fra.me.REG[0] = fra.me.REG[0];
3627 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
3628 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3629 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3630 /* ./native_interface//frontier.nit:446 */
3631 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3632 if (!once_value_6) {
3633 fra.me.REG[4] = BOX_NativeString("\tabort();\n");
3634 REGB0 = TAG_Int(10);
3635 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3636 once_value_6 = fra.me.REG[4];
3637 register_static_object(&once_value_6);
3638 } else fra.me.REG[4] = once_value_6;
3639 fra.me.REG[4] = fra.me.REG[4];
3640 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3641 /* ./native_interface//frontier.nit:447 */
3642 fra.me.REG[1] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3643 if (!once_value_7) {
3644 fra.me.REG[4] = BOX_NativeString("}");
3645 REGB0 = TAG_Int(1);
3646 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3647 once_value_7 = fra.me.REG[4];
3648 register_static_object(&once_value_7);
3649 } else fra.me.REG[4] = once_value_7;
3650 fra.me.REG[4] = fra.me.REG[4];
3651 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3652 stack_frame_head = fra.me.prev;
3653 return;
3654 }
3655 val_t frontier___MMType___compile_condition_isa(val_t p0, val_t p1){
3656 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3657 val_t REGB0;
3658 val_t tmp;
3659 static val_t once_value_1; /* Once value */
3660 static val_t once_value_2; /* Once value */
3661 static val_t once_value_3; /* Once value */
3662 static val_t once_value_4; /* Once value */
3663 static val_t once_value_5; /* Once value */
3664 static val_t once_value_6; /* Once value */
3665 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3666 fra.me.file = LOCATE_frontier;
3667 fra.me.line = 450;
3668 fra.me.meth = LOCATE_frontier___MMType___compile_condition_isa;
3669 fra.me.has_broke = 0;
3670 fra.me.REG_size = 4;
3671 fra.me.REG[0] = NIT_NULL;
3672 fra.me.REG[1] = NIT_NULL;
3673 fra.me.REG[2] = NIT_NULL;
3674 fra.me.REG[3] = NIT_NULL;
3675 fra.me.REG[0] = p0;
3676 fra.me.REG[1] = p1;
3677 /* ./native_interface//frontier.nit:454 */
3678 REGB0 = TAG_Int(11);
3679 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
3680 if (!once_value_1) {
3681 fra.me.REG[3] = BOX_NativeString("( ISOBJ( ");
3682 REGB0 = TAG_Int(9);
3683 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3684 once_value_1 = fra.me.REG[3];
3685 register_static_object(&once_value_1);
3686 } else fra.me.REG[3] = once_value_1;
3687 fra.me.REG[3] = fra.me.REG[3];
3688 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3689 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3690 if (!once_value_2) {
3691 fra.me.REG[3] = BOX_NativeString(" ) ? OBJISA( ");
3692 REGB0 = TAG_Int(13);
3693 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3694 once_value_2 = fra.me.REG[3];
3695 register_static_object(&once_value_2);
3696 } else fra.me.REG[3] = once_value_2;
3697 fra.me.REG[3] = fra.me.REG[3];
3698 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3699 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3700 if (!once_value_3) {
3701 fra.me.REG[3] = BOX_NativeString(", ");
3702 REGB0 = TAG_Int(2);
3703 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3704 once_value_3 = fra.me.REG[3];
3705 register_static_object(&once_value_3);
3706 } else fra.me.REG[3] = once_value_3;
3707 fra.me.REG[3] = fra.me.REG[3];
3708 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3709 fra.me.REG[3] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
3710 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3711 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3712 if (!once_value_4) {
3713 fra.me.REG[3] = BOX_NativeString(" ): VALISA( ");
3714 REGB0 = TAG_Int(12);
3715 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3716 once_value_4 = fra.me.REG[3];
3717 register_static_object(&once_value_4);
3718 } else fra.me.REG[3] = once_value_4;
3719 fra.me.REG[3] = fra.me.REG[3];
3720 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3721 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3722 if (!once_value_5) {
3723 fra.me.REG[1] = BOX_NativeString(", ");
3724 REGB0 = TAG_Int(2);
3725 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
3726 once_value_5 = fra.me.REG[1];
3727 register_static_object(&once_value_5);
3728 } else fra.me.REG[1] = once_value_5;
3729 fra.me.REG[1] = fra.me.REG[1];
3730 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3731 fra.me.REG[0] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
3732 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
3733 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3734 if (!once_value_6) {
3735 fra.me.REG[0] = BOX_NativeString(" ) )");
3736 REGB0 = TAG_Int(4);
3737 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
3738 once_value_6 = fra.me.REG[0];
3739 register_static_object(&once_value_6);
3740 } else fra.me.REG[0] = once_value_6;
3741 fra.me.REG[0] = fra.me.REG[0];
3742 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3743 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3744 goto label7;
3745 label7: while(0);
3746 stack_frame_head = fra.me.prev;
3747 return fra.me.REG[2];
3748 }
3749 void frontier___MMType___compile_to_frontier(val_t p0, val_t p1){
3750 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3751 val_t REGB0;
3752 val_t REGB1;
3753 val_t tmp;
3754 static val_t once_value_1; /* Once value */
3755 static val_t once_value_2; /* Once value */
3756 static val_t once_value_3; /* Once value */
3757 static val_t once_value_4; /* Once value */
3758 static val_t once_value_5; /* Once value */
3759 static val_t once_value_6; /* Once value */
3760 static val_t once_value_7; /* Once value */
3761 static val_t once_value_8; /* Once value */
3762 static val_t once_value_9; /* Once value */
3763 static val_t once_value_10; /* Once value */
3764 static val_t once_value_11; /* Once value */
3765 static val_t once_value_12; /* Once value */
3766 static val_t once_value_13; /* Once value */
3767 static val_t once_value_14; /* Once value */
3768 static val_t once_value_15; /* Once value */
3769 static val_t once_value_16; /* Once value */
3770 static val_t once_value_17; /* Once value */
3771 static val_t once_value_18; /* Once value */
3772 static val_t once_value_19; /* Once value */
3773 static val_t once_value_20; /* Once value */
3774 static val_t once_value_21; /* Once value */
3775 static val_t once_value_22; /* Once value */
3776 static val_t once_value_23; /* Once value */
3777 static val_t once_value_24; /* Once value */
3778 static val_t once_value_25; /* Once value */
3779 static val_t once_value_26; /* Once value */
3780 static val_t once_value_27; /* Once value */
3781 static val_t once_value_28; /* Once value */
3782 static val_t once_value_29; /* Once value */
3783 static val_t once_value_30; /* Once value */
3784 static val_t once_value_31; /* Once value */
3785 static val_t once_value_32; /* Once value */
3786 static val_t once_value_33; /* Once value */
3787 static val_t once_value_34; /* Once value */
3788 static val_t once_value_35; /* Once value */
3789 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3790 fra.me.file = LOCATE_frontier;
3791 fra.me.line = 457;
3792 fra.me.meth = LOCATE_frontier___MMType___compile_to_frontier;
3793 fra.me.has_broke = 0;
3794 fra.me.REG_size = 7;
3795 fra.me.REG[0] = NIT_NULL;
3796 fra.me.REG[1] = NIT_NULL;
3797 fra.me.REG[2] = NIT_NULL;
3798 fra.me.REG[3] = NIT_NULL;
3799 fra.me.REG[4] = NIT_NULL;
3800 fra.me.REG[5] = NIT_NULL;
3801 fra.me.REG[6] = NIT_NULL;
3802 fra.me.REG[0] = p0;
3803 fra.me.REG[1] = p1;
3804 /* ./native_interface//frontier.nit:461 */
3805 fra.me.REG[2] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
3806 fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
3807 /* ./native_interface//frontier.nit:462 */
3808 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3809 if (UNTAG_Bool(REGB0)) {
3810 } else {
3811 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3812 if (UNTAG_Bool(REGB1)) {
3813 REGB1 = TAG_Bool(false);
3814 REGB0 = REGB1;
3815 } else {
3816 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3817 REGB0 = REGB1;
3818 }
3819 }
3820 if (UNTAG_Bool(REGB0)) {
3821 REGB0 = TAG_Bool(true);
3822 } else {
3823 REGB1 = CALL_static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
3824 REGB0 = REGB1;
3825 }
3826 if (UNTAG_Bool(REGB0)) {
3827 /* ./native_interface//frontier.nit:463 */
3828 fra.me.REG[2] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
3829 /* ./native_interface//frontier.nit:464 */
3830 REGB0 = TAG_Int(3);
3831 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
3832 if (!once_value_1) {
3833 fra.me.REG[4] = BOX_NativeString("");
3834 REGB0 = TAG_Int(0);
3835 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3836 once_value_1 = fra.me.REG[4];
3837 register_static_object(&once_value_1);
3838 } else fra.me.REG[4] = once_value_1;
3839 fra.me.REG[4] = fra.me.REG[4];
3840 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3841 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3842 fra.me.REG[4] = CALL_string___AbstractString___to_upper(fra.me.REG[4])(fra.me.REG[4]);
3843 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3844 if (!once_value_2) {
3845 fra.me.REG[4] = BOX_NativeString("_TYPE");
3846 REGB0 = TAG_Int(5);
3847 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3848 once_value_2 = fra.me.REG[4];
3849 register_static_object(&once_value_2);
3850 } else fra.me.REG[4] = once_value_2;
3851 fra.me.REG[4] = fra.me.REG[4];
3852 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3853 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3854 /* ./native_interface//frontier.nit:467 */
3855 fra.me.REG[4] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
3856 REGB0 = TAG_Int(3);
3857 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
3858 if (!once_value_3) {
3859 fra.me.REG[6] = BOX_NativeString("#ifndef ");
3860 REGB0 = TAG_Int(8);
3861 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3862 once_value_3 = fra.me.REG[6];
3863 register_static_object(&once_value_3);
3864 } else fra.me.REG[6] = once_value_3;
3865 fra.me.REG[6] = fra.me.REG[6];
3866 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3867 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3868 if (!once_value_4) {
3869 fra.me.REG[6] = BOX_NativeString("\n");
3870 REGB0 = TAG_Int(1);
3871 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3872 once_value_4 = fra.me.REG[6];
3873 register_static_object(&once_value_4);
3874 } else fra.me.REG[6] = once_value_4;
3875 fra.me.REG[6] = fra.me.REG[6];
3876 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3877 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
3878 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3879 /* ./native_interface//frontier.nit:468 */
3880 fra.me.REG[5] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
3881 REGB0 = TAG_Int(3);
3882 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3883 if (!once_value_5) {
3884 fra.me.REG[6] = BOX_NativeString("#define ");
3885 REGB0 = TAG_Int(8);
3886 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3887 once_value_5 = fra.me.REG[6];
3888 register_static_object(&once_value_5);
3889 } else fra.me.REG[6] = once_value_5;
3890 fra.me.REG[6] = fra.me.REG[6];
3891 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3892 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3893 if (!once_value_6) {
3894 fra.me.REG[3] = BOX_NativeString("\n");
3895 REGB0 = TAG_Int(1);
3896 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3897 once_value_6 = fra.me.REG[3];
3898 register_static_object(&once_value_6);
3899 } else fra.me.REG[3] = once_value_6;
3900 fra.me.REG[3] = fra.me.REG[3];
3901 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3902 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3903 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3904 /* ./native_interface//frontier.nit:469 */
3905 fra.me.REG[4] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
3906 REGB0 = TAG_Int(3);
3907 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
3908 if (!once_value_7) {
3909 fra.me.REG[3] = BOX_NativeString("typedef struct s_");
3910 REGB0 = TAG_Int(17);
3911 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3912 once_value_7 = fra.me.REG[3];
3913 register_static_object(&once_value_7);
3914 } else fra.me.REG[3] = once_value_7;
3915 fra.me.REG[3] = fra.me.REG[3];
3916 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3917 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
3918 if (!once_value_8) {
3919 fra.me.REG[3] = BOX_NativeString("{\n");
3920 REGB0 = TAG_Int(2);
3921 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3922 once_value_8 = fra.me.REG[3];
3923 register_static_object(&once_value_8);
3924 } else fra.me.REG[3] = once_value_8;
3925 fra.me.REG[3] = fra.me.REG[3];
3926 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3927 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
3928 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3929 /* ./native_interface//frontier.nit:470 */
3930 fra.me.REG[5] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
3931 if (!once_value_9) {
3932 fra.me.REG[4] = BOX_NativeString("\tval_t v;\n");
3933 REGB0 = TAG_Int(10);
3934 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3935 once_value_9 = fra.me.REG[4];
3936 register_static_object(&once_value_9);
3937 } else fra.me.REG[4] = once_value_9;
3938 fra.me.REG[4] = fra.me.REG[4];
3939 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3940 /* ./native_interface//frontier.nit:471 */
3941 fra.me.REG[4] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
3942 REGB0 = TAG_Int(3);
3943 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
3944 if (!once_value_10) {
3945 fra.me.REG[3] = BOX_NativeString("} ");
3946 REGB0 = TAG_Int(2);
3947 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3948 once_value_10 = fra.me.REG[3];
3949 register_static_object(&once_value_10);
3950 } else fra.me.REG[3] = once_value_10;
3951 fra.me.REG[3] = fra.me.REG[3];
3952 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3953 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
3954 if (!once_value_11) {
3955 fra.me.REG[3] = BOX_NativeString(";\n");
3956 REGB0 = TAG_Int(2);
3957 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3958 once_value_11 = fra.me.REG[3];
3959 register_static_object(&once_value_11);
3960 } else fra.me.REG[3] = once_value_11;
3961 fra.me.REG[3] = fra.me.REG[3];
3962 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3963 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
3964 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3965 /* ./native_interface//frontier.nit:472 */
3966 fra.me.REG[5] = CALL_frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
3967 if (!once_value_12) {
3968 fra.me.REG[4] = BOX_NativeString("#endif\n\n");
3969 REGB0 = TAG_Int(8);
3970 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3971 once_value_12 = fra.me.REG[4];
3972 register_static_object(&once_value_12);
3973 } else fra.me.REG[4] = once_value_12;
3974 fra.me.REG[4] = fra.me.REG[4];
3975 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3976 /* ./native_interface//frontier.nit:475 */
3977 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
3978 if (UNTAG_Bool(REGB0)) {
3979 /* ./native_interface//frontier.nit:476 */
3980 REGB0 = TAG_Int(3);
3981 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3982 if (!once_value_13) {
3983 fra.me.REG[5] = BOX_NativeString("null_");
3984 REGB0 = TAG_Int(5);
3985 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
3986 once_value_13 = fra.me.REG[5];
3987 register_static_object(&once_value_13);
3988 } else fra.me.REG[5] = once_value_13;
3989 fra.me.REG[5] = fra.me.REG[5];
3990 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3991 fra.me.REG[5] = CALL_static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
3992 fra.me.REG[5] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5]);
3993 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3994 if (!once_value_14) {
3995 fra.me.REG[5] = BOX_NativeString("");
3996 REGB0 = TAG_Int(0);
3997 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
3998 once_value_14 = fra.me.REG[5];
3999 register_static_object(&once_value_14);
4000 } else fra.me.REG[5] = once_value_14;
4001 fra.me.REG[5] = fra.me.REG[5];
4002 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4003 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4004 /* ./native_interface//frontier.nit:477 */
4005 REGB0 = TAG_Int(5);
4006 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
4007 if (!once_value_15) {
4008 fra.me.REG[3] = BOX_NativeString("");
4009 REGB0 = TAG_Int(0);
4010 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
4011 once_value_15 = fra.me.REG[3];
4012 register_static_object(&once_value_15);
4013 } else fra.me.REG[3] = once_value_15;
4014 fra.me.REG[3] = fra.me.REG[3];
4015 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4016 fra.me.REG[0] = CALL_static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
4017 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
4018 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4019 if (!once_value_16) {
4020 fra.me.REG[0] = BOX_NativeString("_");
4021 REGB0 = TAG_Int(1);
4022 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4023 once_value_16 = fra.me.REG[0];
4024 register_static_object(&once_value_16);
4025 } else fra.me.REG[0] = once_value_16;
4026 fra.me.REG[0] = fra.me.REG[0];
4027 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4028 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4029 if (!once_value_17) {
4030 fra.me.REG[0] = BOX_NativeString("");
4031 REGB0 = TAG_Int(0);
4032 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4033 once_value_17 = fra.me.REG[0];
4034 register_static_object(&once_value_17);
4035 } else fra.me.REG[0] = once_value_17;
4036 fra.me.REG[0] = fra.me.REG[0];
4037 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4038 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4039 /* ./native_interface//frontier.nit:479 */
4040 fra.me.REG[0] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4041 REGB0 = TAG_Int(5);
4042 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4043 if (!once_value_18) {
4044 fra.me.REG[6] = BOX_NativeString("");
4045 REGB0 = TAG_Int(0);
4046 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4047 once_value_18 = fra.me.REG[6];
4048 register_static_object(&once_value_18);
4049 } else fra.me.REG[6] = once_value_18;
4050 fra.me.REG[6] = fra.me.REG[6];
4051 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4052 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4053 if (!once_value_19) {
4054 fra.me.REG[6] = BOX_NativeString(" ");
4055 REGB0 = TAG_Int(1);
4056 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4057 once_value_19 = fra.me.REG[6];
4058 register_static_object(&once_value_19);
4059 } else fra.me.REG[6] = once_value_19;
4060 fra.me.REG[6] = fra.me.REG[6];
4061 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4062 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4063 if (!once_value_20) {
4064 fra.me.REG[6] = BOX_NativeString("();\n");
4065 REGB0 = TAG_Int(4);
4066 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4067 once_value_20 = fra.me.REG[6];
4068 register_static_object(&once_value_20);
4069 } else fra.me.REG[6] = once_value_20;
4070 fra.me.REG[6] = fra.me.REG[6];
4071 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4072 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4073 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
4074 /* ./native_interface//frontier.nit:481 */
4075 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4076 REGB0 = TAG_Int(3);
4077 fra.me.REG[0] = NEW_Array_array___Array___with_capacity(REGB0);
4078 if (!once_value_21) {
4079 fra.me.REG[6] = BOX_NativeString("#ifndef ");
4080 REGB0 = TAG_Int(8);
4081 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4082 once_value_21 = fra.me.REG[6];
4083 register_static_object(&once_value_21);
4084 } else fra.me.REG[6] = once_value_21;
4085 fra.me.REG[6] = fra.me.REG[6];
4086 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
4087 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
4088 if (!once_value_22) {
4089 fra.me.REG[6] = BOX_NativeString("\n");
4090 REGB0 = TAG_Int(1);
4091 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4092 once_value_22 = fra.me.REG[6];
4093 register_static_object(&once_value_22);
4094 } else fra.me.REG[6] = once_value_22;
4095 fra.me.REG[6] = fra.me.REG[6];
4096 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
4097 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
4098 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4099 /* ./native_interface//frontier.nit:482 */
4100 fra.me.REG[0] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4101 REGB0 = TAG_Int(5);
4102 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4103 if (!once_value_23) {
4104 fra.me.REG[6] = BOX_NativeString("#define ");
4105 REGB0 = TAG_Int(8);
4106 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4107 once_value_23 = fra.me.REG[6];
4108 register_static_object(&once_value_23);
4109 } else fra.me.REG[6] = once_value_23;
4110 fra.me.REG[6] = fra.me.REG[6];
4111 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4112 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4113 if (!once_value_24) {
4114 fra.me.REG[4] = BOX_NativeString(" ");
4115 REGB0 = TAG_Int(1);
4116 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4117 once_value_24 = fra.me.REG[4];
4118 register_static_object(&once_value_24);
4119 } else fra.me.REG[4] = once_value_24;
4120 fra.me.REG[4] = fra.me.REG[4];
4121 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4122 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4123 if (!once_value_25) {
4124 fra.me.REG[4] = BOX_NativeString("\n");
4125 REGB0 = TAG_Int(1);
4126 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4127 once_value_25 = fra.me.REG[4];
4128 register_static_object(&once_value_25);
4129 } else fra.me.REG[4] = once_value_25;
4130 fra.me.REG[4] = fra.me.REG[4];
4131 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4132 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4133 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
4134 /* ./native_interface//frontier.nit:483 */
4135 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4136 if (!once_value_26) {
4137 fra.me.REG[0] = BOX_NativeString("#endif\n\n");
4138 REGB0 = TAG_Int(8);
4139 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4140 once_value_26 = fra.me.REG[0];
4141 register_static_object(&once_value_26);
4142 } else fra.me.REG[0] = once_value_26;
4143 fra.me.REG[0] = fra.me.REG[0];
4144 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4145 /* ./native_interface//frontier.nit:485 */
4146 fra.me.REG[0] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4147 REGB0 = TAG_Int(5);
4148 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4149 if (!once_value_27) {
4150 fra.me.REG[4] = BOX_NativeString("");
4151 REGB0 = TAG_Int(0);
4152 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4153 once_value_27 = fra.me.REG[4];
4154 register_static_object(&once_value_27);
4155 } else fra.me.REG[4] = once_value_27;
4156 fra.me.REG[4] = fra.me.REG[4];
4157 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4158 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4159 if (!once_value_28) {
4160 fra.me.REG[4] = BOX_NativeString(" ");
4161 REGB0 = TAG_Int(1);
4162 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4163 once_value_28 = fra.me.REG[4];
4164 register_static_object(&once_value_28);
4165 } else fra.me.REG[4] = once_value_28;
4166 fra.me.REG[4] = fra.me.REG[4];
4167 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4168 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4169 if (!once_value_29) {
4170 fra.me.REG[5] = BOX_NativeString("()\n");
4171 REGB0 = TAG_Int(3);
4172 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4173 once_value_29 = fra.me.REG[5];
4174 register_static_object(&once_value_29);
4175 } else fra.me.REG[5] = once_value_29;
4176 fra.me.REG[5] = fra.me.REG[5];
4177 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4178 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4179 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
4180 /* ./native_interface//frontier.nit:486 */
4181 fra.me.REG[3] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4182 if (!once_value_30) {
4183 fra.me.REG[0] = BOX_NativeString("{\n");
4184 REGB0 = TAG_Int(2);
4185 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4186 once_value_30 = fra.me.REG[0];
4187 register_static_object(&once_value_30);
4188 } else fra.me.REG[0] = once_value_30;
4189 fra.me.REG[0] = fra.me.REG[0];
4190 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4191 /* ./native_interface//frontier.nit:487 */
4192 fra.me.REG[0] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4193 REGB0 = TAG_Int(3);
4194 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4195 if (!once_value_31) {
4196 fra.me.REG[5] = BOX_NativeString("\t");
4197 REGB0 = TAG_Int(1);
4198 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4199 once_value_31 = fra.me.REG[5];
4200 register_static_object(&once_value_31);
4201 } else fra.me.REG[5] = once_value_31;
4202 fra.me.REG[5] = fra.me.REG[5];
4203 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4204 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4205 if (!once_value_32) {
4206 fra.me.REG[2] = BOX_NativeString(" n;\n");
4207 REGB0 = TAG_Int(4);
4208 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
4209 once_value_32 = fra.me.REG[2];
4210 register_static_object(&once_value_32);
4211 } else fra.me.REG[2] = once_value_32;
4212 fra.me.REG[2] = fra.me.REG[2];
4213 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4214 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4215 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
4216 /* ./native_interface//frontier.nit:488 */
4217 fra.me.REG[3] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4218 if (!once_value_33) {
4219 fra.me.REG[0] = BOX_NativeString("\tn.v = NIT_NULL;\n");
4220 REGB0 = TAG_Int(17);
4221 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4222 once_value_33 = fra.me.REG[0];
4223 register_static_object(&once_value_33);
4224 } else fra.me.REG[0] = once_value_33;
4225 fra.me.REG[0] = fra.me.REG[0];
4226 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4227 /* ./native_interface//frontier.nit:489 */
4228 fra.me.REG[0] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4229 if (!once_value_34) {
4230 fra.me.REG[3] = BOX_NativeString("\treturn n;\n");
4231 REGB0 = TAG_Int(11);
4232 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
4233 once_value_34 = fra.me.REG[3];
4234 register_static_object(&once_value_34);
4235 } else fra.me.REG[3] = once_value_34;
4236 fra.me.REG[3] = fra.me.REG[3];
4237 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
4238 /* ./native_interface//frontier.nit:490 */
4239 fra.me.REG[1] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4240 if (!once_value_35) {
4241 fra.me.REG[3] = BOX_NativeString("}\n\n");
4242 REGB0 = TAG_Int(3);
4243 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
4244 once_value_35 = fra.me.REG[3];
4245 register_static_object(&once_value_35);
4246 } else fra.me.REG[3] = once_value_35;
4247 fra.me.REG[3] = fra.me.REG[3];
4248 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4249 }
4250 }
4251 stack_frame_head = fra.me.prev;
4252 return;
4253 }
4254 void frontier___MMExplicitImport___compile_friendly_to_frontier(val_t p0, val_t p1){
4255 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
4256 val_t REGB0;
4257 val_t REGB1;
4258 val_t tmp;
4259 static val_t once_value_1; /* Once value */
4260 static val_t once_value_2; /* Once value */
4261 static val_t once_value_3; /* Once value */
4262 static val_t once_value_4; /* Once value */
4263 static val_t once_value_5; /* Once value */
4264 static val_t once_value_6; /* Once value */
4265 static val_t once_value_7; /* Once value */
4266 static val_t once_value_8; /* Once value */
4267 static val_t once_value_9; /* Once value */
4268 static val_t once_value_10; /* Once value */
4269 static val_t once_value_11; /* Once value */
4270 static val_t once_value_12; /* Once value */
4271 static val_t once_value_13; /* Once value */
4272 static val_t once_value_14; /* Once value */
4273 static val_t once_value_15; /* Once value */
4274 static val_t once_value_16; /* Once value */
4275 static val_t once_value_17; /* Once value */
4276 static val_t once_value_18; /* Once value */
4277 static val_t once_value_19; /* Once value */
4278 static val_t once_value_20; /* Once value */
4279 static val_t once_value_21; /* Once value */
4280 static val_t once_value_22; /* Once value */
4281 static val_t once_value_23; /* Once value */
4282 static val_t once_value_24; /* Once value */
4283 static val_t once_value_26; /* Once value */
4284 static val_t once_value_27; /* Once value */
4285 static val_t once_value_28; /* Once value */
4286 static val_t once_value_29; /* Once value */
4287 static val_t once_value_30; /* Once value */
4288 static val_t once_value_31; /* Once value */
4289 static val_t once_value_32; /* Once value */
4290 static val_t once_value_33; /* Once value */
4291 static val_t once_value_34; /* Once value */
4292 static val_t once_value_35; /* Once value */
4293 static val_t once_value_36; /* Once value */
4294 static val_t once_value_37; /* Once value */
4295 static val_t once_value_38; /* Once value */
4296 static val_t once_value_39; /* Once value */
4297 static val_t once_value_40; /* Once value */
4298 static val_t once_value_41; /* Once value */
4299 static val_t once_value_42; /* Once value */
4300 static val_t once_value_43; /* Once value */
4301 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4302 fra.me.file = LOCATE_frontier;
4303 fra.me.line = 497;
4304 fra.me.meth = LOCATE_frontier___MMExplicitImport___compile_friendly_to_frontier;
4305 fra.me.has_broke = 0;
4306 fra.me.REG_size = 11;
4307 fra.me.REG[0] = NIT_NULL;
4308 fra.me.REG[1] = NIT_NULL;
4309 fra.me.REG[2] = NIT_NULL;
4310 fra.me.REG[3] = NIT_NULL;
4311 fra.me.REG[4] = NIT_NULL;
4312 fra.me.REG[5] = NIT_NULL;
4313 fra.me.REG[6] = NIT_NULL;
4314 fra.me.REG[7] = NIT_NULL;
4315 fra.me.REG[8] = NIT_NULL;
4316 fra.me.REG[9] = NIT_NULL;
4317 fra.me.REG[10] = NIT_NULL;
4318 fra.me.REG[0] = p0;
4319 fra.me.REG[1] = p1;
4320 /* ./native_interface//frontier.nit:500 */
4321 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4322 REGB0 = TAG_Int(3);
4323 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4324 if (!once_value_1) {
4325 fra.me.REG[4] = BOX_NativeString("/* friendly for ");
4326 REGB0 = TAG_Int(16);
4327 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4328 once_value_1 = fra.me.REG[4];
4329 register_static_object(&once_value_1);
4330 } else fra.me.REG[4] = once_value_1;
4331 fra.me.REG[4] = fra.me.REG[4];
4332 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4333 fra.me.REG[4] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4334 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
4335 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4336 if (!once_value_2) {
4337 fra.me.REG[4] = BOX_NativeString(" */\n");
4338 REGB0 = TAG_Int(4);
4339 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4340 once_value_2 = fra.me.REG[4];
4341 register_static_object(&once_value_2);
4342 } else fra.me.REG[4] = once_value_2;
4343 fra.me.REG[4] = fra.me.REG[4];
4344 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4345 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4346 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4347 /* ./native_interface//frontier.nit:501 */
4348 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4349 REGB0 = TAG_Int(3);
4350 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4351 if (!once_value_3) {
4352 fra.me.REG[4] = BOX_NativeString("");
4353 REGB0 = TAG_Int(0);
4354 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4355 once_value_3 = fra.me.REG[4];
4356 register_static_object(&once_value_3);
4357 } else fra.me.REG[4] = once_value_3;
4358 fra.me.REG[4] = fra.me.REG[4];
4359 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4360 fra.me.REG[4] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4361 fra.me.REG[5] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4362 fra.me.REG[6] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
4363 fra.me.REG[6] = CALL_ni_metamodel___MMMethod___frontier_csignature_from(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
4364 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
4365 if (!once_value_4) {
4366 fra.me.REG[6] = BOX_NativeString(";\n");
4367 REGB0 = TAG_Int(2);
4368 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4369 once_value_4 = fra.me.REG[6];
4370 register_static_object(&once_value_4);
4371 } else fra.me.REG[6] = once_value_4;
4372 fra.me.REG[6] = fra.me.REG[6];
4373 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
4374 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4375 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4376 /* ./native_interface//frontier.nit:505 */
4377 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4378 REGB0 = TAG_Int(3);
4379 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4380 if (!once_value_5) {
4381 fra.me.REG[6] = BOX_NativeString("#ifndef ");
4382 REGB0 = TAG_Int(8);
4383 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4384 once_value_5 = fra.me.REG[6];
4385 register_static_object(&once_value_5);
4386 } else fra.me.REG[6] = once_value_5;
4387 fra.me.REG[6] = fra.me.REG[6];
4388 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4389 fra.me.REG[6] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4390 fra.me.REG[5] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
4391 fra.me.REG[5] = CALL_mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4392 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4393 if (!once_value_6) {
4394 fra.me.REG[5] = BOX_NativeString("\n");
4395 REGB0 = TAG_Int(1);
4396 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4397 once_value_6 = fra.me.REG[5];
4398 register_static_object(&once_value_6);
4399 } else fra.me.REG[5] = once_value_6;
4400 fra.me.REG[5] = fra.me.REG[5];
4401 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4402 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4403 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4404 /* ./native_interface//frontier.nit:506 */
4405 fra.me.REG[3] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4406 REGB0 = TAG_Int(5);
4407 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4408 if (!once_value_7) {
4409 fra.me.REG[5] = BOX_NativeString("#define ");
4410 REGB0 = TAG_Int(8);
4411 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4412 once_value_7 = fra.me.REG[5];
4413 register_static_object(&once_value_7);
4414 } else fra.me.REG[5] = once_value_7;
4415 fra.me.REG[5] = fra.me.REG[5];
4416 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
4417 fra.me.REG[5] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4418 fra.me.REG[6] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
4419 fra.me.REG[6] = CALL_mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4420 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
4421 if (!once_value_8) {
4422 fra.me.REG[6] = BOX_NativeString(" ");
4423 REGB0 = TAG_Int(1);
4424 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4425 once_value_8 = fra.me.REG[6];
4426 register_static_object(&once_value_8);
4427 } else fra.me.REG[6] = once_value_8;
4428 fra.me.REG[6] = fra.me.REG[6];
4429 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
4430 fra.me.REG[6] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4431 fra.me.REG[5] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4432 fra.me.REG[4] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
4433 fra.me.REG[4] = CALL_ni_metamodel___MMMethod___local_friendly_name_from(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4]);
4434 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4435 if (!once_value_9) {
4436 fra.me.REG[4] = BOX_NativeString("\n");
4437 REGB0 = TAG_Int(1);
4438 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4439 once_value_9 = fra.me.REG[4];
4440 register_static_object(&once_value_9);
4441 } else fra.me.REG[4] = once_value_9;
4442 fra.me.REG[4] = fra.me.REG[4];
4443 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4444 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4445 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4446 /* ./native_interface//frontier.nit:507 */
4447 fra.me.REG[2] = CALL_frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
4448 if (!once_value_10) {
4449 fra.me.REG[3] = BOX_NativeString("#endif\n");
4450 REGB0 = TAG_Int(7);
4451 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
4452 once_value_10 = fra.me.REG[3];
4453 register_static_object(&once_value_10);
4454 } else fra.me.REG[3] = once_value_10;
4455 fra.me.REG[3] = fra.me.REG[3];
4456 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4457 /* ./native_interface//frontier.nit:510 */
4458 fra.me.REG[3] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4459 REGB0 = TAG_Int(3);
4460 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4461 if (!once_value_11) {
4462 fra.me.REG[4] = BOX_NativeString("/* friendly for ");
4463 REGB0 = TAG_Int(16);
4464 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4465 once_value_11 = fra.me.REG[4];
4466 register_static_object(&once_value_11);
4467 } else fra.me.REG[4] = once_value_11;
4468 fra.me.REG[4] = fra.me.REG[4];
4469 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4470 fra.me.REG[4] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4471 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
4472 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4473 if (!once_value_12) {
4474 fra.me.REG[4] = BOX_NativeString(" */\n");
4475 REGB0 = TAG_Int(4);
4476 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
4477 once_value_12 = fra.me.REG[4];
4478 register_static_object(&once_value_12);
4479 } else fra.me.REG[4] = once_value_12;
4480 fra.me.REG[4] = fra.me.REG[4];
4481 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4482 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4483 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4484 /* ./native_interface//frontier.nit:512 */
4485 fra.me.REG[2] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4486 fra.me.REG[3] = CALL_frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4487 fra.me.REG[4] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
4488 fra.me.REG[4] = CALL_ni_metamodel___MMMethod___frontier_csignature_from(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
4489 fra.me.REG[4] = NEW_FunctionCompiler_ni_tools___FunctionCompiler___init(fra.me.REG[4]);
4490 /* ./native_interface//frontier.nit:515 */
4491 fra.me.REG[3] = NEW_Array_array___Array___init();
4492 /* ./native_interface//frontier.nit:518 */
4493 fra.me.REG[2] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4494 REGB0 = CALL_syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
4495 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4496 if (UNTAG_Bool(REGB0)) {
4497 /* ./native_interface//frontier.nit:519 */
4498 if (!once_value_13) {
4499 fra.me.REG[2] = BOX_NativeString("recv___nit");
4500 REGB0 = TAG_Int(10);
4501 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
4502 once_value_13 = fra.me.REG[2];
4503 register_static_object(&once_value_13);
4504 } else fra.me.REG[2] = once_value_13;
4505 fra.me.REG[2] = fra.me.REG[2];
4506 /* ./native_interface//frontier.nit:520 */
4507 fra.me.REG[5] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
4508 REGB0 = TAG_Int(3);
4509 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
4510 if (!once_value_14) {
4511 fra.me.REG[7] = BOX_NativeString("val_t ");
4512 REGB0 = TAG_Int(6);
4513 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4514 once_value_14 = fra.me.REG[7];
4515 register_static_object(&once_value_14);
4516 } else fra.me.REG[7] = once_value_14;
4517 fra.me.REG[7] = fra.me.REG[7];
4518 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4519 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
4520 if (!once_value_15) {
4521 fra.me.REG[7] = BOX_NativeString(";\n");
4522 REGB0 = TAG_Int(2);
4523 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4524 once_value_15 = fra.me.REG[7];
4525 register_static_object(&once_value_15);
4526 } else fra.me.REG[7] = once_value_15;
4527 fra.me.REG[7] = fra.me.REG[7];
4528 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4529 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4530 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4531 /* ./native_interface//frontier.nit:521 */
4532 fra.me.REG[6] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
4533 REGB0 = TAG_Int(3);
4534 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
4535 if (!once_value_16) {
4536 fra.me.REG[7] = BOX_NativeString("");
4537 REGB0 = TAG_Int(0);
4538 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4539 once_value_16 = fra.me.REG[7];
4540 register_static_object(&once_value_16);
4541 } else fra.me.REG[7] = once_value_16;
4542 fra.me.REG[7] = fra.me.REG[7];
4543 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
4544 fra.me.REG[7] = CALL_static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
4545 fra.me.REG[7] = CALL_static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
4546 if (!once_value_17) {
4547 fra.me.REG[8] = BOX_NativeString("recv");
4548 REGB0 = TAG_Int(4);
4549 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
4550 once_value_17 = fra.me.REG[8];
4551 register_static_object(&once_value_17);
4552 } else fra.me.REG[8] = once_value_17;
4553 fra.me.REG[8] = fra.me.REG[8];
4554 fra.me.REG[8] = CALL_ni_metamodel___MMType___assign_from_friendly(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2], fra.me.REG[8]);
4555 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
4556 if (!once_value_18) {
4557 fra.me.REG[8] = BOX_NativeString(";\n");
4558 REGB0 = TAG_Int(2);
4559 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
4560 once_value_18 = fra.me.REG[8];
4561 register_static_object(&once_value_18);
4562 } else fra.me.REG[8] = once_value_18;
4563 fra.me.REG[8] = fra.me.REG[8];
4564 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
4565 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4566 CALL_compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4567 /* ./native_interface//frontier.nit:522 */
4568 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4569 }
4570 /* ./native_interface//frontier.nit:525 */
4571 fra.me.REG[2] = CALL_static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
4572 fra.me.REG[2] = CALL_static_type___MMSignature___params(fra.me.REG[2])(fra.me.REG[2]);
4573 /* ./../lib/standard//collection//array.nit:234 */
4574 REGB0 = TAG_Int(0);
4575 /* ./../lib/standard//collection//array.nit:235 */
4576 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4577 if (UNTAG_Bool(REGB1)) {
4578 } else {
4579 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
4580 }
4581 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
4582 /* ./../lib/standard//collection//array.nit:236 */
4583 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[2]);
4584 /* ./../lib/standard//collection//array.nit:237 */
4585 while(1) {
4586 /* ./../lib/standard//collection//array.nit:23 */
4587 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4588 if (UNTAG_Bool(REGB1)) {
4589 } else {
4590 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
4591 }
4592 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
4593 /* ./../lib/standard//kernel.nit:212 */
4594 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4595 /* ./../lib/standard//collection//array.nit:237 */
4596 if (UNTAG_Bool(REGB1)) {
4597 /* ./../lib/standard//collection//array.nit:238 */
4598 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4599 if (UNTAG_Bool(REGB1)) {
4600 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
4601 }
4602 /* ./../lib/standard//collection//array.nit:654 */
4603 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
4604 /* ./native_interface//frontier.nit:526 */
4605 REGB1 = TAG_Int(3);
4606 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB1);
4607 if (!once_value_19) {
4608 fra.me.REG[7] = BOX_NativeString("");
4609 REGB1 = TAG_Int(0);
4610 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB1);
4611 once_value_19 = fra.me.REG[7];
4612 register_static_object(&once_value_19);
4613 } else fra.me.REG[7] = once_value_19;
4614 fra.me.REG[7] = fra.me.REG[7];
4615 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4616 fra.me.REG[7] = CALL_static_type___MMParam___name(fra.me.REG[6])(fra.me.REG[6]);
4617 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
4618 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4619 if (!once_value_20) {
4620 fra.me.REG[7] = BOX_NativeString("___nit");
4621 REGB1 = TAG_Int(6);
4622 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB1);
4623 once_value_20 = fra.me.REG[7];
4624 register_static_object(&once_value_20);
4625 } else fra.me.REG[7] = once_value_20;
4626 fra.me.REG[7] = fra.me.REG[7];
4627 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4628 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
4629 /* ./native_interface//frontier.nit:527 */
4630 fra.me.REG[7] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
4631 REGB1 = TAG_Int(3);
4632 fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB1);
4633 if (!once_value_21) {
4634 fra.me.REG[10] = BOX_NativeString("val_t ");
4635 REGB1 = TAG_Int(6);
4636 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
4637 once_value_21 = fra.me.REG[10];
4638 register_static_object(&once_value_21);
4639 } else fra.me.REG[10] = once_value_21;
4640 fra.me.REG[10] = fra.me.REG[10];
4641 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
4642 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
4643 if (!once_value_22) {
4644 fra.me.REG[10] = BOX_NativeString(";\n");
4645 REGB1 = TAG_Int(2);
4646 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
4647 once_value_22 = fra.me.REG[10];
4648 register_static_object(&once_value_22);
4649 } else fra.me.REG[10] = once_value_22;
4650 fra.me.REG[10] = fra.me.REG[10];
4651 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
4652 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
4653 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
4654 /* ./native_interface//frontier.nit:528 */
4655 fra.me.REG[9] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
4656 REGB1 = TAG_Int(3);
4657 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB1);
4658 if (!once_value_23) {
4659 fra.me.REG[10] = BOX_NativeString("");
4660 REGB1 = TAG_Int(0);
4661 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
4662 once_value_23 = fra.me.REG[10];
4663 register_static_object(&once_value_23);
4664 } else fra.me.REG[10] = once_value_23;
4665 fra.me.REG[10] = fra.me.REG[10];
4666 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
4667 fra.me.REG[10] = CALL_static_type___MMParam___mmtype(fra.me.REG[6])(fra.me.REG[6]);
4668 fra.me.REG[6] = CALL_static_type___MMParam___name(fra.me.REG[6])(fra.me.REG[6]);
4669 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4670 fra.me.REG[6] = CALL_ni_metamodel___MMType___assign_from_friendly(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8], fra.me.REG[6]);
4671 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
4672 if (!once_value_24) {
4673 fra.me.REG[6] = BOX_NativeString(";\n");
4674 REGB1 = TAG_Int(2);
4675 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB1);
4676 once_value_24 = fra.me.REG[6];
4677 register_static_object(&once_value_24);
4678 } else fra.me.REG[6] = once_value_24;
4679 fra.me.REG[6] = fra.me.REG[6];
4680 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
4681 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
4682 CALL_compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[7]);
4683 /* ./native_interface//frontier.nit:529 */
4684 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
4685 /* ./../lib/standard//collection//array.nit:239 */
4686 REGB1 = TAG_Int(1);
4687 /* ./../lib/standard//kernel.nit:215 */
4688 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
4689 /* ./../lib/standard//collection//array.nit:239 */
4690 REGB0 = REGB1;
4691 } else {
4692 /* ./../lib/standard//collection//array.nit:237 */
4693 goto label25;
4694 }
4695 }
4696 label25: while(0);
4697 /* ./native_interface//frontier.nit:533 */
4698 fra.me.REG[5] = NIT_NULL;
4699 /* ./native_interface//frontier.nit:536 */
4700 fra.me.REG[2] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4701 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
4702 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4703 if (UNTAG_Bool(REGB0)) {
4704 nit_abort("Reciever is null", NULL, LOCATE_frontier, 536);
4705 }
4706 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4707 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4708 if (UNTAG_Bool(REGB0)) {
4709 } else {
4710 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4711 if (UNTAG_Bool(REGB1)) {
4712 REGB1 = TAG_Bool(false);
4713 REGB0 = REGB1;
4714 } else {
4715 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4716 REGB0 = REGB1;
4717 }
4718 }
4719 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4720 if (UNTAG_Bool(REGB0)) {
4721 /* ./native_interface//frontier.nit:537 */
4722 fra.me.REG[2] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4723 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
4724 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4725 if (UNTAG_Bool(REGB0)) {
4726 nit_abort("Reciever is null", NULL, LOCATE_frontier, 537);
4727 }
4728 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4729 fra.me.REG[5] = fra.me.REG[2];
4730 } else {
4731 /* ./native_interface//frontier.nit:538 */
4732 fra.me.REG[2] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4733 REGB0 = CALL_syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
4734 if (UNTAG_Bool(REGB0)) {
4735 /* ./native_interface//frontier.nit:539 */
4736 fra.me.REG[2] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4737 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
4738 fra.me.REG[2] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
4739 fra.me.REG[5] = fra.me.REG[2];
4740 }
4741 }
4742 /* ./native_interface//frontier.nit:542 */
4743 fra.me.REG[2] = NEW_Buffer_string___Buffer___init();
4744 /* ./native_interface//frontier.nit:543 */
4745 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4746 if (UNTAG_Bool(REGB0)) {
4747 } else {
4748 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4749 if (UNTAG_Bool(REGB1)) {
4750 REGB1 = TAG_Bool(false);
4751 REGB0 = REGB1;
4752 } else {
4753 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4754 REGB0 = REGB1;
4755 }
4756 }
4757 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4758 if (UNTAG_Bool(REGB0)) {
4759 /* ./native_interface//frontier.nit:544 */
4760 fra.me.REG[8] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
4761 REGB0 = TAG_Int(3);
4762 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
4763 if (!once_value_26) {
4764 fra.me.REG[9] = BOX_NativeString("");
4765 REGB0 = TAG_Int(0);
4766 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB0);
4767 once_value_26 = fra.me.REG[9];
4768 register_static_object(&once_value_26);
4769 } else fra.me.REG[9] = once_value_26;
4770 fra.me.REG[9] = fra.me.REG[9];
4771 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
4772 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4773 if (UNTAG_Bool(REGB0)) {
4774 nit_abort("Reciever is null", NULL, LOCATE_frontier, 544);
4775 }
4776 fra.me.REG[9] = CALL_ni_metamodel___MMType___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5]);
4777 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
4778 if (!once_value_27) {
4779 fra.me.REG[9] = BOX_NativeString(" result___nitni;\n");
4780 REGB0 = TAG_Int(17);
4781 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB0);
4782 once_value_27 = fra.me.REG[9];
4783 register_static_object(&once_value_27);
4784 } else fra.me.REG[9] = once_value_27;
4785 fra.me.REG[9] = fra.me.REG[9];
4786 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
4787 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
4788 CALL_compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4789 /* ./native_interface//frontier.nit:545 */
4790 fra.me.REG[7] = CALL_ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
4791 if (!once_value_28) {
4792 fra.me.REG[8] = BOX_NativeString("val_t result___nit;\n");
4793 REGB0 = TAG_Int(20);
4794 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
4795 once_value_28 = fra.me.REG[8];
4796 register_static_object(&once_value_28);
4797 } else fra.me.REG[8] = once_value_28;
4798 fra.me.REG[8] = fra.me.REG[8];
4799 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
4800 /* ./native_interface//frontier.nit:546 */
4801 if (!once_value_29) {
4802 fra.me.REG[8] = BOX_NativeString("result___nit = ");
4803 REGB0 = TAG_Int(15);
4804 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
4805 once_value_29 = fra.me.REG[8];
4806 register_static_object(&once_value_29);
4807 } else fra.me.REG[8] = once_value_29;
4808 fra.me.REG[8] = fra.me.REG[8];
4809 CALL_abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
4810 }
4811 /* ./native_interface//frontier.nit:550 */
4812 fra.me.REG[8] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4813 REGB0 = CALL_syntax_base___MMLocalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
4814 if (UNTAG_Bool(REGB0)) {
4815 /* ./native_interface//frontier.nit:551 */
4816 REGB0 = TAG_Int(5);
4817 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
4818 if (!once_value_30) {
4819 fra.me.REG[7] = BOX_NativeString("NEW_");
4820 REGB0 = TAG_Int(4);
4821 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4822 once_value_30 = fra.me.REG[7];
4823 register_static_object(&once_value_30);
4824 } else fra.me.REG[7] = once_value_30;
4825 fra.me.REG[7] = fra.me.REG[7];
4826 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4827 fra.me.REG[7] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
4828 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
4829 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4830 if (!once_value_31) {
4831 fra.me.REG[7] = BOX_NativeString("_");
4832 REGB0 = TAG_Int(1);
4833 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4834 once_value_31 = fra.me.REG[7];
4835 register_static_object(&once_value_31);
4836 } else fra.me.REG[7] = once_value_31;
4837 fra.me.REG[7] = fra.me.REG[7];
4838 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4839 fra.me.REG[7] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4840 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
4841 fra.me.REG[7] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[7])(fra.me.REG[7]);
4842 fra.me.REG[7] = CALL_compiling_base___MMLocalProperty___cname(fra.me.REG[7])(fra.me.REG[7]);
4843 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4844 if (!once_value_32) {
4845 fra.me.REG[7] = BOX_NativeString("");
4846 REGB0 = TAG_Int(0);
4847 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4848 once_value_32 = fra.me.REG[7];
4849 register_static_object(&once_value_32);
4850 } else fra.me.REG[7] = once_value_32;
4851 fra.me.REG[7] = fra.me.REG[7];
4852 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4853 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
4854 CALL_abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
4855 } else {
4856 /* ./native_interface//frontier.nit:553 */
4857 REGB0 = TAG_Int(3);
4858 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
4859 if (!once_value_33) {
4860 fra.me.REG[7] = BOX_NativeString("");
4861 REGB0 = TAG_Int(0);
4862 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4863 once_value_33 = fra.me.REG[7];
4864 register_static_object(&once_value_33);
4865 } else fra.me.REG[7] = once_value_33;
4866 fra.me.REG[7] = fra.me.REG[7];
4867 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
4868 fra.me.REG[0] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
4869 fra.me.REG[0] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
4870 fra.me.REG[0] = CALL_compiling_base___MMGlobalProperty___meth_call(fra.me.REG[0])(fra.me.REG[0]);
4871 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
4872 if (!once_value_34) {
4873 fra.me.REG[0] = BOX_NativeString("( recv___nit )");
4874 REGB0 = TAG_Int(14);
4875 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4876 once_value_34 = fra.me.REG[0];
4877 register_static_object(&once_value_34);
4878 } else fra.me.REG[0] = once_value_34;
4879 fra.me.REG[0] = fra.me.REG[0];
4880 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
4881 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
4882 CALL_abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
4883 }
4884 /* ./native_interface//frontier.nit:556 */
4885 REGB0 = TAG_Int(3);
4886 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
4887 if (!once_value_35) {
4888 fra.me.REG[0] = BOX_NativeString("( ");
4889 REGB0 = TAG_Int(2);
4890 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4891 once_value_35 = fra.me.REG[0];
4892 register_static_object(&once_value_35);
4893 } else fra.me.REG[0] = once_value_35;
4894 fra.me.REG[0] = fra.me.REG[0];
4895 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
4896 if (!once_value_36) {
4897 fra.me.REG[0] = BOX_NativeString(", ");
4898 REGB0 = TAG_Int(2);
4899 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4900 once_value_36 = fra.me.REG[0];
4901 register_static_object(&once_value_36);
4902 } else fra.me.REG[0] = once_value_36;
4903 fra.me.REG[0] = fra.me.REG[0];
4904 fra.me.REG[0] = CALL_string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4905 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
4906 if (!once_value_37) {
4907 fra.me.REG[0] = BOX_NativeString(" );\n");
4908 REGB0 = TAG_Int(4);
4909 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4910 once_value_37 = fra.me.REG[0];
4911 register_static_object(&once_value_37);
4912 } else fra.me.REG[0] = once_value_37;
4913 fra.me.REG[0] = fra.me.REG[0];
4914 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
4915 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
4916 CALL_abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
4917 /* ./native_interface//frontier.nit:558 */
4918 fra.me.REG[8] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
4919 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4920 CALL_compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[2]);
4921 /* ./native_interface//frontier.nit:561 */
4922 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4923 if (UNTAG_Bool(REGB0)) {
4924 } else {
4925 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4926 if (UNTAG_Bool(REGB1)) {
4927 REGB1 = TAG_Bool(false);
4928 REGB0 = REGB1;
4929 } else {
4930 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4931 REGB0 = REGB1;
4932 }
4933 }
4934 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4935 if (UNTAG_Bool(REGB0)) {
4936 /* ./native_interface//frontier.nit:562 */
4937 if (!once_value_38) {
4938 fra.me.REG[2] = BOX_NativeString("result___nitni");
4939 REGB0 = TAG_Int(14);
4940 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
4941 once_value_38 = fra.me.REG[2];
4942 register_static_object(&once_value_38);
4943 } else fra.me.REG[2] = once_value_38;
4944 fra.me.REG[2] = fra.me.REG[2];
4945 /* ./native_interface//frontier.nit:563 */
4946 if (!once_value_39) {
4947 fra.me.REG[8] = BOX_NativeString("result___nit");
4948 REGB0 = TAG_Int(12);
4949 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
4950 once_value_39 = fra.me.REG[8];
4951 register_static_object(&once_value_39);
4952 } else fra.me.REG[8] = once_value_39;
4953 fra.me.REG[8] = fra.me.REG[8];
4954 /* ./native_interface//frontier.nit:565 */
4955 fra.me.REG[0] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
4956 REGB0 = TAG_Int(3);
4957 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4958 if (!once_value_40) {
4959 fra.me.REG[7] = BOX_NativeString("");
4960 REGB0 = TAG_Int(0);
4961 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4962 once_value_40 = fra.me.REG[7];
4963 register_static_object(&once_value_40);
4964 } else fra.me.REG[7] = once_value_40;
4965 fra.me.REG[7] = fra.me.REG[7];
4966 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
4967 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4968 if (UNTAG_Bool(REGB0)) {
4969 nit_abort("Reciever is null", NULL, LOCATE_frontier, 565);
4970 }
4971 fra.me.REG[8] = CALL_ni_metamodel___MMType___assign_to_friendly(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2], fra.me.REG[8]);
4972 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
4973 if (!once_value_41) {
4974 fra.me.REG[8] = BOX_NativeString(";\n");
4975 REGB0 = TAG_Int(2);
4976 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
4977 once_value_41 = fra.me.REG[8];
4978 register_static_object(&once_value_41);
4979 } else fra.me.REG[8] = once_value_41;
4980 fra.me.REG[8] = fra.me.REG[8];
4981 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
4982 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4983 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
4984 /* ./native_interface//frontier.nit:566 */
4985 fra.me.REG[3] = CALL_ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
4986 REGB0 = TAG_Int(3);
4987 fra.me.REG[0] = NEW_Array_array___Array___with_capacity(REGB0);
4988 if (!once_value_42) {
4989 fra.me.REG[8] = BOX_NativeString("return ");
4990 REGB0 = TAG_Int(7);
4991 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
4992 once_value_42 = fra.me.REG[8];
4993 register_static_object(&once_value_42);
4994 } else fra.me.REG[8] = once_value_42;
4995 fra.me.REG[8] = fra.me.REG[8];
4996 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
4997 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
4998 if (!once_value_43) {
4999 fra.me.REG[2] = BOX_NativeString(";\n");
5000 REGB0 = TAG_Int(2);
5001 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
5002 once_value_43 = fra.me.REG[2];
5003 register_static_object(&once_value_43);
5004 } else fra.me.REG[2] = once_value_43;
5005 fra.me.REG[2] = fra.me.REG[2];
5006 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
5007 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
5008 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
5009 }
5010 /* ./native_interface//frontier.nit:569 */
5011 fra.me.REG[1] = CALL_frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
5012 fra.me.REG[4] = CALL_ni_tools___FunctionCompiler___to_writer(fra.me.REG[4])(fra.me.REG[4]);
5013 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5014 stack_frame_head = fra.me.prev;
5015 return;
5016 }
5017 val_t frontier___MMExplicitImport___hash(val_t p0){
5018 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5019 val_t REGB0;
5020 val_t REGB1;
5021 val_t tmp;
5022 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5023 fra.me.file = LOCATE_frontier;
5024 fra.me.line = 572;
5025 fra.me.meth = LOCATE_frontier___MMExplicitImport___hash;
5026 fra.me.has_broke = 0;
5027 fra.me.REG_size = 2;
5028 fra.me.REG[0] = NIT_NULL;
5029 fra.me.REG[1] = NIT_NULL;
5030 fra.me.REG[0] = p0;
5031 /* ./native_interface//frontier.nit:574 */
5032 fra.me.REG[1] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5033 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
5034 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
5035 REGB0 = CALL_hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
5036 fra.me.REG[0] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5037 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
5038 REGB1 = CALL_hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
5039 /* ./../lib/standard//kernel.nit:215 */
5040 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5041 /* ./native_interface//frontier.nit:574 */
5042 goto label1;
5043 label1: while(0);
5044 stack_frame_head = fra.me.prev;
5045 return REGB1;
5046 }
5047 val_t frontier___MMExplicitImport_____eqeq(val_t p0, val_t p1){
5048 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5049 val_t REGB0;
5050 val_t REGB1;
5051 val_t tmp;
5052 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5053 fra.me.file = LOCATE_frontier;
5054 fra.me.line = 576;
5055 fra.me.meth = LOCATE_frontier___MMExplicitImport_____eqeq;
5056 fra.me.has_broke = 0;
5057 fra.me.REG_size = 4;
5058 fra.me.REG[0] = NIT_NULL;
5059 fra.me.REG[1] = NIT_NULL;
5060 fra.me.REG[2] = NIT_NULL;
5061 fra.me.REG[3] = NIT_NULL;
5062 fra.me.REG[0] = p0;
5063 fra.me.REG[1] = p1;
5064 /* ./native_interface//frontier.nit:578 */
5065 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_MMExplicitImport, ID_MMExplicitImport)) /*cast MMExplicitImport*/;
5066 if (UNTAG_Bool(REGB0)) {
5067 /* ./native_interface//frontier.nit:579 */
5068 fra.me.REG[2] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5069 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5070 if (UNTAG_Bool(REGB0)) {
5071 nit_abort("Reciever is null", NULL, LOCATE_frontier, 579);
5072 }
5073 fra.me.REG[3] = CALL_abstractmetamodel___MMExplicitImport___method(fra.me.REG[1])(fra.me.REG[1]);
5074 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
5075 if (UNTAG_Bool(REGB0)) {
5076 } else {
5077 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5078 REGB0 = REGB1;
5079 }
5080 } else {
5081 /* ./native_interface//frontier.nit:578 */
5082 REGB1 = TAG_Bool(false);
5083 REGB0 = REGB1;
5084 }
5085 if (UNTAG_Bool(REGB0)) {
5086 /* ./native_interface//frontier.nit:579 */
5087 fra.me.REG[0] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5088 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5089 if (UNTAG_Bool(REGB0)) {
5090 nit_abort("Reciever is null", NULL, LOCATE_frontier, 579);
5091 }
5092 fra.me.REG[1] = CALL_abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[1])(fra.me.REG[1]);
5093 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[1]));
5094 if (UNTAG_Bool(REGB0)) {
5095 } else {
5096 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5097 REGB0 = REGB1;
5098 }
5099 } else {
5100 /* ./native_interface//frontier.nit:578 */
5101 REGB1 = TAG_Bool(false);
5102 REGB0 = REGB1;
5103 }
5104 goto label1;
5105 label1: while(0);
5106 stack_frame_head = fra.me.prev;
5107 return REGB0;
5108 }