tests: update ni-merge related tests
[nit.git] / c_src / native_interface___frontier._sep.c
1 /* This C file is generated by NIT to compile module native_interface___frontier. */
2 #include "native_interface___frontier._sep.h"
3 static const char LOCATE_native_interface___frontier___NiVariable___ni_from_name[] = "frontier::NiVariable::ni_from_name";
4 val_t native_interface___frontier___NiVariable___ni_from_name(val_t p0){
5 struct {struct stack_frame_t me;} fra;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_native_interface___frontier;
9 fra.me.line = 30;
10 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___ni_from_name;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 0;
13 fra.me.nitni_local_ref_head = NULL;
14 /* native_interface/frontier.nit:30 */
15 nit_abort("Deferred method called", NULL, LOCATE_native_interface___frontier, 30);
16 stack_frame_head = fra.me.prev;
17 return NIT_NULL;
18 }
19 static const char LOCATE_native_interface___frontier___NiVariable___ni_to_name[] = "frontier::NiVariable::ni_to_name";
20 val_t native_interface___frontier___NiVariable___ni_to_name(val_t p0){
21 struct {struct stack_frame_t me;} fra;
22 val_t tmp;
23 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
24 fra.me.file = LOCATE_native_interface___frontier;
25 fra.me.line = 31;
26 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___ni_to_name;
27 fra.me.has_broke = 0;
28 fra.me.REG_size = 0;
29 fra.me.nitni_local_ref_head = NULL;
30 /* native_interface/frontier.nit:31 */
31 nit_abort("Deferred method called", NULL, LOCATE_native_interface___frontier, 31);
32 stack_frame_head = fra.me.prev;
33 return NIT_NULL;
34 }
35 static const char LOCATE_native_interface___frontier___NiVariable___ni_type[] = "frontier::NiVariable::ni_type";
36 val_t native_interface___frontier___NiVariable___ni_type(val_t p0){
37 struct {struct stack_frame_t me;} fra;
38 val_t tmp;
39 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
40 fra.me.file = LOCATE_native_interface___frontier;
41 fra.me.line = 32;
42 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___ni_type;
43 fra.me.has_broke = 0;
44 fra.me.REG_size = 0;
45 fra.me.nitni_local_ref_head = NULL;
46 /* native_interface/frontier.nit:32 */
47 nit_abort("Deferred method called", NULL, LOCATE_native_interface___frontier, 32);
48 stack_frame_head = fra.me.prev;
49 return NIT_NULL;
50 }
51 static const char LOCATE_native_interface___frontier___NiVariable___needs_preparation[] = "frontier::NiVariable::needs_preparation";
52 val_t native_interface___frontier___NiVariable___needs_preparation(val_t p0){
53 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
54 val_t REGB0;
55 val_t REGB1;
56 val_t tmp;
57 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
58 fra.me.file = LOCATE_native_interface___frontier;
59 fra.me.line = 34;
60 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___needs_preparation;
61 fra.me.has_broke = 0;
62 fra.me.REG_size = 2;
63 fra.me.nitni_local_ref_head = NULL;
64 fra.me.REG[0] = NIT_NULL;
65 fra.me.REG[1] = NIT_NULL;
66 fra.me.REG[0] = p0;
67 /* native_interface/frontier.nit:38 */
68 fra.me.REG[1] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
69 fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
70 fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[1])(fra.me.REG[1]);
71 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
72 if (UNTAG_Bool(REGB0)) {
73 } else {
74 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
75 if (UNTAG_Bool(REGB1)) {
76 REGB1 = TAG_Bool(0);
77 REGB0 = REGB1;
78 } else {
79 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
80 REGB0 = REGB1;
81 }
82 }
83 if (UNTAG_Bool(REGB0)) {
84 REGB0 = TAG_Bool(1);
85 } else {
86 /* native_interface/frontier.nit:39 */
87 fra.me.REG[1] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
88 fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
89 fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[1])(fra.me.REG[1]);
90 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
91 if (UNTAG_Bool(REGB1)) {
92 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 39);
93 }
94 REGB1 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[1])(fra.me.REG[1]);
95 /* native_interface/frontier.nit:38 */
96 REGB0 = REGB1;
97 }
98 if (UNTAG_Bool(REGB0)) {
99 REGB0 = TAG_Bool(1);
100 } else {
101 /* native_interface/frontier.nit:40 */
102 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
103 REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
104 /* native_interface/frontier.nit:38 */
105 REGB0 = REGB1;
106 }
107 goto label1;
108 label1: while(0);
109 stack_frame_head = fra.me.prev;
110 return REGB0;
111 }
112 static const char LOCATE_native_interface___frontier___NiVariable___prepare_for_nit[] = "frontier::NiVariable::prepare_for_nit";
113 void native_interface___frontier___NiVariable___prepare_for_nit(val_t p0, val_t p1){
114 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
115 val_t REGB0;
116 val_t tmp;
117 static val_t once_value_1; /* Once value */
118 static val_t once_value_2; /* Once value */
119 static val_t once_value_3; /* Once value */
120 static val_t once_value_4; /* Once value */
121 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
122 fra.me.file = LOCATE_native_interface___frontier;
123 fra.me.line = 43;
124 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___prepare_for_nit;
125 fra.me.has_broke = 0;
126 fra.me.REG_size = 5;
127 fra.me.nitni_local_ref_head = NULL;
128 fra.me.REG[0] = NIT_NULL;
129 fra.me.REG[1] = NIT_NULL;
130 fra.me.REG[2] = NIT_NULL;
131 fra.me.REG[3] = NIT_NULL;
132 fra.me.REG[4] = NIT_NULL;
133 fra.me.REG[0] = p0;
134 fra.me.REG[1] = p1;
135 /* native_interface/frontier.nit:46 */
136 REGB0 = CALL_native_interface___frontier___NiVariable___needs_preparation(fra.me.REG[0])(fra.me.REG[0]);
137 if (UNTAG_Bool(REGB0)) {
138 /* native_interface/frontier.nit:47 */
139 fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
140 REGB0 = TAG_Int(3);
141 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
142 if (!once_value_1) {
143 fra.me.REG[4] = BOX_NativeString("val_t ");
144 REGB0 = TAG_Int(6);
145 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
146 once_value_1 = fra.me.REG[4];
147 register_static_object(&once_value_1);
148 } else fra.me.REG[4] = once_value_1;
149 fra.me.REG[4] = fra.me.REG[4];
150 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
151 fra.me.REG[4] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
152 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
153 if (!once_value_2) {
154 fra.me.REG[4] = BOX_NativeString(";\n");
155 REGB0 = TAG_Int(2);
156 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
157 once_value_2 = fra.me.REG[4];
158 register_static_object(&once_value_2);
159 } else fra.me.REG[4] = once_value_2;
160 fra.me.REG[4] = fra.me.REG[4];
161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
162 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
163 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
164 /* native_interface/frontier.nit:48 */
165 fra.me.REG[1] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
166 REGB0 = TAG_Int(3);
167 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
168 if (!once_value_3) {
169 fra.me.REG[2] = BOX_NativeString("");
170 REGB0 = TAG_Int(0);
171 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
172 once_value_3 = fra.me.REG[2];
173 register_static_object(&once_value_3);
174 } else fra.me.REG[2] = once_value_3;
175 fra.me.REG[2] = fra.me.REG[2];
176 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
177 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
178 fra.me.REG[4] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
179 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[0])(fra.me.REG[0]);
180 fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___assign_from_friendly(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4], fra.me.REG[0]);
181 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
182 if (!once_value_4) {
183 fra.me.REG[0] = BOX_NativeString(";\n");
184 REGB0 = TAG_Int(2);
185 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
186 once_value_4 = fra.me.REG[0];
187 register_static_object(&once_value_4);
188 } else fra.me.REG[0] = once_value_4;
189 fra.me.REG[0] = fra.me.REG[0];
190 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
191 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
192 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
193 }
194 stack_frame_head = fra.me.prev;
195 return;
196 }
197 static const char LOCATE_native_interface___frontier___NiVariable___prepare_for_c[] = "frontier::NiVariable::prepare_for_c";
198 void native_interface___frontier___NiVariable___prepare_for_c(val_t p0, val_t p1){
199 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
200 val_t REGB0;
201 val_t tmp;
202 static val_t once_value_1; /* Once value */
203 static val_t once_value_2; /* Once value */
204 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
205 fra.me.file = LOCATE_native_interface___frontier;
206 fra.me.line = 52;
207 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___prepare_for_c;
208 fra.me.has_broke = 0;
209 fra.me.REG_size = 5;
210 fra.me.nitni_local_ref_head = NULL;
211 fra.me.REG[0] = NIT_NULL;
212 fra.me.REG[1] = NIT_NULL;
213 fra.me.REG[2] = NIT_NULL;
214 fra.me.REG[3] = NIT_NULL;
215 fra.me.REG[4] = NIT_NULL;
216 fra.me.REG[0] = p0;
217 fra.me.REG[1] = p1;
218 /* native_interface/frontier.nit:54 */
219 REGB0 = CALL_native_interface___frontier___NiVariable___needs_preparation(fra.me.REG[0])(fra.me.REG[0]);
220 if (UNTAG_Bool(REGB0)) {
221 /* native_interface/frontier.nit:55 */
222 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
223 fra.me.REG[3] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
224 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_native_interface___frontier___ReturnVariable, ID_native_interface___frontier___ReturnVariable)) /*cast ReturnVariable*/;
225 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
226 CALL_native_interface___frontier___MMType___compile_new_local_ref(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1], REGB0);
227 /* native_interface/frontier.nit:56 */
228 fra.me.REG[1] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
229 REGB0 = TAG_Int(3);
230 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
231 if (!once_value_1) {
232 fra.me.REG[2] = BOX_NativeString("");
233 REGB0 = TAG_Int(0);
234 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
235 once_value_1 = fra.me.REG[2];
236 register_static_object(&once_value_1);
237 } else fra.me.REG[2] = once_value_1;
238 fra.me.REG[2] = fra.me.REG[2];
239 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
240 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
241 fra.me.REG[4] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
242 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[0])(fra.me.REG[0]);
243 fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4], fra.me.REG[0]);
244 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
245 if (!once_value_2) {
246 fra.me.REG[0] = BOX_NativeString(";\n");
247 REGB0 = TAG_Int(2);
248 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
249 once_value_2 = fra.me.REG[0];
250 register_static_object(&once_value_2);
251 } else fra.me.REG[0] = once_value_2;
252 fra.me.REG[0] = fra.me.REG[0];
253 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
254 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
255 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
256 }
257 stack_frame_head = fra.me.prev;
258 return;
259 }
260 static const char LOCATE_native_interface___frontier___NiVariable___as_arg_to_nit[] = "frontier::NiVariable::as_arg_to_nit";
261 val_t native_interface___frontier___NiVariable___as_arg_to_nit(val_t p0){
262 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
263 val_t REGB0;
264 val_t REGB1;
265 val_t tmp;
266 static val_t once_value_2; /* Once value */
267 static val_t once_value_3; /* Once value */
268 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
269 fra.me.file = LOCATE_native_interface___frontier;
270 fra.me.line = 60;
271 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___as_arg_to_nit;
272 fra.me.has_broke = 0;
273 fra.me.REG_size = 4;
274 fra.me.nitni_local_ref_head = NULL;
275 fra.me.REG[0] = NIT_NULL;
276 fra.me.REG[1] = NIT_NULL;
277 fra.me.REG[2] = NIT_NULL;
278 fra.me.REG[3] = NIT_NULL;
279 fra.me.REG[0] = p0;
280 /* native_interface/frontier.nit:63 */
281 REGB0 = CALL_native_interface___frontier___NiVariable___needs_preparation(fra.me.REG[0])(fra.me.REG[0]);
282 if (UNTAG_Bool(REGB0)) {
283 /* native_interface/frontier.nit:64 */
284 fra.me.REG[1] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
285 goto label1;
286 } else {
287 /* native_interface/frontier.nit:65 */
288 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
289 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
290 fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
291 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
292 if (UNTAG_Bool(REGB0)) {
293 } else {
294 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
295 if (UNTAG_Bool(REGB1)) {
296 REGB1 = TAG_Bool(0);
297 REGB0 = REGB1;
298 } else {
299 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
300 REGB0 = REGB1;
301 }
302 }
303 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
304 if (UNTAG_Bool(REGB0)) {
305 REGB0 = TAG_Bool(1);
306 } else {
307 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
308 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
309 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
310 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[2])(fra.me.REG[2]);
311 REGB0 = REGB1;
312 }
313 if (UNTAG_Bool(REGB0)) {
314 /* native_interface/frontier.nit:66 */
315 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
316 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
317 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
318 } else {
319 /* native_interface/frontier.nit:65 */
320 REGB1 = TAG_Bool(0);
321 REGB0 = REGB1;
322 }
323 if (UNTAG_Bool(REGB0)) {
324 /* native_interface/frontier.nit:67 */
325 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
326 fra.me.REG[3] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[0])(fra.me.REG[0]);
327 fra.me.REG[3] = CALL_primitive_info___MMType___boxtype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
328 fra.me.REG[1] = fra.me.REG[3];
329 goto label1;
330 } else {
331 /* native_interface/frontier.nit:69 */
332 REGB0 = TAG_Int(3);
333 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
334 if (!once_value_2) {
335 fra.me.REG[2] = BOX_NativeString("");
336 REGB0 = TAG_Int(0);
337 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
338 once_value_2 = fra.me.REG[2];
339 register_static_object(&once_value_2);
340 } else fra.me.REG[2] = once_value_2;
341 fra.me.REG[2] = fra.me.REG[2];
342 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
343 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[0])(fra.me.REG[0]);
344 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
345 if (!once_value_3) {
346 fra.me.REG[0] = BOX_NativeString("->ref.val");
347 REGB0 = TAG_Int(9);
348 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
349 once_value_3 = fra.me.REG[0];
350 register_static_object(&once_value_3);
351 } else fra.me.REG[0] = once_value_3;
352 fra.me.REG[0] = fra.me.REG[0];
353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
354 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
355 fra.me.REG[1] = fra.me.REG[3];
356 goto label1;
357 }
358 }
359 label1: while(0);
360 stack_frame_head = fra.me.prev;
361 return fra.me.REG[1];
362 }
363 static const char LOCATE_native_interface___frontier___NiVariable___as_arg_to_c[] = "frontier::NiVariable::as_arg_to_c";
364 val_t native_interface___frontier___NiVariable___as_arg_to_c(val_t p0){
365 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
366 val_t REGB0;
367 val_t tmp;
368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
369 fra.me.file = LOCATE_native_interface___frontier;
370 fra.me.line = 73;
371 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___as_arg_to_c;
372 fra.me.has_broke = 0;
373 fra.me.REG_size = 3;
374 fra.me.nitni_local_ref_head = NULL;
375 fra.me.REG[0] = NIT_NULL;
376 fra.me.REG[1] = NIT_NULL;
377 fra.me.REG[2] = NIT_NULL;
378 fra.me.REG[0] = p0;
379 /* native_interface/frontier.nit:76 */
380 REGB0 = CALL_native_interface___frontier___NiVariable___needs_preparation(fra.me.REG[0])(fra.me.REG[0]);
381 if (UNTAG_Bool(REGB0)) {
382 /* native_interface/frontier.nit:77 */
383 fra.me.REG[1] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
384 goto label1;
385 } else {
386 /* native_interface/frontier.nit:79 */
387 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
388 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[0])(fra.me.REG[0]);
389 fra.me.REG[0] = CALL_primitive_info___MMType___unboxtype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
390 fra.me.REG[1] = fra.me.REG[0];
391 goto label1;
392 }
393 label1: while(0);
394 stack_frame_head = fra.me.prev;
395 return fra.me.REG[1];
396 }
397 static const char LOCATE_native_interface___frontier___NiVariable___init[] = "frontier::NiVariable::init";
398 void native_interface___frontier___NiVariable___init(val_t p0, int* init_table){
399 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_native_interface___frontier___NiVariable].i;
400 struct {struct stack_frame_t me;} fra;
401 val_t tmp;
402 if (init_table[itpos0]) return;
403 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
404 fra.me.file = LOCATE_native_interface___frontier;
405 fra.me.line = 0;
406 fra.me.meth = LOCATE_native_interface___frontier___NiVariable___init;
407 fra.me.has_broke = 0;
408 fra.me.REG_size = 0;
409 fra.me.nitni_local_ref_head = NULL;
410 stack_frame_head = fra.me.prev;
411 init_table[itpos0] = 1;
412 return;
413 }
414 static const char LOCATE_native_interface___frontier___MMParam___ni_from_name[] = "frontier::MMParam::(frontier::NiVariable::ni_from_name)";
415 val_t native_interface___frontier___MMParam___ni_from_name(val_t p0){
416 struct {struct stack_frame_t me;} fra;
417 val_t tmp;
418 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
419 fra.me.file = LOCATE_native_interface___frontier;
420 fra.me.line = 87;
421 fra.me.meth = LOCATE_native_interface___frontier___MMParam___ni_from_name;
422 fra.me.has_broke = 0;
423 fra.me.REG_size = 1;
424 fra.me.nitni_local_ref_head = NULL;
425 fra.me.REG[0] = NIT_NULL;
426 fra.me.REG[0] = p0;
427 /* native_interface/frontier.nit:87 */
428 fra.me.REG[0] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[0])(fra.me.REG[0]);
429 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
430 goto label1;
431 label1: while(0);
432 stack_frame_head = fra.me.prev;
433 return fra.me.REG[0];
434 }
435 static const char LOCATE_native_interface___frontier___MMParam___ni_to_name[] = "frontier::MMParam::(frontier::NiVariable::ni_to_name)";
436 val_t native_interface___frontier___MMParam___ni_to_name(val_t p0){
437 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
438 val_t REGB0;
439 val_t tmp;
440 static val_t once_value_1; /* Once value */
441 static val_t once_value_2; /* Once value */
442 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
443 fra.me.file = LOCATE_native_interface___frontier;
444 fra.me.line = 88;
445 fra.me.meth = LOCATE_native_interface___frontier___MMParam___ni_to_name;
446 fra.me.has_broke = 0;
447 fra.me.REG_size = 3;
448 fra.me.nitni_local_ref_head = NULL;
449 fra.me.REG[0] = NIT_NULL;
450 fra.me.REG[1] = NIT_NULL;
451 fra.me.REG[2] = NIT_NULL;
452 fra.me.REG[0] = p0;
453 /* native_interface/frontier.nit:88 */
454 REGB0 = TAG_Int(3);
455 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
456 if (!once_value_1) {
457 fra.me.REG[2] = BOX_NativeString("trans___");
458 REGB0 = TAG_Int(8);
459 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
460 once_value_1 = fra.me.REG[2];
461 register_static_object(&once_value_1);
462 } else fra.me.REG[2] = once_value_1;
463 fra.me.REG[2] = fra.me.REG[2];
464 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
465 fra.me.REG[0] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[0])(fra.me.REG[0]);
466 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
467 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
468 if (!once_value_2) {
469 fra.me.REG[0] = BOX_NativeString("");
470 REGB0 = TAG_Int(0);
471 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
472 once_value_2 = fra.me.REG[0];
473 register_static_object(&once_value_2);
474 } else fra.me.REG[0] = once_value_2;
475 fra.me.REG[0] = fra.me.REG[0];
476 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
477 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
478 goto label3;
479 label3: while(0);
480 stack_frame_head = fra.me.prev;
481 return fra.me.REG[1];
482 }
483 static const char LOCATE_native_interface___frontier___MMParam___ni_type[] = "frontier::MMParam::(frontier::NiVariable::ni_type)";
484 val_t native_interface___frontier___MMParam___ni_type(val_t p0){
485 struct {struct stack_frame_t me;} fra;
486 val_t tmp;
487 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
488 fra.me.file = LOCATE_native_interface___frontier;
489 fra.me.line = 89;
490 fra.me.meth = LOCATE_native_interface___frontier___MMParam___ni_type;
491 fra.me.has_broke = 0;
492 fra.me.REG_size = 1;
493 fra.me.nitni_local_ref_head = NULL;
494 fra.me.REG[0] = NIT_NULL;
495 fra.me.REG[0] = p0;
496 /* native_interface/frontier.nit:89 */
497 fra.me.REG[0] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[0])(fra.me.REG[0]);
498 goto label1;
499 label1: while(0);
500 stack_frame_head = fra.me.prev;
501 return fra.me.REG[0];
502 }
503 static const char LOCATE_native_interface___frontier___ReceiverVariable___ni_from_name[] = "frontier::ReceiverVariable::(frontier::NiVariable::ni_from_name)";
504 val_t native_interface___frontier___ReceiverVariable___ni_from_name(val_t p0){
505 struct {struct stack_frame_t me;} fra;
506 val_t REGB0;
507 val_t tmp;
508 static val_t once_value_1; /* Once value */
509 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
510 fra.me.file = LOCATE_native_interface___frontier;
511 fra.me.line = 95;
512 fra.me.meth = LOCATE_native_interface___frontier___ReceiverVariable___ni_from_name;
513 fra.me.has_broke = 0;
514 fra.me.REG_size = 1;
515 fra.me.nitni_local_ref_head = NULL;
516 fra.me.REG[0] = NIT_NULL;
517 fra.me.REG[0] = p0;
518 /* native_interface/frontier.nit:95 */
519 if (!once_value_1) {
520 fra.me.REG[0] = BOX_NativeString("recv");
521 REGB0 = TAG_Int(4);
522 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
523 once_value_1 = fra.me.REG[0];
524 register_static_object(&once_value_1);
525 } else fra.me.REG[0] = once_value_1;
526 fra.me.REG[0] = fra.me.REG[0];
527 goto label2;
528 label2: while(0);
529 stack_frame_head = fra.me.prev;
530 return fra.me.REG[0];
531 }
532 static const char LOCATE_native_interface___frontier___ReceiverVariable___ni_to_name[] = "frontier::ReceiverVariable::(frontier::NiVariable::ni_to_name)";
533 val_t native_interface___frontier___ReceiverVariable___ni_to_name(val_t p0){
534 struct {struct stack_frame_t me;} fra;
535 val_t REGB0;
536 val_t tmp;
537 static val_t once_value_1; /* Once value */
538 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
539 fra.me.file = LOCATE_native_interface___frontier;
540 fra.me.line = 96;
541 fra.me.meth = LOCATE_native_interface___frontier___ReceiverVariable___ni_to_name;
542 fra.me.has_broke = 0;
543 fra.me.REG_size = 1;
544 fra.me.nitni_local_ref_head = NULL;
545 fra.me.REG[0] = NIT_NULL;
546 fra.me.REG[0] = p0;
547 /* native_interface/frontier.nit:96 */
548 if (!once_value_1) {
549 fra.me.REG[0] = BOX_NativeString("trans_recv");
550 REGB0 = TAG_Int(10);
551 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
552 once_value_1 = fra.me.REG[0];
553 register_static_object(&once_value_1);
554 } else fra.me.REG[0] = once_value_1;
555 fra.me.REG[0] = fra.me.REG[0];
556 goto label2;
557 label2: while(0);
558 stack_frame_head = fra.me.prev;
559 return fra.me.REG[0];
560 }
561 static const char LOCATE_native_interface___frontier___ReceiverVariable___ni_type[] = "frontier::ReceiverVariable::(frontier::NiVariable::ni_type)";
562 val_t native_interface___frontier___ReceiverVariable___ni_type(val_t p0){
563 struct {struct stack_frame_t me;} fra;
564 val_t REGB0;
565 val_t tmp;
566 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
567 fra.me.file = LOCATE_native_interface___frontier;
568 fra.me.line = 98;
569 fra.me.meth = LOCATE_native_interface___frontier___ReceiverVariable___ni_type;
570 fra.me.has_broke = 0;
571 fra.me.REG_size = 1;
572 fra.me.nitni_local_ref_head = NULL;
573 fra.me.REG[0] = NIT_NULL;
574 fra.me.REG[0] = p0;
575 /* native_interface/frontier.nit:98 */
576 REGB0 = TAG_Bool(ATTR_native_interface___frontier___ReceiverVariable_____atni_type(fra.me.REG[0])!=NIT_NULL);
577 if (UNTAG_Bool(REGB0)) {
578 } else {
579 nit_abort("Uninitialized attribute %s", "@ni_type", LOCATE_native_interface___frontier, 98);
580 }
581 fra.me.REG[0] = ATTR_native_interface___frontier___ReceiverVariable_____atni_type(fra.me.REG[0]);
582 stack_frame_head = fra.me.prev;
583 return fra.me.REG[0];
584 }
585 static const char LOCATE_native_interface___frontier___ReceiverVariable___ni_type__eq[] = "frontier::ReceiverVariable::ni_type=";
586 void native_interface___frontier___ReceiverVariable___ni_type__eq(val_t p0, val_t p1){
587 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
588 val_t tmp;
589 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
590 fra.me.file = LOCATE_native_interface___frontier;
591 fra.me.line = 98;
592 fra.me.meth = LOCATE_native_interface___frontier___ReceiverVariable___ni_type__eq;
593 fra.me.has_broke = 0;
594 fra.me.REG_size = 2;
595 fra.me.nitni_local_ref_head = NULL;
596 fra.me.REG[0] = NIT_NULL;
597 fra.me.REG[1] = NIT_NULL;
598 fra.me.REG[0] = p0;
599 fra.me.REG[1] = p1;
600 /* native_interface/frontier.nit:98 */
601 ATTR_native_interface___frontier___ReceiverVariable_____atni_type(fra.me.REG[0]) = fra.me.REG[1];
602 stack_frame_head = fra.me.prev;
603 return;
604 }
605 static const char LOCATE_native_interface___frontier___ReceiverVariable___init[] = "frontier::ReceiverVariable::init";
606 void native_interface___frontier___ReceiverVariable___init(val_t p0, val_t p1, int* init_table){
607 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_native_interface___frontier___ReceiverVariable].i;
608 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
609 val_t tmp;
610 if (init_table[itpos1]) return;
611 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
612 fra.me.file = LOCATE_native_interface___frontier;
613 fra.me.line = 99;
614 fra.me.meth = LOCATE_native_interface___frontier___ReceiverVariable___init;
615 fra.me.has_broke = 0;
616 fra.me.REG_size = 3;
617 fra.me.nitni_local_ref_head = NULL;
618 fra.me.REG[0] = NIT_NULL;
619 fra.me.REG[1] = NIT_NULL;
620 fra.me.REG[2] = NIT_NULL;
621 fra.me.REG[0] = p0;
622 fra.me.REG[1] = p1;
623 /* native_interface/frontier.nit:99 */
624 fra.me.REG[2] = fra.me.REG[0];
625 CALL_native_interface___frontier___NiVariable___init(fra.me.REG[0])(fra.me.REG[0], init_table);
626 CALL_native_interface___frontier___ReceiverVariable___ni_type__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
627 stack_frame_head = fra.me.prev;
628 init_table[itpos1] = 1;
629 return;
630 }
631 static const char LOCATE_native_interface___frontier___ReturnVariable___ni_from_name[] = "frontier::ReturnVariable::(frontier::NiVariable::ni_from_name)";
632 val_t native_interface___frontier___ReturnVariable___ni_from_name(val_t p0){
633 struct {struct stack_frame_t me;} fra;
634 val_t REGB0;
635 val_t tmp;
636 static val_t once_value_1; /* Once value */
637 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
638 fra.me.file = LOCATE_native_interface___frontier;
639 fra.me.line = 105;
640 fra.me.meth = LOCATE_native_interface___frontier___ReturnVariable___ni_from_name;
641 fra.me.has_broke = 0;
642 fra.me.REG_size = 1;
643 fra.me.nitni_local_ref_head = NULL;
644 fra.me.REG[0] = NIT_NULL;
645 fra.me.REG[0] = p0;
646 /* native_interface/frontier.nit:105 */
647 if (!once_value_1) {
648 fra.me.REG[0] = BOX_NativeString("orig_return");
649 REGB0 = TAG_Int(11);
650 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
651 once_value_1 = fra.me.REG[0];
652 register_static_object(&once_value_1);
653 } else fra.me.REG[0] = once_value_1;
654 fra.me.REG[0] = fra.me.REG[0];
655 goto label2;
656 label2: while(0);
657 stack_frame_head = fra.me.prev;
658 return fra.me.REG[0];
659 }
660 static const char LOCATE_native_interface___frontier___ReturnVariable___ni_to_name[] = "frontier::ReturnVariable::(frontier::NiVariable::ni_to_name)";
661 val_t native_interface___frontier___ReturnVariable___ni_to_name(val_t p0){
662 struct {struct stack_frame_t me;} fra;
663 val_t REGB0;
664 val_t tmp;
665 static val_t once_value_1; /* Once value */
666 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
667 fra.me.file = LOCATE_native_interface___frontier;
668 fra.me.line = 106;
669 fra.me.meth = LOCATE_native_interface___frontier___ReturnVariable___ni_to_name;
670 fra.me.has_broke = 0;
671 fra.me.REG_size = 1;
672 fra.me.nitni_local_ref_head = NULL;
673 fra.me.REG[0] = NIT_NULL;
674 fra.me.REG[0] = p0;
675 /* native_interface/frontier.nit:106 */
676 if (!once_value_1) {
677 fra.me.REG[0] = BOX_NativeString("trans_return");
678 REGB0 = TAG_Int(12);
679 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
680 once_value_1 = fra.me.REG[0];
681 register_static_object(&once_value_1);
682 } else fra.me.REG[0] = once_value_1;
683 fra.me.REG[0] = fra.me.REG[0];
684 goto label2;
685 label2: while(0);
686 stack_frame_head = fra.me.prev;
687 return fra.me.REG[0];
688 }
689 static const char LOCATE_native_interface___frontier___ReturnVariable___ni_type[] = "frontier::ReturnVariable::(frontier::NiVariable::ni_type)";
690 val_t native_interface___frontier___ReturnVariable___ni_type(val_t p0){
691 struct {struct stack_frame_t me;} fra;
692 val_t REGB0;
693 val_t tmp;
694 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
695 fra.me.file = LOCATE_native_interface___frontier;
696 fra.me.line = 108;
697 fra.me.meth = LOCATE_native_interface___frontier___ReturnVariable___ni_type;
698 fra.me.has_broke = 0;
699 fra.me.REG_size = 1;
700 fra.me.nitni_local_ref_head = NULL;
701 fra.me.REG[0] = NIT_NULL;
702 fra.me.REG[0] = p0;
703 /* native_interface/frontier.nit:108 */
704 REGB0 = TAG_Bool(ATTR_native_interface___frontier___ReturnVariable_____atni_type(fra.me.REG[0])!=NIT_NULL);
705 if (UNTAG_Bool(REGB0)) {
706 } else {
707 nit_abort("Uninitialized attribute %s", "@ni_type", LOCATE_native_interface___frontier, 108);
708 }
709 fra.me.REG[0] = ATTR_native_interface___frontier___ReturnVariable_____atni_type(fra.me.REG[0]);
710 stack_frame_head = fra.me.prev;
711 return fra.me.REG[0];
712 }
713 static const char LOCATE_native_interface___frontier___ReturnVariable___ni_type__eq[] = "frontier::ReturnVariable::ni_type=";
714 void native_interface___frontier___ReturnVariable___ni_type__eq(val_t p0, val_t p1){
715 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
716 val_t tmp;
717 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
718 fra.me.file = LOCATE_native_interface___frontier;
719 fra.me.line = 108;
720 fra.me.meth = LOCATE_native_interface___frontier___ReturnVariable___ni_type__eq;
721 fra.me.has_broke = 0;
722 fra.me.REG_size = 2;
723 fra.me.nitni_local_ref_head = NULL;
724 fra.me.REG[0] = NIT_NULL;
725 fra.me.REG[1] = NIT_NULL;
726 fra.me.REG[0] = p0;
727 fra.me.REG[1] = p1;
728 /* native_interface/frontier.nit:108 */
729 ATTR_native_interface___frontier___ReturnVariable_____atni_type(fra.me.REG[0]) = fra.me.REG[1];
730 stack_frame_head = fra.me.prev;
731 return;
732 }
733 static const char LOCATE_native_interface___frontier___ReturnVariable___init[] = "frontier::ReturnVariable::init";
734 void native_interface___frontier___ReturnVariable___init(val_t p0, val_t p1, int* init_table){
735 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_native_interface___frontier___ReturnVariable].i;
736 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
737 val_t tmp;
738 if (init_table[itpos2]) return;
739 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
740 fra.me.file = LOCATE_native_interface___frontier;
741 fra.me.line = 109;
742 fra.me.meth = LOCATE_native_interface___frontier___ReturnVariable___init;
743 fra.me.has_broke = 0;
744 fra.me.REG_size = 3;
745 fra.me.nitni_local_ref_head = NULL;
746 fra.me.REG[0] = NIT_NULL;
747 fra.me.REG[1] = NIT_NULL;
748 fra.me.REG[2] = NIT_NULL;
749 fra.me.REG[0] = p0;
750 fra.me.REG[1] = p1;
751 /* native_interface/frontier.nit:109 */
752 fra.me.REG[2] = fra.me.REG[0];
753 CALL_native_interface___frontier___NiVariable___init(fra.me.REG[0])(fra.me.REG[0], init_table);
754 CALL_native_interface___frontier___ReturnVariable___ni_type__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
755 stack_frame_head = fra.me.prev;
756 init_table[itpos2] = 1;
757 return;
758 }
759 static const char LOCATE_native_interface___frontier___ReturnVariable___prepare_for_c[] = "frontier::ReturnVariable::(frontier::NiVariable::prepare_for_c)";
760 void native_interface___frontier___ReturnVariable___prepare_for_c(val_t p0, val_t p1){
761 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
762 val_t REGB0;
763 val_t tmp;
764 static val_t once_value_1; /* Once value */
765 static val_t once_value_2; /* Once value */
766 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
767 fra.me.file = LOCATE_native_interface___frontier;
768 fra.me.line = 111;
769 fra.me.meth = LOCATE_native_interface___frontier___ReturnVariable___prepare_for_c;
770 fra.me.has_broke = 0;
771 fra.me.REG_size = 5;
772 fra.me.nitni_local_ref_head = NULL;
773 fra.me.REG[0] = NIT_NULL;
774 fra.me.REG[1] = NIT_NULL;
775 fra.me.REG[2] = NIT_NULL;
776 fra.me.REG[3] = NIT_NULL;
777 fra.me.REG[4] = NIT_NULL;
778 fra.me.REG[0] = p0;
779 fra.me.REG[1] = p1;
780 /* native_interface/frontier.nit:114 */
781 fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
782 REGB0 = TAG_Int(3);
783 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
784 if (!once_value_1) {
785 fra.me.REG[4] = BOX_NativeString("val_t ");
786 REGB0 = TAG_Int(6);
787 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
788 once_value_1 = fra.me.REG[4];
789 register_static_object(&once_value_1);
790 } else fra.me.REG[4] = once_value_1;
791 fra.me.REG[4] = fra.me.REG[4];
792 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
793 fra.me.REG[4] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[0])(fra.me.REG[0]);
794 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
795 if (!once_value_2) {
796 fra.me.REG[4] = BOX_NativeString(";\n");
797 REGB0 = TAG_Int(2);
798 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
799 once_value_2 = fra.me.REG[4];
800 register_static_object(&once_value_2);
801 } else fra.me.REG[4] = once_value_2;
802 fra.me.REG[4] = fra.me.REG[4];
803 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
804 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
805 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
806 /* native_interface/frontier.nit:115 */
807 fra.me.REG[3] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
808 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
809 REGB0 = TAG_Bool(1);
810 CALL_native_interface___frontier___MMType___compile_new_local_ref(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], REGB0);
811 stack_frame_head = fra.me.prev;
812 return;
813 }
814 static const char LOCATE_native_interface___frontier___ReturnVariable___prepare_for_nit[] = "frontier::ReturnVariable::(frontier::NiVariable::prepare_for_nit)";
815 void native_interface___frontier___ReturnVariable___prepare_for_nit(val_t p0, val_t p1){
816 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
817 val_t REGB0;
818 val_t tmp;
819 static val_t once_value_1; /* Once value */
820 static val_t once_value_2; /* Once value */
821 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
822 fra.me.file = LOCATE_native_interface___frontier;
823 fra.me.line = 117;
824 fra.me.meth = LOCATE_native_interface___frontier___ReturnVariable___prepare_for_nit;
825 fra.me.has_broke = 0;
826 fra.me.REG_size = 4;
827 fra.me.nitni_local_ref_head = NULL;
828 fra.me.REG[0] = NIT_NULL;
829 fra.me.REG[1] = NIT_NULL;
830 fra.me.REG[2] = NIT_NULL;
831 fra.me.REG[3] = NIT_NULL;
832 fra.me.REG[0] = p0;
833 fra.me.REG[1] = p1;
834 /* native_interface/frontier.nit:119 */
835 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
836 fra.me.REG[3] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[0])(fra.me.REG[0]);
837 REGB0 = TAG_Bool(0);
838 CALL_native_interface___frontier___MMType___compile_new_local_ref(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1], REGB0);
839 /* native_interface/frontier.nit:120 */
840 fra.me.REG[1] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
841 REGB0 = TAG_Int(3);
842 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
843 if (!once_value_1) {
844 fra.me.REG[2] = BOX_NativeString("val_t ");
845 REGB0 = TAG_Int(6);
846 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
847 once_value_1 = fra.me.REG[2];
848 register_static_object(&once_value_1);
849 } else fra.me.REG[2] = once_value_1;
850 fra.me.REG[2] = fra.me.REG[2];
851 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
852 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[0])(fra.me.REG[0]);
853 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
854 if (!once_value_2) {
855 fra.me.REG[0] = BOX_NativeString(";\n");
856 REGB0 = TAG_Int(2);
857 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
858 once_value_2 = fra.me.REG[0];
859 register_static_object(&once_value_2);
860 } else fra.me.REG[0] = once_value_2;
861 fra.me.REG[0] = fra.me.REG[0];
862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
863 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
864 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
865 stack_frame_head = fra.me.prev;
866 return;
867 }
868 static const char LOCATE_native_interface___frontier___MMSrcModule___compile_frontier[] = "frontier::MMSrcModule::compile_frontier";
869 void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_t p1){
870 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
871 val_t REGB0;
872 val_t tmp;
873 static val_t once_value_1; /* Once value */
874 static val_t once_value_2; /* Once value */
875 static val_t once_value_3; /* Once value */
876 static val_t once_value_4; /* Once value */
877 static val_t once_value_5; /* Once value */
878 static val_t once_value_6; /* Once value */
879 static val_t once_value_7; /* Once value */
880 static val_t once_value_8; /* Once value */
881 static val_t once_value_9; /* Once value */
882 static val_t once_value_10; /* Once value */
883 static val_t once_value_11; /* Once value */
884 static val_t once_value_12; /* Once value */
885 static val_t once_value_13; /* Once value */
886 static val_t once_value_14; /* Once value */
887 static val_t once_value_15; /* Once value */
888 static val_t once_value_16; /* Once value */
889 static val_t once_value_17; /* Once value */
890 static val_t once_value_18; /* Once value */
891 static val_t once_value_19; /* Once value */
892 static val_t once_value_20; /* Once value */
893 static val_t once_value_21; /* Once value */
894 static val_t once_value_22; /* Once value */
895 static val_t once_value_23; /* Once value */
896 static val_t once_value_24; /* Once value */
897 static val_t once_value_27; /* Once value */
898 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
899 fra.me.file = LOCATE_native_interface___frontier;
900 fra.me.line = 125;
901 fra.me.meth = LOCATE_native_interface___frontier___MMSrcModule___compile_frontier;
902 fra.me.has_broke = 0;
903 fra.me.REG_size = 6;
904 fra.me.nitni_local_ref_head = NULL;
905 fra.me.REG[0] = NIT_NULL;
906 fra.me.REG[1] = NIT_NULL;
907 fra.me.REG[2] = NIT_NULL;
908 fra.me.REG[3] = NIT_NULL;
909 fra.me.REG[4] = NIT_NULL;
910 fra.me.REG[5] = NIT_NULL;
911 fra.me.REG[0] = p0;
912 fra.me.REG[1] = p1;
913 /* native_interface/frontier.nit:129 */
914 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
915 REGB0 = TAG_Int(3);
916 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
917 if (!once_value_1) {
918 fra.me.REG[4] = BOX_NativeString("#include \"");
919 REGB0 = TAG_Int(10);
920 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
921 once_value_1 = fra.me.REG[4];
922 register_static_object(&once_value_1);
923 } else fra.me.REG[4] = once_value_1;
924 fra.me.REG[4] = fra.me.REG[4];
925 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
926 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
927 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
928 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
929 if (!once_value_2) {
930 fra.me.REG[4] = BOX_NativeString("._nitni.h\"\n");
931 REGB0 = TAG_Int(11);
932 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
933 once_value_2 = fra.me.REG[4];
934 register_static_object(&once_value_2);
935 } else fra.me.REG[4] = once_value_2;
936 fra.me.REG[4] = fra.me.REG[4];
937 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
938 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
939 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
940 /* native_interface/frontier.nit:132 */
941 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
942 if (!once_value_3) {
943 fra.me.REG[2] = BOX_NativeString("#include <nit_common.h>\n");
944 REGB0 = TAG_Int(24);
945 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
946 once_value_3 = fra.me.REG[2];
947 register_static_object(&once_value_3);
948 } else fra.me.REG[2] = once_value_3;
949 fra.me.REG[2] = fra.me.REG[2];
950 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
951 /* native_interface/frontier.nit:133 */
952 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
953 REGB0 = TAG_Int(3);
954 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
955 if (!once_value_4) {
956 fra.me.REG[4] = BOX_NativeString("#include \"");
957 REGB0 = TAG_Int(10);
958 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
959 once_value_4 = fra.me.REG[4];
960 register_static_object(&once_value_4);
961 } else fra.me.REG[4] = once_value_4;
962 fra.me.REG[4] = fra.me.REG[4];
963 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
964 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___cprogram(fra.me.REG[1])(fra.me.REG[1]);
965 fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___module_header_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
966 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
967 if (!once_value_5) {
968 fra.me.REG[4] = BOX_NativeString("\"\n");
969 REGB0 = TAG_Int(2);
970 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
971 once_value_5 = fra.me.REG[4];
972 register_static_object(&once_value_5);
973 } else fra.me.REG[4] = once_value_5;
974 fra.me.REG[4] = fra.me.REG[4];
975 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
976 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
977 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
978 /* native_interface/frontier.nit:135 */
979 REGB0 = TAG_Int(3);
980 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
981 if (!once_value_6) {
982 fra.me.REG[2] = BOX_NativeString("");
983 REGB0 = TAG_Int(0);
984 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
985 once_value_6 = fra.me.REG[2];
986 register_static_object(&once_value_6);
987 } else fra.me.REG[2] = once_value_6;
988 fra.me.REG[2] = fra.me.REG[2];
989 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
990 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
991 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
992 fra.me.REG[2] = CALL_standard___string___AbstractString___to_upper(fra.me.REG[2])(fra.me.REG[2]);
993 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
994 if (!once_value_7) {
995 fra.me.REG[2] = BOX_NativeString("_NITNI_H");
996 REGB0 = TAG_Int(8);
997 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
998 once_value_7 = fra.me.REG[2];
999 register_static_object(&once_value_7);
1000 } else fra.me.REG[2] = once_value_7;
1001 fra.me.REG[2] = fra.me.REG[2];
1002 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1003 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1004 /* native_interface/frontier.nit:136 */
1005 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
1006 REGB0 = TAG_Int(3);
1007 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1008 if (!once_value_8) {
1009 fra.me.REG[5] = BOX_NativeString("#ifndef ");
1010 REGB0 = TAG_Int(8);
1011 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1012 once_value_8 = fra.me.REG[5];
1013 register_static_object(&once_value_8);
1014 } else fra.me.REG[5] = once_value_8;
1015 fra.me.REG[5] = fra.me.REG[5];
1016 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1017 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1018 if (!once_value_9) {
1019 fra.me.REG[5] = BOX_NativeString("\n");
1020 REGB0 = TAG_Int(1);
1021 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1022 once_value_9 = fra.me.REG[5];
1023 register_static_object(&once_value_9);
1024 } else fra.me.REG[5] = once_value_9;
1025 fra.me.REG[5] = fra.me.REG[5];
1026 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1027 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1028 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1029 /* native_interface/frontier.nit:137 */
1030 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
1031 REGB0 = TAG_Int(3);
1032 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1033 if (!once_value_10) {
1034 fra.me.REG[5] = BOX_NativeString("#define ");
1035 REGB0 = TAG_Int(8);
1036 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1037 once_value_10 = fra.me.REG[5];
1038 register_static_object(&once_value_10);
1039 } else fra.me.REG[5] = once_value_10;
1040 fra.me.REG[5] = fra.me.REG[5];
1041 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
1042 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1043 if (!once_value_11) {
1044 fra.me.REG[3] = BOX_NativeString("\n\n");
1045 REGB0 = TAG_Int(2);
1046 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1047 once_value_11 = fra.me.REG[3];
1048 register_static_object(&once_value_11);
1049 } else fra.me.REG[3] = once_value_11;
1050 fra.me.REG[3] = fra.me.REG[3];
1051 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1052 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1053 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1054 /* native_interface/frontier.nit:140 */
1055 REGB0 = TAG_Int(5);
1056 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1057 if (!once_value_12) {
1058 fra.me.REG[4] = BOX_NativeString("");
1059 REGB0 = TAG_Int(0);
1060 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1061 once_value_12 = fra.me.REG[4];
1062 register_static_object(&once_value_12);
1063 } else fra.me.REG[4] = once_value_12;
1064 fra.me.REG[4] = fra.me.REG[4];
1065 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1066 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___directory(fra.me.REG[0])(fra.me.REG[0]);
1067 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[4])(fra.me.REG[4]);
1068 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1069 if (!once_value_13) {
1070 fra.me.REG[4] = BOX_NativeString("/");
1071 REGB0 = TAG_Int(1);
1072 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1073 once_value_13 = fra.me.REG[4];
1074 register_static_object(&once_value_13);
1075 } else fra.me.REG[4] = once_value_13;
1076 fra.me.REG[4] = fra.me.REG[4];
1077 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1078 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
1079 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1080 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1081 if (!once_value_14) {
1082 fra.me.REG[4] = BOX_NativeString(".nit.h");
1083 REGB0 = TAG_Int(6);
1084 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1085 once_value_14 = fra.me.REG[4];
1086 register_static_object(&once_value_14);
1087 } else fra.me.REG[4] = once_value_14;
1088 fra.me.REG[4] = fra.me.REG[4];
1089 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1090 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1091 /* native_interface/frontier.nit:141 */
1092 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[2])(fra.me.REG[2]);
1093 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1094 if (UNTAG_Bool(REGB0)) {
1095 /* native_interface/frontier.nit:142 */
1096 REGB0 = TAG_Int(5);
1097 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1098 if (!once_value_15) {
1099 fra.me.REG[3] = BOX_NativeString("");
1100 REGB0 = TAG_Int(0);
1101 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1102 once_value_15 = fra.me.REG[3];
1103 register_static_object(&once_value_15);
1104 } else fra.me.REG[3] = once_value_15;
1105 fra.me.REG[3] = fra.me.REG[3];
1106 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1107 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___directory(fra.me.REG[0])(fra.me.REG[0]);
1108 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[3])(fra.me.REG[3]);
1109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1110 if (!once_value_16) {
1111 fra.me.REG[3] = BOX_NativeString("/");
1112 REGB0 = TAG_Int(1);
1113 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1114 once_value_16 = fra.me.REG[3];
1115 register_static_object(&once_value_16);
1116 } else fra.me.REG[3] = once_value_16;
1117 fra.me.REG[3] = fra.me.REG[3];
1118 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1119 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
1120 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1121 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1122 if (!once_value_17) {
1123 fra.me.REG[3] = BOX_NativeString("_nit.h");
1124 REGB0 = TAG_Int(6);
1125 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1126 once_value_17 = fra.me.REG[3];
1127 register_static_object(&once_value_17);
1128 } else fra.me.REG[3] = once_value_17;
1129 fra.me.REG[3] = fra.me.REG[3];
1130 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1131 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1132 fra.me.REG[2] = fra.me.REG[4];
1133 }
1134 /* native_interface/frontier.nit:144 */
1135 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[2])(fra.me.REG[2]);
1136 if (UNTAG_Bool(REGB0)) {
1137 /* native_interface/frontier.nit:145 */
1138 if (!once_value_18) {
1139 fra.me.REG[4] = BOX_NativeString("..");
1140 REGB0 = TAG_Int(2);
1141 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1142 once_value_18 = fra.me.REG[4];
1143 register_static_object(&once_value_18);
1144 } else fra.me.REG[4] = once_value_18;
1145 fra.me.REG[4] = fra.me.REG[4];
1146 fra.me.REG[2] = CALL_standard___file___String___join_path(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1147 fra.me.REG[2] = CALL_standard___file___String___simplify_path(fra.me.REG[2])(fra.me.REG[2]);
1148 /* native_interface/frontier.nit:146 */
1149 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
1150 REGB0 = TAG_Int(3);
1151 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1152 if (!once_value_19) {
1153 fra.me.REG[5] = BOX_NativeString("#include \"");
1154 REGB0 = TAG_Int(10);
1155 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1156 once_value_19 = fra.me.REG[5];
1157 register_static_object(&once_value_19);
1158 } else fra.me.REG[5] = once_value_19;
1159 fra.me.REG[5] = fra.me.REG[5];
1160 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1162 if (!once_value_20) {
1163 fra.me.REG[5] = BOX_NativeString("\"\n");
1164 REGB0 = TAG_Int(2);
1165 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1166 once_value_20 = fra.me.REG[5];
1167 register_static_object(&once_value_20);
1168 } else fra.me.REG[5] = once_value_20;
1169 fra.me.REG[5] = fra.me.REG[5];
1170 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1171 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1172 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1173 /* native_interface/frontier.nit:147 */
1174 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1175 REGB0 = TAG_Int(3);
1176 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1177 if (!once_value_21) {
1178 fra.me.REG[5] = BOX_NativeString("#include \"");
1179 REGB0 = TAG_Int(10);
1180 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1181 once_value_21 = fra.me.REG[5];
1182 register_static_object(&once_value_21);
1183 } else fra.me.REG[5] = once_value_21;
1184 fra.me.REG[5] = fra.me.REG[5];
1185 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1186 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1187 if (!once_value_22) {
1188 fra.me.REG[2] = BOX_NativeString("\"\n");
1189 REGB0 = TAG_Int(2);
1190 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
1191 once_value_22 = fra.me.REG[2];
1192 register_static_object(&once_value_22);
1193 } else fra.me.REG[2] = once_value_22;
1194 fra.me.REG[2] = fra.me.REG[2];
1195 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1196 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1197 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1198 }
1199 /* native_interface/frontier.nit:149 */
1200 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___uses_ffi(fra.me.REG[0])(fra.me.REG[0]);
1201 if (UNTAG_Bool(REGB0)) {
1202 /* native_interface/frontier.nit:150 */
1203 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1204 REGB0 = TAG_Int(3);
1205 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1206 if (!once_value_23) {
1207 fra.me.REG[2] = BOX_NativeString("#include <");
1208 REGB0 = TAG_Int(10);
1209 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
1210 once_value_23 = fra.me.REG[2];
1211 register_static_object(&once_value_23);
1212 } else fra.me.REG[2] = once_value_23;
1213 fra.me.REG[2] = fra.me.REG[2];
1214 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1215 fra.me.REG[2] = CALL_compiling___compiling_base___MMModule___cname(fra.me.REG[0])(fra.me.REG[0]);
1216 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1217 if (!once_value_24) {
1218 fra.me.REG[2] = BOX_NativeString("._ffi.h>\n");
1219 REGB0 = TAG_Int(9);
1220 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
1221 once_value_24 = fra.me.REG[2];
1222 register_static_object(&once_value_24);
1223 } else fra.me.REG[2] = once_value_24;
1224 fra.me.REG[2] = fra.me.REG[2];
1225 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1226 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1227 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1228 }
1229 /* native_interface/frontier.nit:153 */
1230 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
1231 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_native_interface___frontier___MMSrcModule___compile_frontier_25));
1232 /* native_interface/frontier.nit:165 */
1233 CALL_native_interface___frontier___FrontierVisitor___compile_cached(fra.me.REG[1])(fra.me.REG[1]);
1234 /* native_interface/frontier.nit:167 */
1235 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1236 if (!once_value_27) {
1237 fra.me.REG[0] = BOX_NativeString("#endif\n");
1238 REGB0 = TAG_Int(7);
1239 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1240 once_value_27 = fra.me.REG[0];
1241 register_static_object(&once_value_27);
1242 } else fra.me.REG[0] = once_value_27;
1243 fra.me.REG[0] = fra.me.REG[0];
1244 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1245 stack_frame_head = fra.me.prev;
1246 return;
1247 }
1248 void OC_native_interface___frontier___MMSrcModule___compile_frontier_25(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1249 struct {struct stack_frame_t me;} fra;
1250 fun_t CREG[1];
1251 val_t tmp;
1252 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1253 fra.me.file = LOCATE_native_interface___frontier;
1254 fra.me.line = 0;
1255 fra.me.meth = LOCATE_native_interface___frontier___MMSrcModule___compile_frontier;
1256 fra.me.has_broke = 0;
1257 fra.me.REG_size = 1;
1258 fra.me.nitni_local_ref_head = NULL;
1259 fra.me.REG[0] = NIT_NULL;
1260 fra.me.closure_ctx = closctx_param;
1261 fra.me.closure_funs = CREG;
1262 fra.me.REG[0] = p0;
1263 CREG[0] = clos_fun0;
1264 /* native_interface/frontier.nit:155 */
1265 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
1266 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_native_interface___frontier___MMSrcModule___compile_frontier_26));
1267 stack_frame_head = fra.me.prev;
1268 return;
1269 }
1270 void OC_native_interface___frontier___MMSrcModule___compile_frontier_26(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1271 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1272 val_t REGB0;
1273 val_t REGB1;
1274 fun_t CREG[1];
1275 val_t tmp;
1276 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1277 fra.me.file = LOCATE_native_interface___frontier;
1278 fra.me.line = 0;
1279 fra.me.meth = LOCATE_native_interface___frontier___MMSrcModule___compile_frontier;
1280 fra.me.has_broke = 0;
1281 fra.me.REG_size = 2;
1282 fra.me.nitni_local_ref_head = NULL;
1283 fra.me.REG[0] = NIT_NULL;
1284 fra.me.REG[1] = NIT_NULL;
1285 fra.me.closure_ctx = closctx_param;
1286 fra.me.closure_funs = CREG;
1287 fra.me.REG[0] = p0;
1288 CREG[0] = clos_fun0;
1289 /* native_interface/frontier.nit:158 */
1290 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1291 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[0]));
1292 if (UNTAG_Bool(REGB0)) {
1293 } else {
1294 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[0]);
1295 REGB0 = REGB1;
1296 }
1297 if (UNTAG_Bool(REGB0)) {
1298 /* native_interface/frontier.nit:159 */
1299 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1300 } else {
1301 /* native_interface/frontier.nit:158 */
1302 REGB1 = TAG_Bool(0);
1303 REGB0 = REGB1;
1304 }
1305 if (UNTAG_Bool(REGB0)) {
1306 /* native_interface/frontier.nit:159 */
1307 REGB0 = CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra.me.REG[0])(fra.me.REG[0]);
1308 } else {
1309 /* native_interface/frontier.nit:158 */
1310 REGB1 = TAG_Bool(0);
1311 REGB0 = REGB1;
1312 }
1313 if (UNTAG_Bool(REGB0)) {
1314 /* native_interface/frontier.nit:160 */
1315 CALL_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
1316 }
1317 stack_frame_head = fra.me.prev;
1318 return;
1319 }
1320 static const char LOCATE_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier[] = "frontier::MMSrcMethod::compile_extern_to_frontier";
1321 void native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(val_t p0, val_t p1){
1322 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1323 val_t REGB0;
1324 val_t REGB1;
1325 val_t tmp;
1326 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1327 fra.me.file = LOCATE_native_interface___frontier;
1328 fra.me.line = 172;
1329 fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier;
1330 fra.me.has_broke = 0;
1331 fra.me.REG_size = 3;
1332 fra.me.nitni_local_ref_head = NULL;
1333 fra.me.REG[0] = NIT_NULL;
1334 fra.me.REG[1] = NIT_NULL;
1335 fra.me.REG[2] = NIT_NULL;
1336 fra.me.REG[0] = p0;
1337 fra.me.REG[1] = p1;
1338 /* native_interface/frontier.nit:175 */
1339 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1340 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1341 if (UNTAG_Bool(REGB0)) {
1342 } else {
1343 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1344 if (UNTAG_Bool(REGB1)) {
1345 REGB1 = TAG_Bool(0);
1346 REGB0 = REGB1;
1347 } else {
1348 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1349 REGB0 = REGB1;
1350 }
1351 }
1352 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1353 if (UNTAG_Bool(REGB0)) {
1354 /* native_interface/frontier.nit:176 */
1355 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1356 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1357 if (UNTAG_Bool(REGB0)) {
1358 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 176);
1359 }
1360 CALL_native_interface___frontier___MMSignature___compile_frontier(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1361 }
1362 /* native_interface/frontier.nit:179 */
1363 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[0])(fra.me.REG[0]);
1364 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier_1));
1365 /* native_interface/frontier.nit:188 */
1366 fra.me.REG[2] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[0])(fra.me.REG[0]);
1367 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier_2));
1368 /* native_interface/frontier.nit:196 */
1369 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super(fra.me.REG[0])(fra.me.REG[0]);
1370 if (UNTAG_Bool(REGB0)) {
1371 /* native_interface/frontier.nit:197 */
1372 CALL_native_interface___frontier___MMSrcMethod___compile_super_to_frontier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1373 }
1374 /* native_interface/frontier.nit:201 */
1375 CALL_native_interface___frontier___MMSrcMethod___compile_out_to_frontier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1376 stack_frame_head = fra.me.prev;
1377 return;
1378 }
1379 void OC_native_interface___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){
1380 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1381 fun_t CREG[1];
1382 val_t tmp;
1383 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1384 fra.me.file = LOCATE_native_interface___frontier;
1385 fra.me.line = 0;
1386 fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier;
1387 fra.me.has_broke = 0;
1388 fra.me.REG_size = 2;
1389 fra.me.nitni_local_ref_head = NULL;
1390 fra.me.REG[0] = NIT_NULL;
1391 fra.me.REG[1] = NIT_NULL;
1392 fra.me.closure_ctx = closctx_param;
1393 fra.me.closure_funs = CREG;
1394 fra.me.REG[0] = p0;
1395 CREG[0] = clos_fun0;
1396 /* native_interface/frontier.nit:181 */
1397 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___friendlys(closctx->REG[1])(closctx->REG[1]);
1398 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1399 /* native_interface/frontier.nit:184 */
1400 fra.me.REG[0] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
1401 CALL_native_interface___frontier___MMSignature___compile_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
1402 stack_frame_head = fra.me.prev;
1403 return;
1404 }
1405 void OC_native_interface___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){
1406 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1407 fun_t CREG[1];
1408 val_t tmp;
1409 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1410 fra.me.file = LOCATE_native_interface___frontier;
1411 fra.me.line = 0;
1412 fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier;
1413 fra.me.has_broke = 0;
1414 fra.me.REG_size = 3;
1415 fra.me.nitni_local_ref_head = NULL;
1416 fra.me.REG[0] = NIT_NULL;
1417 fra.me.REG[1] = NIT_NULL;
1418 fra.me.REG[2] = NIT_NULL;
1419 fra.me.closure_ctx = closctx_param;
1420 fra.me.closure_funs = CREG;
1421 fra.me.REG[0] = p0;
1422 CREG[0] = clos_fun0;
1423 /* native_interface/frontier.nit:189 */
1424 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___casts(closctx->REG[1])(closctx->REG[1]);
1425 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1426 /* native_interface/frontier.nit:191 */
1427 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___types(closctx->REG[1])(closctx->REG[1]);
1428 fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
1429 fra.me.REG[2] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[2])(fra.me.REG[2]);
1430 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1431 /* native_interface/frontier.nit:192 */
1432 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___types(closctx->REG[1])(closctx->REG[1]);
1433 fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
1434 fra.me.REG[0] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[0])(fra.me.REG[0]);
1435 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1436 stack_frame_head = fra.me.prev;
1437 return;
1438 }
1439 static const char LOCATE_native_interface___frontier___MMSrcMethod___compile_super_to_frontier[] = "frontier::MMSrcMethod::compile_super_to_frontier";
1440 void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t p0, val_t p1){
1441 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1442 val_t REGB0;
1443 val_t REGB1;
1444 val_t REGB2;
1445 val_t tmp;
1446 static val_t once_value_1; /* Once value */
1447 static val_t once_value_2; /* Once value */
1448 static val_t once_value_3; /* Once value */
1449 static val_t once_value_4; /* Once value */
1450 static val_t once_value_5; /* Once value */
1451 static val_t once_value_6; /* Once value */
1452 static val_t once_value_7; /* Once value */
1453 static val_t once_value_8; /* Once value */
1454 static val_t once_value_9; /* Once value */
1455 static val_t once_value_10; /* Once value */
1456 static val_t once_value_11; /* Once value */
1457 static val_t once_value_12; /* Once value */
1458 static val_t once_value_15; /* Once value */
1459 static val_t once_value_16; /* Once value */
1460 static val_t once_value_17; /* Once value */
1461 static val_t once_value_18; /* Once value */
1462 static val_t once_value_19; /* Once value */
1463 static val_t once_value_20; /* Once value */
1464 static val_t once_value_21; /* Once value */
1465 static val_t once_value_22; /* Once value */
1466 static val_t once_value_23; /* Once value */
1467 static val_t once_value_24; /* Once value */
1468 static val_t once_value_25; /* Once value */
1469 static val_t once_value_26; /* Once value */
1470 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1471 fra.me.file = LOCATE_native_interface___frontier;
1472 fra.me.line = 204;
1473 fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_super_to_frontier;
1474 fra.me.has_broke = 0;
1475 fra.me.REG_size = 8;
1476 fra.me.nitni_local_ref_head = NULL;
1477 fra.me.REG[0] = NIT_NULL;
1478 fra.me.REG[1] = NIT_NULL;
1479 fra.me.REG[2] = NIT_NULL;
1480 fra.me.REG[3] = NIT_NULL;
1481 fra.me.REG[4] = NIT_NULL;
1482 fra.me.REG[5] = NIT_NULL;
1483 fra.me.REG[6] = NIT_NULL;
1484 fra.me.REG[7] = NIT_NULL;
1485 fra.me.REG[0] = p0;
1486 fra.me.REG[1] = p1;
1487 /* native_interface/frontier.nit:211 */
1488 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1489 REGB0 = TAG_Int(3);
1490 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1491 if (!once_value_1) {
1492 fra.me.REG[4] = BOX_NativeString("\n/* friendly for super of ");
1493 REGB0 = TAG_Int(26);
1494 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1495 once_value_1 = fra.me.REG[4];
1496 register_static_object(&once_value_1);
1497 } else fra.me.REG[4] = once_value_1;
1498 fra.me.REG[4] = fra.me.REG[4];
1499 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1500 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
1501 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1502 if (!once_value_2) {
1503 fra.me.REG[4] = BOX_NativeString(" */\n");
1504 REGB0 = TAG_Int(4);
1505 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1506 once_value_2 = fra.me.REG[4];
1507 register_static_object(&once_value_2);
1508 } else fra.me.REG[4] = once_value_2;
1509 fra.me.REG[4] = fra.me.REG[4];
1510 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1511 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1512 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1513 /* native_interface/frontier.nit:212 */
1514 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1515 REGB0 = TAG_Int(3);
1516 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1517 if (!once_value_3) {
1518 fra.me.REG[4] = BOX_NativeString("");
1519 REGB0 = TAG_Int(0);
1520 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1521 once_value_3 = fra.me.REG[4];
1522 register_static_object(&once_value_3);
1523 } else fra.me.REG[4] = once_value_3;
1524 fra.me.REG[4] = fra.me.REG[4];
1525 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1526 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1527 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
1528 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1529 if (!once_value_4) {
1530 fra.me.REG[4] = BOX_NativeString(";\n");
1531 REGB0 = TAG_Int(2);
1532 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1533 once_value_4 = fra.me.REG[4];
1534 register_static_object(&once_value_4);
1535 } else fra.me.REG[4] = once_value_4;
1536 fra.me.REG[4] = fra.me.REG[4];
1537 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1538 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1539 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1540 /* native_interface/frontier.nit:215 */
1541 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1542 REGB0 = TAG_Int(3);
1543 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1544 if (!once_value_5) {
1545 fra.me.REG[4] = BOX_NativeString("#ifndef ");
1546 REGB0 = TAG_Int(8);
1547 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1548 once_value_5 = fra.me.REG[4];
1549 register_static_object(&once_value_5);
1550 } else fra.me.REG[4] = once_value_5;
1551 fra.me.REG[4] = fra.me.REG[4];
1552 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1553 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___friendly_super_cname(fra.me.REG[0])(fra.me.REG[0]);
1554 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1555 if (!once_value_6) {
1556 fra.me.REG[4] = BOX_NativeString("\n");
1557 REGB0 = TAG_Int(1);
1558 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1559 once_value_6 = fra.me.REG[4];
1560 register_static_object(&once_value_6);
1561 } else fra.me.REG[4] = once_value_6;
1562 fra.me.REG[4] = fra.me.REG[4];
1563 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1564 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1565 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1566 /* native_interface/frontier.nit:216 */
1567 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1568 REGB0 = TAG_Int(5);
1569 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1570 if (!once_value_7) {
1571 fra.me.REG[4] = BOX_NativeString("#define ");
1572 REGB0 = TAG_Int(8);
1573 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1574 once_value_7 = fra.me.REG[4];
1575 register_static_object(&once_value_7);
1576 } else fra.me.REG[4] = once_value_7;
1577 fra.me.REG[4] = fra.me.REG[4];
1578 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1579 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___friendly_super_cname(fra.me.REG[0])(fra.me.REG[0]);
1580 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1581 if (!once_value_8) {
1582 fra.me.REG[4] = BOX_NativeString(" ");
1583 REGB0 = TAG_Int(1);
1584 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1585 once_value_8 = fra.me.REG[4];
1586 register_static_object(&once_value_8);
1587 } else fra.me.REG[4] = once_value_8;
1588 fra.me.REG[4] = fra.me.REG[4];
1589 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1590 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
1591 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
1592 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1593 if (!once_value_9) {
1594 fra.me.REG[4] = BOX_NativeString("\n");
1595 REGB0 = TAG_Int(1);
1596 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1597 once_value_9 = fra.me.REG[4];
1598 register_static_object(&once_value_9);
1599 } else fra.me.REG[4] = once_value_9;
1600 fra.me.REG[4] = fra.me.REG[4];
1601 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1602 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1603 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1604 /* native_interface/frontier.nit:217 */
1605 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
1606 if (!once_value_10) {
1607 fra.me.REG[3] = BOX_NativeString("#endif\n");
1608 REGB0 = TAG_Int(7);
1609 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1610 once_value_10 = fra.me.REG[3];
1611 register_static_object(&once_value_10);
1612 } else fra.me.REG[3] = once_value_10;
1613 fra.me.REG[3] = fra.me.REG[3];
1614 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1615 /* native_interface/frontier.nit:220 */
1616 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
1617 REGB0 = TAG_Int(3);
1618 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1619 if (!once_value_11) {
1620 fra.me.REG[4] = BOX_NativeString("\n/* friendly for super of ");
1621 REGB0 = TAG_Int(26);
1622 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1623 once_value_11 = fra.me.REG[4];
1624 register_static_object(&once_value_11);
1625 } else fra.me.REG[4] = once_value_11;
1626 fra.me.REG[4] = fra.me.REG[4];
1627 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1628 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
1629 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1630 if (!once_value_12) {
1631 fra.me.REG[4] = BOX_NativeString(" */\n");
1632 REGB0 = TAG_Int(4);
1633 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1634 once_value_12 = fra.me.REG[4];
1635 register_static_object(&once_value_12);
1636 } else fra.me.REG[4] = once_value_12;
1637 fra.me.REG[4] = fra.me.REG[4];
1638 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1639 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1640 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1641 /* native_interface/frontier.nit:221 */
1642 fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMMethod___friendly_super_csignature(fra.me.REG[0])(fra.me.REG[0]);
1643 fra.me.REG[2] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[2]);
1644 /* native_interface/frontier.nit:224 */
1645 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
1646 /* native_interface/frontier.nit:225 */
1647 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1648 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1649 if (UNTAG_Bool(REGB0)) {
1650 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 225);
1651 }
1652 fra.me.REG[4] = CALL_native_interface___frontier___MMSignature___recv_ni_variable(fra.me.REG[4])(fra.me.REG[4]);
1653 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1654 /* native_interface/frontier.nit:226 */
1655 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1656 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1657 if (UNTAG_Bool(REGB0)) {
1658 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 226);
1659 }
1660 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[4])(fra.me.REG[4]);
1661 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1662 /* ../lib/standard/collection/array.nit:266 */
1663 fra.me.REG[4] = fra.me.REG[3];
1664 /* ../lib/standard/collection/array.nit:269 */
1665 REGB0 = TAG_Int(0);
1666 /* ../lib/standard/collection/array.nit:270 */
1667 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1668 if (UNTAG_Bool(REGB1)) {
1669 } else {
1670 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1671 }
1672 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1673 /* ../lib/standard/collection/array.nit:271 */
1674 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
1675 /* ../lib/standard/collection/array.nit:272 */
1676 while(1) {
1677 /* ../lib/standard/collection/array.nit:24 */
1678 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1679 if (UNTAG_Bool(REGB1)) {
1680 } else {
1681 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1682 }
1683 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1684 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1685 if (UNTAG_Bool(REGB2)) {
1686 } else {
1687 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1688 }
1689 /* ../lib/standard/kernel.nit:235 */
1690 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1691 /* ../lib/standard/collection/array.nit:272 */
1692 if (UNTAG_Bool(REGB1)) {
1693 /* ../lib/standard/collection/array.nit:273 */
1694 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1695 if (UNTAG_Bool(REGB1)) {
1696 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1697 }
1698 /* ../lib/standard/collection/array.nit:718 */
1699 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
1700 /* native_interface/frontier.nit:229 */
1701 CALL_native_interface___frontier___NiVariable___prepare_for_nit(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
1702 /* ../lib/standard/collection/array.nit:274 */
1703 REGB1 = TAG_Int(1);
1704 /* ../lib/standard/kernel.nit:238 */
1705 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1706 /* ../lib/standard/collection/array.nit:274 */
1707 REGB0 = REGB1;
1708 } else {
1709 /* ../lib/standard/collection/array.nit:272 */
1710 goto label13;
1711 }
1712 }
1713 label13: while(0);
1714 /* native_interface/frontier.nit:232 */
1715 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
1716 /* ../lib/standard/collection/array.nit:269 */
1717 REGB0 = TAG_Int(0);
1718 /* ../lib/standard/collection/array.nit:270 */
1719 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1720 if (UNTAG_Bool(REGB1)) {
1721 } else {
1722 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1723 }
1724 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1725 /* ../lib/standard/collection/array.nit:271 */
1726 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
1727 /* ../lib/standard/collection/array.nit:272 */
1728 while(1) {
1729 /* ../lib/standard/collection/array.nit:24 */
1730 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1731 if (UNTAG_Bool(REGB1)) {
1732 } else {
1733 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1734 }
1735 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1736 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1737 if (UNTAG_Bool(REGB2)) {
1738 } else {
1739 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1740 }
1741 /* ../lib/standard/kernel.nit:235 */
1742 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1743 /* ../lib/standard/collection/array.nit:272 */
1744 if (UNTAG_Bool(REGB1)) {
1745 /* ../lib/standard/collection/array.nit:273 */
1746 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1747 if (UNTAG_Bool(REGB1)) {
1748 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1749 }
1750 /* ../lib/standard/collection/array.nit:718 */
1751 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
1752 /* native_interface/frontier.nit:233 */
1753 fra.me.REG[6] = CALL_native_interface___frontier___NiVariable___as_arg_to_nit(fra.me.REG[6])(fra.me.REG[6]);
1754 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1755 /* ../lib/standard/collection/array.nit:274 */
1756 REGB1 = TAG_Int(1);
1757 /* ../lib/standard/kernel.nit:238 */
1758 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1759 /* ../lib/standard/collection/array.nit:274 */
1760 REGB0 = REGB1;
1761 } else {
1762 /* ../lib/standard/collection/array.nit:272 */
1763 goto label14;
1764 }
1765 }
1766 label14: while(0);
1767 /* native_interface/frontier.nit:236 */
1768 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1769 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1770 if (UNTAG_Bool(REGB0)) {
1771 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 236);
1772 }
1773 fra.me.REG[4] = CALL_native_interface___frontier___MMSignature___return_ni_variable(fra.me.REG[4])(fra.me.REG[4]);
1774 /* native_interface/frontier.nit:237 */
1775 fra.me.REG[3] = NEW_Buffer_standard___string___Buffer___init();
1776 /* native_interface/frontier.nit:238 */
1777 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1778 if (UNTAG_Bool(REGB0)) {
1779 } else {
1780 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1781 if (UNTAG_Bool(REGB1)) {
1782 REGB1 = TAG_Bool(0);
1783 REGB0 = REGB1;
1784 } else {
1785 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1786 REGB0 = REGB1;
1787 }
1788 }
1789 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1790 if (UNTAG_Bool(REGB0)) {
1791 /* native_interface/frontier.nit:239 */
1792 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1793 if (UNTAG_Bool(REGB0)) {
1794 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 239);
1795 }
1796 CALL_native_interface___frontier___NiVariable___prepare_for_c(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1797 /* native_interface/frontier.nit:240 */
1798 REGB0 = TAG_Int(3);
1799 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1800 if (!once_value_15) {
1801 fra.me.REG[7] = BOX_NativeString("");
1802 REGB0 = TAG_Int(0);
1803 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1804 once_value_15 = fra.me.REG[7];
1805 register_static_object(&once_value_15);
1806 } else fra.me.REG[7] = once_value_15;
1807 fra.me.REG[7] = fra.me.REG[7];
1808 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1809 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1810 if (UNTAG_Bool(REGB0)) {
1811 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 240);
1812 }
1813 fra.me.REG[7] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[4])(fra.me.REG[4]);
1814 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1815 if (!once_value_16) {
1816 fra.me.REG[7] = BOX_NativeString(" = ");
1817 REGB0 = TAG_Int(3);
1818 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1819 once_value_16 = fra.me.REG[7];
1820 register_static_object(&once_value_16);
1821 } else fra.me.REG[7] = once_value_16;
1822 fra.me.REG[7] = fra.me.REG[7];
1823 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1824 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1825 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1826 }
1827 /* native_interface/frontier.nit:243 */
1828 REGB0 = TAG_Int(5);
1829 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1830 if (!once_value_17) {
1831 fra.me.REG[7] = BOX_NativeString("");
1832 REGB0 = TAG_Int(0);
1833 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1834 once_value_17 = fra.me.REG[7];
1835 register_static_object(&once_value_17);
1836 } else fra.me.REG[7] = once_value_17;
1837 fra.me.REG[7] = fra.me.REG[7];
1838 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1839 fra.me.REG[7] = CALL_compiling___compiling_base___MMLocalProperty___super_meth_call(fra.me.REG[0])(fra.me.REG[0]);
1840 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1841 if (!once_value_18) {
1842 fra.me.REG[7] = BOX_NativeString("( ");
1843 REGB0 = TAG_Int(2);
1844 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1845 once_value_18 = fra.me.REG[7];
1846 register_static_object(&once_value_18);
1847 } else fra.me.REG[7] = once_value_18;
1848 fra.me.REG[7] = fra.me.REG[7];
1849 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1850 fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1851 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1852 if (UNTAG_Bool(REGB0)) {
1853 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 243);
1854 }
1855 fra.me.REG[0] = CALL_native_interface___frontier___MMSignature___recv_ni_variable(fra.me.REG[0])(fra.me.REG[0]);
1856 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___as_arg_to_nit(fra.me.REG[0])(fra.me.REG[0]);
1857 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
1858 if (!once_value_19) {
1859 fra.me.REG[0] = BOX_NativeString(" )");
1860 REGB0 = TAG_Int(2);
1861 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1862 once_value_19 = fra.me.REG[0];
1863 register_static_object(&once_value_19);
1864 } else fra.me.REG[0] = once_value_19;
1865 fra.me.REG[0] = fra.me.REG[0];
1866 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
1867 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1868 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1869 /* native_interface/frontier.nit:244 */
1870 REGB0 = TAG_Int(3);
1871 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1872 if (!once_value_20) {
1873 fra.me.REG[0] = BOX_NativeString("( ");
1874 REGB0 = TAG_Int(2);
1875 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1876 once_value_20 = fra.me.REG[0];
1877 register_static_object(&once_value_20);
1878 } else fra.me.REG[0] = once_value_20;
1879 fra.me.REG[0] = fra.me.REG[0];
1880 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
1881 if (!once_value_21) {
1882 fra.me.REG[0] = BOX_NativeString(", ");
1883 REGB0 = TAG_Int(2);
1884 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1885 once_value_21 = fra.me.REG[0];
1886 register_static_object(&once_value_21);
1887 } else fra.me.REG[0] = once_value_21;
1888 fra.me.REG[0] = fra.me.REG[0];
1889 fra.me.REG[0] = CALL_standard___string___Collection___join(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1890 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
1891 if (!once_value_22) {
1892 fra.me.REG[0] = BOX_NativeString(" );\n");
1893 REGB0 = TAG_Int(4);
1894 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1895 once_value_22 = fra.me.REG[0];
1896 register_static_object(&once_value_22);
1897 } else fra.me.REG[0] = once_value_22;
1898 fra.me.REG[0] = fra.me.REG[0];
1899 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
1900 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1901 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1902 /* native_interface/frontier.nit:246 */
1903 fra.me.REG[6] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
1904 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1905 CALL_compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
1906 /* native_interface/frontier.nit:249 */
1907 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1908 if (UNTAG_Bool(REGB0)) {
1909 } else {
1910 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1911 if (UNTAG_Bool(REGB1)) {
1912 REGB1 = TAG_Bool(0);
1913 REGB0 = REGB1;
1914 } else {
1915 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1916 REGB0 = REGB1;
1917 }
1918 }
1919 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1920 if (UNTAG_Bool(REGB0)) {
1921 /* native_interface/frontier.nit:250 */
1922 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
1923 REGB0 = TAG_Int(3);
1924 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1925 if (!once_value_23) {
1926 fra.me.REG[0] = BOX_NativeString("");
1927 REGB0 = TAG_Int(0);
1928 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1929 once_value_23 = fra.me.REG[0];
1930 register_static_object(&once_value_23);
1931 } else fra.me.REG[0] = once_value_23;
1932 fra.me.REG[0] = fra.me.REG[0];
1933 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
1934 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1935 if (UNTAG_Bool(REGB0)) {
1936 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 250);
1937 }
1938 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[4])(fra.me.REG[4]);
1939 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1940 if (UNTAG_Bool(REGB0)) {
1941 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 250);
1942 }
1943 fra.me.REG[5] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[4])(fra.me.REG[4]);
1944 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1945 if (UNTAG_Bool(REGB0)) {
1946 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 250);
1947 }
1948 fra.me.REG[7] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[4])(fra.me.REG[4]);
1949 fra.me.REG[7] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[7]);
1950 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1951 if (!once_value_24) {
1952 fra.me.REG[7] = BOX_NativeString(";\n");
1953 REGB0 = TAG_Int(2);
1954 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1955 once_value_24 = fra.me.REG[7];
1956 register_static_object(&once_value_24);
1957 } else fra.me.REG[7] = once_value_24;
1958 fra.me.REG[7] = fra.me.REG[7];
1959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1960 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1961 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1962 /* native_interface/frontier.nit:251 */
1963 fra.me.REG[6] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
1964 REGB0 = TAG_Int(3);
1965 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1966 if (!once_value_25) {
1967 fra.me.REG[7] = BOX_NativeString("return ");
1968 REGB0 = TAG_Int(7);
1969 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1970 once_value_25 = fra.me.REG[7];
1971 register_static_object(&once_value_25);
1972 } else fra.me.REG[7] = once_value_25;
1973 fra.me.REG[7] = fra.me.REG[7];
1974 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
1975 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1976 if (UNTAG_Bool(REGB0)) {
1977 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 251);
1978 }
1979 fra.me.REG[4] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[4])(fra.me.REG[4]);
1980 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1981 if (!once_value_26) {
1982 fra.me.REG[4] = BOX_NativeString(";\n");
1983 REGB0 = TAG_Int(2);
1984 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1985 once_value_26 = fra.me.REG[4];
1986 register_static_object(&once_value_26);
1987 } else fra.me.REG[4] = once_value_26;
1988 fra.me.REG[4] = fra.me.REG[4];
1989 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1990 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1991 CALL_compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
1992 }
1993 /* native_interface/frontier.nit:254 */
1994 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
1995 fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[2])(fra.me.REG[2]);
1996 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1997 stack_frame_head = fra.me.prev;
1998 return;
1999 }
2000 static const char LOCATE_native_interface___frontier___MMSrcMethod___compile_out_to_frontier[] = "frontier::MMSrcMethod::compile_out_to_frontier";
2001 void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p0, val_t p1){
2002 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
2003 val_t REGB0;
2004 val_t REGB1;
2005 val_t REGB2;
2006 val_t tmp;
2007 static val_t once_value_1; /* Once value */
2008 static val_t once_value_2; /* Once value */
2009 static val_t once_value_3; /* Once value */
2010 static val_t once_value_4; /* Once value */
2011 static val_t once_value_5; /* Once value */
2012 static val_t once_value_6; /* Once value */
2013 static val_t once_value_9; /* Once value */
2014 static val_t once_value_10; /* Once value */
2015 static val_t once_value_11; /* Once value */
2016 static val_t once_value_12; /* Once value */
2017 static val_t once_value_13; /* Once value */
2018 static val_t once_value_14; /* Once value */
2019 static val_t once_value_15; /* Once value */
2020 static val_t once_value_16; /* Once value */
2021 static val_t once_value_17; /* Once value */
2022 static val_t once_value_18; /* Once value */
2023 static val_t once_value_19; /* Once value */
2024 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2025 fra.me.file = LOCATE_native_interface___frontier;
2026 fra.me.line = 257;
2027 fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_out_to_frontier;
2028 fra.me.has_broke = 0;
2029 fra.me.REG_size = 9;
2030 fra.me.nitni_local_ref_head = NULL;
2031 fra.me.REG[0] = NIT_NULL;
2032 fra.me.REG[1] = NIT_NULL;
2033 fra.me.REG[2] = NIT_NULL;
2034 fra.me.REG[3] = NIT_NULL;
2035 fra.me.REG[4] = NIT_NULL;
2036 fra.me.REG[5] = NIT_NULL;
2037 fra.me.REG[6] = NIT_NULL;
2038 fra.me.REG[7] = NIT_NULL;
2039 fra.me.REG[8] = NIT_NULL;
2040 fra.me.REG[0] = p0;
2041 fra.me.REG[1] = p1;
2042 /* native_interface/frontier.nit:257 */
2043 fra.me.REG[2] = fra.me.REG[0];
2044 /* native_interface/frontier.nit:266 */
2045 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[2])(fra.me.REG[2]);
2046 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
2047 if (UNTAG_Bool(REGB0)) {
2048 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super(fra.me.REG[2])(fra.me.REG[2]);
2049 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2050 } else {
2051 REGB1 = TAG_Bool(0);
2052 REGB0 = REGB1;
2053 }
2054 if (UNTAG_Bool(REGB0)) {
2055 /* native_interface/frontier.nit:267 */
2056 fra.me.REG[3] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[2])(fra.me.REG[2]);
2057 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
2058 } else {
2059 /* native_interface/frontier.nit:266 */
2060 REGB1 = TAG_Bool(0);
2061 REGB0 = REGB1;
2062 }
2063 if (UNTAG_Bool(REGB0)) {
2064 /* native_interface/frontier.nit:267 */
2065 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2066 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2067 if (UNTAG_Bool(REGB0)) {
2068 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 267);
2069 }
2070 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
2071 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2072 if (UNTAG_Bool(REGB0)) {
2073 } else {
2074 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2075 if (UNTAG_Bool(REGB1)) {
2076 REGB1 = TAG_Bool(0);
2077 REGB0 = REGB1;
2078 } else {
2079 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2080 REGB0 = REGB1;
2081 }
2082 }
2083 if (UNTAG_Bool(REGB0)) {
2084 REGB0 = TAG_Bool(1);
2085 } else {
2086 /* native_interface/frontier.nit:268 */
2087 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2088 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2089 if (UNTAG_Bool(REGB1)) {
2090 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 268);
2091 }
2092 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
2093 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2094 if (UNTAG_Bool(REGB1)) {
2095 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 268);
2096 }
2097 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
2098 fra.me.REG[3] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[3])(fra.me.REG[3]);
2099 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2100 if (UNTAG_Bool(REGB1)) {
2101 } else {
2102 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2103 if (UNTAG_Bool(REGB2)) {
2104 REGB2 = TAG_Bool(0);
2105 REGB1 = REGB2;
2106 } else {
2107 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2108 REGB1 = REGB2;
2109 }
2110 }
2111 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
2112 /* native_interface/frontier.nit:267 */
2113 REGB0 = REGB1;
2114 }
2115 } else {
2116 /* native_interface/frontier.nit:266 */
2117 REGB1 = TAG_Bool(0);
2118 REGB0 = REGB1;
2119 }
2120 fra.me.REG[3] = REGB0;
2121 /* native_interface/frontier.nit:271 */
2122 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2123 REGB0 = TAG_Int(3);
2124 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2125 if (!once_value_1) {
2126 fra.me.REG[6] = BOX_NativeString("\n/* out/indirect function for ");
2127 REGB0 = TAG_Int(30);
2128 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
2129 once_value_1 = fra.me.REG[6];
2130 register_static_object(&once_value_1);
2131 } else fra.me.REG[6] = once_value_1;
2132 fra.me.REG[6] = fra.me.REG[6];
2133 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2134 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[2])(fra.me.REG[2]);
2135 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2136 if (!once_value_2) {
2137 fra.me.REG[6] = BOX_NativeString(" */\n");
2138 REGB0 = TAG_Int(4);
2139 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
2140 once_value_2 = fra.me.REG[6];
2141 register_static_object(&once_value_2);
2142 } else fra.me.REG[6] = once_value_2;
2143 fra.me.REG[6] = fra.me.REG[6];
2144 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2145 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
2146 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2147 /* native_interface/frontier.nit:272 */
2148 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
2149 REGB0 = TAG_Int(3);
2150 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2151 if (!once_value_3) {
2152 fra.me.REG[6] = BOX_NativeString("");
2153 REGB0 = TAG_Int(0);
2154 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
2155 once_value_3 = fra.me.REG[6];
2156 register_static_object(&once_value_3);
2157 } else fra.me.REG[6] = once_value_3;
2158 fra.me.REG[6] = fra.me.REG[6];
2159 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
2160 fra.me.REG[6] = CALL_native_interface___ni_metamodel___MMMethod___out_csignature(fra.me.REG[2])(fra.me.REG[2]);
2161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
2162 if (!once_value_4) {
2163 fra.me.REG[6] = BOX_NativeString(";\n");
2164 REGB0 = TAG_Int(2);
2165 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
2166 once_value_4 = fra.me.REG[6];
2167 register_static_object(&once_value_4);
2168 } else fra.me.REG[6] = once_value_4;
2169 fra.me.REG[6] = fra.me.REG[6];
2170 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
2171 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2172 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
2173 /* native_interface/frontier.nit:275 */
2174 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
2175 REGB0 = TAG_Int(3);
2176 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2177 if (!once_value_5) {
2178 fra.me.REG[6] = BOX_NativeString("/* out/indirect function for ");
2179 REGB0 = TAG_Int(29);
2180 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
2181 once_value_5 = fra.me.REG[6];
2182 register_static_object(&once_value_5);
2183 } else fra.me.REG[6] = once_value_5;
2184 fra.me.REG[6] = fra.me.REG[6];
2185 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2186 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[2])(fra.me.REG[2]);
2187 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2188 if (!once_value_6) {
2189 fra.me.REG[6] = BOX_NativeString(" */\n");
2190 REGB0 = TAG_Int(4);
2191 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
2192 once_value_6 = fra.me.REG[6];
2193 register_static_object(&once_value_6);
2194 } else fra.me.REG[6] = once_value_6;
2195 fra.me.REG[6] = fra.me.REG[6];
2196 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2197 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
2198 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2199 /* native_interface/frontier.nit:276 */
2200 fra.me.REG[5] = CALL_native_interface___ni_metamodel___MMMethod___out_csignature(fra.me.REG[2])(fra.me.REG[2]);
2201 fra.me.REG[5] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[5]);
2202 /* native_interface/frontier.nit:279 */
2203 fra.me.REG[4] = NEW_List_standard___collection___list___List___init();
2204 /* native_interface/frontier.nit:280 */
2205 REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
2206 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2207 if (UNTAG_Bool(REGB0)) {
2208 fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2209 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2210 if (UNTAG_Bool(REGB0)) {
2211 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 280);
2212 }
2213 fra.me.REG[6] = CALL_native_interface___frontier___MMSignature___recv_ni_variable(fra.me.REG[6])(fra.me.REG[6]);
2214 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
2215 }
2216 /* native_interface/frontier.nit:281 */
2217 fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2218 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2219 if (UNTAG_Bool(REGB0)) {
2220 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 281);
2221 }
2222 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[6])(fra.me.REG[6]);
2223 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
2224 /* native_interface/frontier.nit:283 */
2225 fra.me.REG[6] = NEW_List_standard___collection___list___List___init();
2226 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_native_interface___frontier___MMSrcMethod___compile_out_to_frontier_7));
2227 /* native_interface/frontier.nit:295 */
2228 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2229 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2230 if (UNTAG_Bool(REGB0)) {
2231 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 295);
2232 }
2233 fra.me.REG[3] = CALL_native_interface___frontier___MMSignature___return_ni_variable(fra.me.REG[3])(fra.me.REG[3]);
2234 /* native_interface/frontier.nit:296 */
2235 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2236 if (UNTAG_Bool(REGB0)) {
2237 } else {
2238 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2239 if (UNTAG_Bool(REGB1)) {
2240 REGB1 = TAG_Bool(0);
2241 REGB0 = REGB1;
2242 } else {
2243 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2244 REGB0 = REGB1;
2245 }
2246 }
2247 if (UNTAG_Bool(REGB0)) {
2248 REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
2249 } else {
2250 REGB1 = TAG_Bool(0);
2251 REGB0 = REGB1;
2252 }
2253 if (UNTAG_Bool(REGB0)) {
2254 /* native_interface/frontier.nit:297 */
2255 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2256 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2257 if (UNTAG_Bool(REGB0)) {
2258 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 297);
2259 }
2260 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[4])(fra.me.REG[4]);
2261 fra.me.REG[4] = NEW_ReturnVariable_native_interface___frontier___ReturnVariable___init(fra.me.REG[4]);
2262 fra.me.REG[3] = fra.me.REG[4];
2263 }
2264 /* native_interface/frontier.nit:300 */
2265 fra.me.REG[4] = NEW_Buffer_standard___string___Buffer___init();
2266 /* native_interface/frontier.nit:301 */
2267 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2268 if (UNTAG_Bool(REGB0)) {
2269 } else {
2270 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2271 if (UNTAG_Bool(REGB1)) {
2272 REGB1 = TAG_Bool(0);
2273 REGB0 = REGB1;
2274 } else {
2275 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2276 REGB0 = REGB1;
2277 }
2278 }
2279 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2280 if (UNTAG_Bool(REGB0)) {
2281 /* native_interface/frontier.nit:302 */
2282 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2283 if (UNTAG_Bool(REGB0)) {
2284 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 302);
2285 }
2286 CALL_native_interface___frontier___NiVariable___prepare_for_nit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2287 /* native_interface/frontier.nit:303 */
2288 REGB0 = TAG_Int(3);
2289 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2290 if (!once_value_9) {
2291 fra.me.REG[8] = BOX_NativeString("");
2292 REGB0 = TAG_Int(0);
2293 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
2294 once_value_9 = fra.me.REG[8];
2295 register_static_object(&once_value_9);
2296 } else fra.me.REG[8] = once_value_9;
2297 fra.me.REG[8] = fra.me.REG[8];
2298 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
2299 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2300 if (UNTAG_Bool(REGB0)) {
2301 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 303);
2302 }
2303 fra.me.REG[8] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[3])(fra.me.REG[3]);
2304 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
2305 if (!once_value_10) {
2306 fra.me.REG[8] = BOX_NativeString(" = ");
2307 REGB0 = TAG_Int(3);
2308 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
2309 once_value_10 = fra.me.REG[8];
2310 register_static_object(&once_value_10);
2311 } else fra.me.REG[8] = once_value_10;
2312 fra.me.REG[8] = fra.me.REG[8];
2313 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
2314 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
2315 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
2316 }
2317 /* native_interface/frontier.nit:306 */
2318 REGB0 = TAG_Int(5);
2319 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2320 if (!once_value_11) {
2321 fra.me.REG[8] = BOX_NativeString("");
2322 REGB0 = TAG_Int(0);
2323 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
2324 once_value_11 = fra.me.REG[8];
2325 register_static_object(&once_value_11);
2326 } else fra.me.REG[8] = once_value_11;
2327 fra.me.REG[8] = fra.me.REG[8];
2328 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
2329 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMMethod___extern_name(fra.me.REG[2])(fra.me.REG[2]);
2330 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
2331 if (UNTAG_Bool(REGB0)) {
2332 } else {
2333 nit_abort("Cast failed", NULL, LOCATE_native_interface___frontier, 306);
2334 }
2335 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
2336 if (!once_value_12) {
2337 fra.me.REG[2] = BOX_NativeString("( ");
2338 REGB0 = TAG_Int(2);
2339 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2340 once_value_12 = fra.me.REG[2];
2341 register_static_object(&once_value_12);
2342 } else fra.me.REG[2] = once_value_12;
2343 fra.me.REG[2] = fra.me.REG[2];
2344 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
2345 if (!once_value_13) {
2346 fra.me.REG[2] = BOX_NativeString(", ");
2347 REGB0 = TAG_Int(2);
2348 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2349 once_value_13 = fra.me.REG[2];
2350 register_static_object(&once_value_13);
2351 } else fra.me.REG[2] = once_value_13;
2352 fra.me.REG[2] = fra.me.REG[2];
2353 fra.me.REG[2] = CALL_standard___string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
2354 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
2355 if (!once_value_14) {
2356 fra.me.REG[2] = BOX_NativeString(" );\n");
2357 REGB0 = TAG_Int(4);
2358 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2359 once_value_14 = fra.me.REG[2];
2360 register_static_object(&once_value_14);
2361 } else fra.me.REG[2] = once_value_14;
2362 fra.me.REG[2] = fra.me.REG[2];
2363 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
2364 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
2365 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
2366 /* native_interface/frontier.nit:308 */
2367 fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[5])(fra.me.REG[5]);
2368 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
2369 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
2370 /* native_interface/frontier.nit:310 */
2371 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2372 if (UNTAG_Bool(REGB0)) {
2373 } else {
2374 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2375 if (UNTAG_Bool(REGB1)) {
2376 REGB1 = TAG_Bool(0);
2377 REGB0 = REGB1;
2378 } else {
2379 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2380 REGB0 = REGB1;
2381 }
2382 }
2383 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2384 if (UNTAG_Bool(REGB0)) {
2385 /* native_interface/frontier.nit:311 */
2386 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[5])(fra.me.REG[5]);
2387 REGB0 = TAG_Int(3);
2388 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2389 if (!once_value_15) {
2390 fra.me.REG[2] = BOX_NativeString("");
2391 REGB0 = TAG_Int(0);
2392 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2393 once_value_15 = fra.me.REG[2];
2394 register_static_object(&once_value_15);
2395 } else fra.me.REG[2] = once_value_15;
2396 fra.me.REG[2] = fra.me.REG[2];
2397 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
2398 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2399 if (UNTAG_Bool(REGB0)) {
2400 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 311);
2401 }
2402 fra.me.REG[2] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[3])(fra.me.REG[3]);
2403 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2404 if (UNTAG_Bool(REGB0)) {
2405 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 311);
2406 }
2407 fra.me.REG[6] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[3])(fra.me.REG[3]);
2408 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2409 if (UNTAG_Bool(REGB0)) {
2410 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 311);
2411 }
2412 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[3])(fra.me.REG[3]);
2413 fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___assign_from_friendly(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6], fra.me.REG[0]);
2414 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
2415 if (!once_value_16) {
2416 fra.me.REG[0] = BOX_NativeString(";\n");
2417 REGB0 = TAG_Int(2);
2418 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
2419 once_value_16 = fra.me.REG[0];
2420 register_static_object(&once_value_16);
2421 } else fra.me.REG[0] = once_value_16;
2422 fra.me.REG[0] = fra.me.REG[0];
2423 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
2424 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
2425 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
2426 }
2427 /* native_interface/frontier.nit:314 */
2428 fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[5])(fra.me.REG[5]);
2429 if (!once_value_17) {
2430 fra.me.REG[4] = BOX_NativeString("nitni_local_ref_clean( );\n");
2431 REGB0 = TAG_Int(27);
2432 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
2433 once_value_17 = fra.me.REG[4];
2434 register_static_object(&once_value_17);
2435 } else fra.me.REG[4] = once_value_17;
2436 fra.me.REG[4] = fra.me.REG[4];
2437 CALL_compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
2438 /* native_interface/frontier.nit:317 */
2439 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2440 if (UNTAG_Bool(REGB0)) {
2441 } else {
2442 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2443 if (UNTAG_Bool(REGB1)) {
2444 REGB1 = TAG_Bool(0);
2445 REGB0 = REGB1;
2446 } else {
2447 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2448 REGB0 = REGB1;
2449 }
2450 }
2451 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2452 if (UNTAG_Bool(REGB0)) {
2453 /* native_interface/frontier.nit:318 */
2454 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[5])(fra.me.REG[5]);
2455 REGB0 = TAG_Int(3);
2456 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2457 if (!once_value_18) {
2458 fra.me.REG[0] = BOX_NativeString("return ");
2459 REGB0 = TAG_Int(7);
2460 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
2461 once_value_18 = fra.me.REG[0];
2462 register_static_object(&once_value_18);
2463 } else fra.me.REG[0] = once_value_18;
2464 fra.me.REG[0] = fra.me.REG[0];
2465 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
2466 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2467 if (UNTAG_Bool(REGB0)) {
2468 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 318);
2469 }
2470 fra.me.REG[3] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[3])(fra.me.REG[3]);
2471 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
2472 if (!once_value_19) {
2473 fra.me.REG[3] = BOX_NativeString(";\n");
2474 REGB0 = TAG_Int(2);
2475 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2476 once_value_19 = fra.me.REG[3];
2477 register_static_object(&once_value_19);
2478 } else fra.me.REG[3] = once_value_19;
2479 fra.me.REG[3] = fra.me.REG[3];
2480 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
2481 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
2482 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
2483 }
2484 /* native_interface/frontier.nit:321 */
2485 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
2486 fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[5])(fra.me.REG[5]);
2487 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
2488 stack_frame_head = fra.me.prev;
2489 return;
2490 }
2491 void OC_native_interface___frontier___MMSrcMethod___compile_out_to_frontier_7(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2492 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2493 val_t REGB0;
2494 val_t REGB1;
2495 val_t REGB2;
2496 fun_t CREG[1];
2497 val_t tmp;
2498 static val_t once_value_8; /* Once value */
2499 /* native_interface/frontier.nit:285 */
2500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2501 fra.me.file = LOCATE_native_interface___frontier;
2502 fra.me.line = 0;
2503 fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_out_to_frontier;
2504 fra.me.has_broke = 0;
2505 fra.me.REG_size = 2;
2506 fra.me.nitni_local_ref_head = NULL;
2507 fra.me.REG[0] = NIT_NULL;
2508 fra.me.REG[1] = NIT_NULL;
2509 fra.me.closure_ctx = closctx_param;
2510 fra.me.closure_funs = CREG;
2511 fra.me.REG[0] = p0;
2512 CREG[0] = clos_fun0;
2513 /* native_interface/frontier.nit:286 */
2514 REGB0 = TAG_Bool(!UNTAG_Bool(closctx->REG[3]));
2515 if (UNTAG_Bool(REGB0)) {
2516 REGB0 = TAG_Bool(1);
2517 } else {
2518 fra.me.REG[1] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[0])(fra.me.REG[0]);
2519 fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
2520 fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[1])(fra.me.REG[1]);
2521 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2522 if (UNTAG_Bool(REGB1)) {
2523 } else {
2524 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2525 if (UNTAG_Bool(REGB2)) {
2526 REGB2 = TAG_Bool(0);
2527 REGB1 = REGB2;
2528 } else {
2529 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2530 REGB1 = REGB2;
2531 }
2532 }
2533 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
2534 REGB0 = REGB1;
2535 }
2536 if (UNTAG_Bool(REGB0)) {
2537 /* native_interface/frontier.nit:287 */
2538 CALL_native_interface___frontier___NiVariable___prepare_for_c(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
2539 /* native_interface/frontier.nit:288 */
2540 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___as_arg_to_c(fra.me.REG[0])(fra.me.REG[0]);
2541 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
2542 } else {
2543 /* native_interface/frontier.nit:290 */
2544 if (!once_value_8) {
2545 fra.me.REG[0] = BOX_NativeString("NULL");
2546 REGB0 = TAG_Int(4);
2547 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
2548 once_value_8 = fra.me.REG[0];
2549 register_static_object(&once_value_8);
2550 } else fra.me.REG[0] = once_value_8;
2551 fra.me.REG[0] = fra.me.REG[0];
2552 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
2553 }
2554 stack_frame_head = fra.me.prev;
2555 return;
2556 }
2557 static const char LOCATE_native_interface___frontier___MMSignature___recv_ni_variable[] = "frontier::MMSignature::recv_ni_variable";
2558 val_t native_interface___frontier___MMSignature___recv_ni_variable(val_t p0){
2559 struct {struct stack_frame_t me;} fra;
2560 val_t REGB0;
2561 val_t tmp;
2562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2563 fra.me.file = LOCATE_native_interface___frontier;
2564 fra.me.line = 327;
2565 fra.me.meth = LOCATE_native_interface___frontier___MMSignature___recv_ni_variable;
2566 fra.me.has_broke = 0;
2567 fra.me.REG_size = 1;
2568 fra.me.nitni_local_ref_head = NULL;
2569 fra.me.REG[0] = NIT_NULL;
2570 fra.me.REG[0] = p0;
2571 /* native_interface/frontier.nit:327 */
2572 REGB0 = TAG_Bool(ATTR_native_interface___frontier___MMSignature_____atrecv_ni_variable(fra.me.REG[0])!=NIT_NULL);
2573 if (UNTAG_Bool(REGB0)) {
2574 } else {
2575 nit_abort("Uninitialized attribute %s", "@recv_ni_variable", LOCATE_native_interface___frontier, 327);
2576 }
2577 fra.me.REG[0] = ATTR_native_interface___frontier___MMSignature_____atrecv_ni_variable(fra.me.REG[0]);
2578 stack_frame_head = fra.me.prev;
2579 return fra.me.REG[0];
2580 }
2581 static const char LOCATE_native_interface___frontier___MMSignature___recv_ni_variable__eq[] = "frontier::MMSignature::recv_ni_variable=";
2582 void native_interface___frontier___MMSignature___recv_ni_variable__eq(val_t p0, val_t p1){
2583 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2584 val_t tmp;
2585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2586 fra.me.file = LOCATE_native_interface___frontier;
2587 fra.me.line = 327;
2588 fra.me.meth = LOCATE_native_interface___frontier___MMSignature___recv_ni_variable__eq;
2589 fra.me.has_broke = 0;
2590 fra.me.REG_size = 2;
2591 fra.me.nitni_local_ref_head = NULL;
2592 fra.me.REG[0] = NIT_NULL;
2593 fra.me.REG[1] = NIT_NULL;
2594 fra.me.REG[0] = p0;
2595 fra.me.REG[1] = p1;
2596 /* native_interface/frontier.nit:327 */
2597 ATTR_native_interface___frontier___MMSignature_____atrecv_ni_variable(fra.me.REG[0]) = fra.me.REG[1];
2598 stack_frame_head = fra.me.prev;
2599 return;
2600 }
2601 static const char LOCATE_native_interface___frontier___MMSignature___return_ni_variable[] = "frontier::MMSignature::return_ni_variable";
2602 val_t native_interface___frontier___MMSignature___return_ni_variable(val_t p0){
2603 struct {struct stack_frame_t me;} fra;
2604 val_t tmp;
2605 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2606 fra.me.file = LOCATE_native_interface___frontier;
2607 fra.me.line = 328;
2608 fra.me.meth = LOCATE_native_interface___frontier___MMSignature___return_ni_variable;
2609 fra.me.has_broke = 0;
2610 fra.me.REG_size = 1;
2611 fra.me.nitni_local_ref_head = NULL;
2612 fra.me.REG[0] = NIT_NULL;
2613 fra.me.REG[0] = p0;
2614 /* native_interface/frontier.nit:328 */
2615 fra.me.REG[0] = ATTR_native_interface___frontier___MMSignature_____atreturn_ni_variable(fra.me.REG[0]);
2616 stack_frame_head = fra.me.prev;
2617 return fra.me.REG[0];
2618 }
2619 static const char LOCATE_native_interface___frontier___MMSignature___return_ni_variable__eq[] = "frontier::MMSignature::return_ni_variable=";
2620 void native_interface___frontier___MMSignature___return_ni_variable__eq(val_t p0, val_t p1){
2621 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2622 val_t tmp;
2623 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2624 fra.me.file = LOCATE_native_interface___frontier;
2625 fra.me.line = 328;
2626 fra.me.meth = LOCATE_native_interface___frontier___MMSignature___return_ni_variable__eq;
2627 fra.me.has_broke = 0;
2628 fra.me.REG_size = 2;
2629 fra.me.nitni_local_ref_head = NULL;
2630 fra.me.REG[0] = NIT_NULL;
2631 fra.me.REG[1] = NIT_NULL;
2632 fra.me.REG[0] = p0;
2633 fra.me.REG[1] = p1;
2634 /* native_interface/frontier.nit:328 */
2635 ATTR_native_interface___frontier___MMSignature_____atreturn_ni_variable(fra.me.REG[0]) = fra.me.REG[1];
2636 stack_frame_head = fra.me.prev;
2637 return;
2638 }
2639 static const char LOCATE_native_interface___frontier___MMSignature___init[] = "frontier::MMSignature::(static_type::MMSignature::init)";
2640 void native_interface___frontier___MMSignature___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
2641 int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMSignature].i;
2642 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
2643 val_t REGB0;
2644 val_t REGB1;
2645 val_t tmp;
2646 if (init_table[itpos3]) return;
2647 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2648 fra.me.file = LOCATE_native_interface___frontier;
2649 fra.me.line = 329;
2650 fra.me.meth = LOCATE_native_interface___frontier___MMSignature___init;
2651 fra.me.has_broke = 0;
2652 fra.me.REG_size = 7;
2653 fra.me.nitni_local_ref_head = NULL;
2654 fra.me.REG[0] = NIT_NULL;
2655 fra.me.REG[1] = NIT_NULL;
2656 fra.me.REG[2] = NIT_NULL;
2657 fra.me.REG[3] = NIT_NULL;
2658 fra.me.REG[4] = NIT_NULL;
2659 fra.me.REG[5] = NIT_NULL;
2660 fra.me.REG[6] = NIT_NULL;
2661 fra.me.REG[0] = p0;
2662 fra.me.REG[1] = p1;
2663 fra.me.REG[2] = p2;
2664 fra.me.REG[3] = p3;
2665 /* native_interface/frontier.nit:329 */
2666 fra.me.REG[4] = fra.me.REG[0];
2667 fra.me.REG[5] = fra.me.REG[2];
2668 fra.me.REG[6] = fra.me.REG[3];
2669 /* native_interface/frontier.nit:331 */
2670 CALL_SUPER_native_interface___frontier___MMSignature___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
2671 /* native_interface/frontier.nit:333 */
2672 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2673 if (UNTAG_Bool(REGB0)) {
2674 } else {
2675 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2676 if (UNTAG_Bool(REGB1)) {
2677 REGB1 = TAG_Bool(0);
2678 REGB0 = REGB1;
2679 } else {
2680 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
2681 REGB0 = REGB1;
2682 }
2683 }
2684 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2685 if (UNTAG_Bool(REGB0)) {
2686 /* native_interface/frontier.nit:334 */
2687 fra.me.REG[5] = NEW_ReturnVariable_native_interface___frontier___ReturnVariable___init(fra.me.REG[5]);
2688 CALL_native_interface___frontier___MMSignature___return_ni_variable__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2689 } else {
2690 /* native_interface/frontier.nit:336 */
2691 CALL_native_interface___frontier___MMSignature___return_ni_variable__eq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2692 }
2693 /* native_interface/frontier.nit:338 */
2694 fra.me.REG[6] = NEW_ReceiverVariable_native_interface___frontier___ReceiverVariable___init(fra.me.REG[6]);
2695 CALL_native_interface___frontier___MMSignature___recv_ni_variable__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
2696 stack_frame_head = fra.me.prev;
2697 init_table[itpos3] = 1;
2698 return;
2699 }
2700 static const char LOCATE_native_interface___frontier___MMSignature___compile_frontier[] = "frontier::MMSignature::compile_frontier";
2701 void native_interface___frontier___MMSignature___compile_frontier(val_t p0, val_t p1){
2702 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
2703 val_t REGB0;
2704 val_t REGB1;
2705 val_t REGB2;
2706 val_t tmp;
2707 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2708 fra.me.file = LOCATE_native_interface___frontier;
2709 fra.me.line = 341;
2710 fra.me.meth = LOCATE_native_interface___frontier___MMSignature___compile_frontier;
2711 fra.me.has_broke = 0;
2712 fra.me.REG_size = 6;
2713 fra.me.nitni_local_ref_head = NULL;
2714 fra.me.REG[0] = NIT_NULL;
2715 fra.me.REG[1] = NIT_NULL;
2716 fra.me.REG[2] = NIT_NULL;
2717 fra.me.REG[3] = NIT_NULL;
2718 fra.me.REG[4] = NIT_NULL;
2719 fra.me.REG[5] = NIT_NULL;
2720 fra.me.REG[0] = p0;
2721 fra.me.REG[1] = p1;
2722 /* native_interface/frontier.nit:344 */
2723 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
2724 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[0])(fra.me.REG[0]);
2725 fra.me.REG[3] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[3])(fra.me.REG[3]);
2726 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2727 /* native_interface/frontier.nit:347 */
2728 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
2729 /* ../lib/standard/collection/array.nit:269 */
2730 REGB0 = TAG_Int(0);
2731 /* ../lib/standard/collection/array.nit:270 */
2732 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2733 if (UNTAG_Bool(REGB1)) {
2734 } else {
2735 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2736 }
2737 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2738 /* ../lib/standard/collection/array.nit:271 */
2739 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
2740 /* ../lib/standard/collection/array.nit:272 */
2741 while(1) {
2742 /* ../lib/standard/collection/array.nit:24 */
2743 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
2744 if (UNTAG_Bool(REGB1)) {
2745 } else {
2746 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2747 }
2748 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
2749 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2750 if (UNTAG_Bool(REGB2)) {
2751 } else {
2752 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2753 }
2754 /* ../lib/standard/kernel.nit:235 */
2755 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2756 /* ../lib/standard/collection/array.nit:272 */
2757 if (UNTAG_Bool(REGB1)) {
2758 /* ../lib/standard/collection/array.nit:273 */
2759 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2760 if (UNTAG_Bool(REGB1)) {
2761 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2762 }
2763 /* ../lib/standard/collection/array.nit:718 */
2764 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
2765 /* native_interface/frontier.nit:347 */
2766 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
2767 fra.me.REG[4] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[4])(fra.me.REG[4]);
2768 fra.me.REG[4] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[4])(fra.me.REG[4]);
2769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
2770 /* ../lib/standard/collection/array.nit:274 */
2771 REGB1 = TAG_Int(1);
2772 /* ../lib/standard/kernel.nit:238 */
2773 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
2774 /* ../lib/standard/collection/array.nit:274 */
2775 REGB0 = REGB1;
2776 } else {
2777 /* ../lib/standard/collection/array.nit:272 */
2778 goto label1;
2779 }
2780 }
2781 label1: while(0);
2782 /* native_interface/frontier.nit:350 */
2783 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
2784 /* native_interface/frontier.nit:351 */
2785 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2786 if (UNTAG_Bool(REGB0)) {
2787 } else {
2788 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2789 if (UNTAG_Bool(REGB1)) {
2790 REGB1 = TAG_Bool(0);
2791 REGB0 = REGB1;
2792 } else {
2793 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2794 REGB0 = REGB1;
2795 }
2796 }
2797 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2798 if (UNTAG_Bool(REGB0)) {
2799 /* native_interface/frontier.nit:352 */
2800 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
2801 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2802 if (UNTAG_Bool(REGB0)) {
2803 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 352);
2804 }
2805 fra.me.REG[0] = CALL_metamodel___type_formal___MMType___direct_type(fra.me.REG[0])(fra.me.REG[0]);
2806 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2807 }
2808 stack_frame_head = fra.me.prev;
2809 return;
2810 }
2811 static const char LOCATE_native_interface___frontier___FrontierVisitor___header_top[] = "frontier::FrontierVisitor::header_top";
2812 val_t native_interface___frontier___FrontierVisitor___header_top(val_t p0){
2813 struct {struct stack_frame_t me;} fra;
2814 val_t REGB0;
2815 val_t tmp;
2816 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2817 fra.me.file = LOCATE_native_interface___frontier;
2818 fra.me.line = 360;
2819 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header_top;
2820 fra.me.has_broke = 0;
2821 fra.me.REG_size = 1;
2822 fra.me.nitni_local_ref_head = NULL;
2823 fra.me.REG[0] = NIT_NULL;
2824 fra.me.REG[0] = p0;
2825 /* native_interface/frontier.nit:360 */
2826 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0])!=NIT_NULL);
2827 if (UNTAG_Bool(REGB0)) {
2828 } else {
2829 nit_abort("Uninitialized attribute %s", "@header_top", LOCATE_native_interface___frontier, 360);
2830 }
2831 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]);
2832 stack_frame_head = fra.me.prev;
2833 return fra.me.REG[0];
2834 }
2835 static const char LOCATE_native_interface___frontier___FrontierVisitor___header_top__eq[] = "frontier::FrontierVisitor::header_top=";
2836 void native_interface___frontier___FrontierVisitor___header_top__eq(val_t p0, val_t p1){
2837 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2838 val_t tmp;
2839 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2840 fra.me.file = LOCATE_native_interface___frontier;
2841 fra.me.line = 360;
2842 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header_top__eq;
2843 fra.me.has_broke = 0;
2844 fra.me.REG_size = 2;
2845 fra.me.nitni_local_ref_head = NULL;
2846 fra.me.REG[0] = NIT_NULL;
2847 fra.me.REG[1] = NIT_NULL;
2848 fra.me.REG[0] = p0;
2849 fra.me.REG[1] = p1;
2850 /* native_interface/frontier.nit:360 */
2851 ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]) = fra.me.REG[1];
2852 stack_frame_head = fra.me.prev;
2853 return;
2854 }
2855 static const char LOCATE_native_interface___frontier___FrontierVisitor___header[] = "frontier::FrontierVisitor::header";
2856 val_t native_interface___frontier___FrontierVisitor___header(val_t p0){
2857 struct {struct stack_frame_t me;} fra;
2858 val_t REGB0;
2859 val_t tmp;
2860 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2861 fra.me.file = LOCATE_native_interface___frontier;
2862 fra.me.line = 363;
2863 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header;
2864 fra.me.has_broke = 0;
2865 fra.me.REG_size = 1;
2866 fra.me.nitni_local_ref_head = NULL;
2867 fra.me.REG[0] = NIT_NULL;
2868 fra.me.REG[0] = p0;
2869 /* native_interface/frontier.nit:363 */
2870 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0])!=NIT_NULL);
2871 if (UNTAG_Bool(REGB0)) {
2872 } else {
2873 nit_abort("Uninitialized attribute %s", "@header", LOCATE_native_interface___frontier, 363);
2874 }
2875 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0]);
2876 stack_frame_head = fra.me.prev;
2877 return fra.me.REG[0];
2878 }
2879 static const char LOCATE_native_interface___frontier___FrontierVisitor___header__eq[] = "frontier::FrontierVisitor::header=";
2880 void native_interface___frontier___FrontierVisitor___header__eq(val_t p0, val_t p1){
2881 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2882 val_t tmp;
2883 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2884 fra.me.file = LOCATE_native_interface___frontier;
2885 fra.me.line = 363;
2886 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header__eq;
2887 fra.me.has_broke = 0;
2888 fra.me.REG_size = 2;
2889 fra.me.nitni_local_ref_head = NULL;
2890 fra.me.REG[0] = NIT_NULL;
2891 fra.me.REG[1] = NIT_NULL;
2892 fra.me.REG[0] = p0;
2893 fra.me.REG[1] = p1;
2894 /* native_interface/frontier.nit:363 */
2895 ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0]) = fra.me.REG[1];
2896 stack_frame_head = fra.me.prev;
2897 return;
2898 }
2899 static const char LOCATE_native_interface___frontier___FrontierVisitor___body[] = "frontier::FrontierVisitor::body";
2900 val_t native_interface___frontier___FrontierVisitor___body(val_t p0){
2901 struct {struct stack_frame_t me;} fra;
2902 val_t REGB0;
2903 val_t tmp;
2904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2905 fra.me.file = LOCATE_native_interface___frontier;
2906 fra.me.line = 366;
2907 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___body;
2908 fra.me.has_broke = 0;
2909 fra.me.REG_size = 1;
2910 fra.me.nitni_local_ref_head = NULL;
2911 fra.me.REG[0] = NIT_NULL;
2912 fra.me.REG[0] = p0;
2913 /* native_interface/frontier.nit:366 */
2914 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0])!=NIT_NULL);
2915 if (UNTAG_Bool(REGB0)) {
2916 } else {
2917 nit_abort("Uninitialized attribute %s", "@body", LOCATE_native_interface___frontier, 366);
2918 }
2919 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0]);
2920 stack_frame_head = fra.me.prev;
2921 return fra.me.REG[0];
2922 }
2923 static const char LOCATE_native_interface___frontier___FrontierVisitor___body__eq[] = "frontier::FrontierVisitor::body=";
2924 void native_interface___frontier___FrontierVisitor___body__eq(val_t p0, val_t p1){
2925 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2926 val_t tmp;
2927 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2928 fra.me.file = LOCATE_native_interface___frontier;
2929 fra.me.line = 366;
2930 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___body__eq;
2931 fra.me.has_broke = 0;
2932 fra.me.REG_size = 2;
2933 fra.me.nitni_local_ref_head = NULL;
2934 fra.me.REG[0] = NIT_NULL;
2935 fra.me.REG[1] = NIT_NULL;
2936 fra.me.REG[0] = p0;
2937 fra.me.REG[1] = p1;
2938 /* native_interface/frontier.nit:366 */
2939 ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0]) = fra.me.REG[1];
2940 stack_frame_head = fra.me.prev;
2941 return;
2942 }
2943 static const char LOCATE_native_interface___frontier___FrontierVisitor___friendlys[] = "frontier::FrontierVisitor::friendlys";
2944 val_t native_interface___frontier___FrontierVisitor___friendlys(val_t p0){
2945 struct {struct stack_frame_t me;} fra;
2946 val_t REGB0;
2947 val_t tmp;
2948 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2949 fra.me.file = LOCATE_native_interface___frontier;
2950 fra.me.line = 369;
2951 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___friendlys;
2952 fra.me.has_broke = 0;
2953 fra.me.REG_size = 1;
2954 fra.me.nitni_local_ref_head = NULL;
2955 fra.me.REG[0] = NIT_NULL;
2956 fra.me.REG[0] = p0;
2957 /* native_interface/frontier.nit:369 */
2958 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0])!=NIT_NULL);
2959 if (UNTAG_Bool(REGB0)) {
2960 } else {
2961 nit_abort("Uninitialized attribute %s", "@friendlys", LOCATE_native_interface___frontier, 369);
2962 }
2963 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]);
2964 stack_frame_head = fra.me.prev;
2965 return fra.me.REG[0];
2966 }
2967 static const char LOCATE_native_interface___frontier___FrontierVisitor___friendlys__eq[] = "frontier::FrontierVisitor::friendlys=";
2968 void native_interface___frontier___FrontierVisitor___friendlys__eq(val_t p0, val_t p1){
2969 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2970 val_t tmp;
2971 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2972 fra.me.file = LOCATE_native_interface___frontier;
2973 fra.me.line = 369;
2974 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___friendlys__eq;
2975 fra.me.has_broke = 0;
2976 fra.me.REG_size = 2;
2977 fra.me.nitni_local_ref_head = NULL;
2978 fra.me.REG[0] = NIT_NULL;
2979 fra.me.REG[1] = NIT_NULL;
2980 fra.me.REG[0] = p0;
2981 fra.me.REG[1] = p1;
2982 /* native_interface/frontier.nit:369 */
2983 ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]) = fra.me.REG[1];
2984 stack_frame_head = fra.me.prev;
2985 return;
2986 }
2987 static const char LOCATE_native_interface___frontier___FrontierVisitor___types[] = "frontier::FrontierVisitor::types";
2988 val_t native_interface___frontier___FrontierVisitor___types(val_t p0){
2989 struct {struct stack_frame_t me;} fra;
2990 val_t REGB0;
2991 val_t tmp;
2992 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2993 fra.me.file = LOCATE_native_interface___frontier;
2994 fra.me.line = 372;
2995 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___types;
2996 fra.me.has_broke = 0;
2997 fra.me.REG_size = 1;
2998 fra.me.nitni_local_ref_head = NULL;
2999 fra.me.REG[0] = NIT_NULL;
3000 fra.me.REG[0] = p0;
3001 /* native_interface/frontier.nit:372 */
3002 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0])!=NIT_NULL);
3003 if (UNTAG_Bool(REGB0)) {
3004 } else {
3005 nit_abort("Uninitialized attribute %s", "@types", LOCATE_native_interface___frontier, 372);
3006 }
3007 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0]);
3008 stack_frame_head = fra.me.prev;
3009 return fra.me.REG[0];
3010 }
3011 static const char LOCATE_native_interface___frontier___FrontierVisitor___types__eq[] = "frontier::FrontierVisitor::types=";
3012 void native_interface___frontier___FrontierVisitor___types__eq(val_t p0, val_t p1){
3013 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3014 val_t tmp;
3015 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3016 fra.me.file = LOCATE_native_interface___frontier;
3017 fra.me.line = 372;
3018 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___types__eq;
3019 fra.me.has_broke = 0;
3020 fra.me.REG_size = 2;
3021 fra.me.nitni_local_ref_head = NULL;
3022 fra.me.REG[0] = NIT_NULL;
3023 fra.me.REG[1] = NIT_NULL;
3024 fra.me.REG[0] = p0;
3025 fra.me.REG[1] = p1;
3026 /* native_interface/frontier.nit:372 */
3027 ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0]) = fra.me.REG[1];
3028 stack_frame_head = fra.me.prev;
3029 return;
3030 }
3031 static const char LOCATE_native_interface___frontier___FrontierVisitor___casts[] = "frontier::FrontierVisitor::casts";
3032 val_t native_interface___frontier___FrontierVisitor___casts(val_t p0){
3033 struct {struct stack_frame_t me;} fra;
3034 val_t REGB0;
3035 val_t tmp;
3036 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3037 fra.me.file = LOCATE_native_interface___frontier;
3038 fra.me.line = 375;
3039 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___casts;
3040 fra.me.has_broke = 0;
3041 fra.me.REG_size = 1;
3042 fra.me.nitni_local_ref_head = NULL;
3043 fra.me.REG[0] = NIT_NULL;
3044 fra.me.REG[0] = p0;
3045 /* native_interface/frontier.nit:375 */
3046 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0])!=NIT_NULL);
3047 if (UNTAG_Bool(REGB0)) {
3048 } else {
3049 nit_abort("Uninitialized attribute %s", "@casts", LOCATE_native_interface___frontier, 375);
3050 }
3051 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0]);
3052 stack_frame_head = fra.me.prev;
3053 return fra.me.REG[0];
3054 }
3055 static const char LOCATE_native_interface___frontier___FrontierVisitor___casts__eq[] = "frontier::FrontierVisitor::casts=";
3056 void native_interface___frontier___FrontierVisitor___casts__eq(val_t p0, val_t p1){
3057 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3058 val_t tmp;
3059 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3060 fra.me.file = LOCATE_native_interface___frontier;
3061 fra.me.line = 375;
3062 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___casts__eq;
3063 fra.me.has_broke = 0;
3064 fra.me.REG_size = 2;
3065 fra.me.nitni_local_ref_head = NULL;
3066 fra.me.REG[0] = NIT_NULL;
3067 fra.me.REG[1] = NIT_NULL;
3068 fra.me.REG[0] = p0;
3069 fra.me.REG[1] = p1;
3070 /* native_interface/frontier.nit:375 */
3071 ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0]) = fra.me.REG[1];
3072 stack_frame_head = fra.me.prev;
3073 return;
3074 }
3075 static const char LOCATE_native_interface___frontier___FrontierVisitor___mmmodule[] = "frontier::FrontierVisitor::mmmodule";
3076 val_t native_interface___frontier___FrontierVisitor___mmmodule(val_t p0){
3077 struct {struct stack_frame_t me;} fra;
3078 val_t REGB0;
3079 val_t tmp;
3080 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3081 fra.me.file = LOCATE_native_interface___frontier;
3082 fra.me.line = 378;
3083 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___mmmodule;
3084 fra.me.has_broke = 0;
3085 fra.me.REG_size = 1;
3086 fra.me.nitni_local_ref_head = NULL;
3087 fra.me.REG[0] = NIT_NULL;
3088 fra.me.REG[0] = p0;
3089 /* native_interface/frontier.nit:378 */
3090 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0])!=NIT_NULL);
3091 if (UNTAG_Bool(REGB0)) {
3092 } else {
3093 nit_abort("Uninitialized attribute %s", "@mmmodule", LOCATE_native_interface___frontier, 378);
3094 }
3095 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0]);
3096 stack_frame_head = fra.me.prev;
3097 return fra.me.REG[0];
3098 }
3099 static const char LOCATE_native_interface___frontier___FrontierVisitor___mmmodule__eq[] = "frontier::FrontierVisitor::mmmodule=";
3100 void native_interface___frontier___FrontierVisitor___mmmodule__eq(val_t p0, val_t p1){
3101 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3102 val_t tmp;
3103 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3104 fra.me.file = LOCATE_native_interface___frontier;
3105 fra.me.line = 378;
3106 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___mmmodule__eq;
3107 fra.me.has_broke = 0;
3108 fra.me.REG_size = 2;
3109 fra.me.nitni_local_ref_head = NULL;
3110 fra.me.REG[0] = NIT_NULL;
3111 fra.me.REG[1] = NIT_NULL;
3112 fra.me.REG[0] = p0;
3113 fra.me.REG[1] = p1;
3114 /* native_interface/frontier.nit:378 */
3115 ATTR_native_interface___frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0]) = fra.me.REG[1];
3116 stack_frame_head = fra.me.prev;
3117 return;
3118 }
3119 static const char LOCATE_native_interface___frontier___FrontierVisitor___cprogram[] = "frontier::FrontierVisitor::cprogram";
3120 val_t native_interface___frontier___FrontierVisitor___cprogram(val_t p0){
3121 struct {struct stack_frame_t me;} fra;
3122 val_t REGB0;
3123 val_t tmp;
3124 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3125 fra.me.file = LOCATE_native_interface___frontier;
3126 fra.me.line = 380;
3127 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___cprogram;
3128 fra.me.has_broke = 0;
3129 fra.me.REG_size = 1;
3130 fra.me.nitni_local_ref_head = NULL;
3131 fra.me.REG[0] = NIT_NULL;
3132 fra.me.REG[0] = p0;
3133 /* native_interface/frontier.nit:380 */
3134 REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atcprogram(fra.me.REG[0])!=NIT_NULL);
3135 if (UNTAG_Bool(REGB0)) {
3136 } else {
3137 nit_abort("Uninitialized attribute %s", "@cprogram", LOCATE_native_interface___frontier, 380);
3138 }
3139 fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atcprogram(fra.me.REG[0]);
3140 stack_frame_head = fra.me.prev;
3141 return fra.me.REG[0];
3142 }
3143 static const char LOCATE_native_interface___frontier___FrontierVisitor___cprogram__eq[] = "frontier::FrontierVisitor::cprogram=";
3144 void native_interface___frontier___FrontierVisitor___cprogram__eq(val_t p0, val_t p1){
3145 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3146 val_t tmp;
3147 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3148 fra.me.file = LOCATE_native_interface___frontier;
3149 fra.me.line = 380;
3150 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___cprogram__eq;
3151 fra.me.has_broke = 0;
3152 fra.me.REG_size = 2;
3153 fra.me.nitni_local_ref_head = NULL;
3154 fra.me.REG[0] = NIT_NULL;
3155 fra.me.REG[1] = NIT_NULL;
3156 fra.me.REG[0] = p0;
3157 fra.me.REG[1] = p1;
3158 /* native_interface/frontier.nit:380 */
3159 ATTR_native_interface___frontier___FrontierVisitor_____atcprogram(fra.me.REG[0]) = fra.me.REG[1];
3160 stack_frame_head = fra.me.prev;
3161 return;
3162 }
3163 static const char LOCATE_native_interface___frontier___FrontierVisitor___compile_cached[] = "frontier::FrontierVisitor::compile_cached";
3164 void native_interface___frontier___FrontierVisitor___compile_cached(val_t p0){
3165 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3166 val_t tmp;
3167 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3168 fra.me.file = LOCATE_native_interface___frontier;
3169 fra.me.line = 382;
3170 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___compile_cached;
3171 fra.me.has_broke = 0;
3172 fra.me.REG_size = 2;
3173 fra.me.nitni_local_ref_head = NULL;
3174 fra.me.REG[0] = NIT_NULL;
3175 fra.me.REG[1] = NIT_NULL;
3176 fra.me.REG[0] = p0;
3177 /* native_interface/frontier.nit:386 */
3178 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[0])(fra.me.REG[0]);
3179 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_native_interface___frontier___FrontierVisitor___compile_cached_1));
3180 /* native_interface/frontier.nit:389 */
3181 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___friendlys(fra.me.REG[0])(fra.me.REG[0]);
3182 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_native_interface___frontier___FrontierVisitor___compile_cached_2));
3183 /* native_interface/frontier.nit:392 */
3184 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___casts(fra.me.REG[0])(fra.me.REG[0]);
3185 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_native_interface___frontier___FrontierVisitor___compile_cached_3));
3186 stack_frame_head = fra.me.prev;
3187 return;
3188 }
3189 void OC_native_interface___frontier___FrontierVisitor___compile_cached_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
3190 struct {struct stack_frame_t me;} fra;
3191 fun_t CREG[1];
3192 val_t tmp;
3193 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3194 fra.me.file = LOCATE_native_interface___frontier;
3195 fra.me.line = 0;
3196 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___compile_cached;
3197 fra.me.has_broke = 0;
3198 fra.me.REG_size = 1;
3199 fra.me.nitni_local_ref_head = NULL;
3200 fra.me.REG[0] = NIT_NULL;
3201 fra.me.closure_ctx = closctx_param;
3202 fra.me.closure_funs = CREG;
3203 fra.me.REG[0] = p0;
3204 CREG[0] = clos_fun0;
3205 CALL_native_interface___frontier___MMType___compile_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
3206 stack_frame_head = fra.me.prev;
3207 return;
3208 }
3209 void OC_native_interface___frontier___FrontierVisitor___compile_cached_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
3210 struct {struct stack_frame_t me;} fra;
3211 fun_t CREG[1];
3212 val_t tmp;
3213 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3214 fra.me.file = LOCATE_native_interface___frontier;
3215 fra.me.line = 0;
3216 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___compile_cached;
3217 fra.me.has_broke = 0;
3218 fra.me.REG_size = 1;
3219 fra.me.nitni_local_ref_head = NULL;
3220 fra.me.REG[0] = NIT_NULL;
3221 fra.me.closure_ctx = closctx_param;
3222 fra.me.closure_funs = CREG;
3223 fra.me.REG[0] = p0;
3224 CREG[0] = clos_fun0;
3225 CALL_native_interface___frontier___MMExplicitImport___compile_friendly_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
3226 stack_frame_head = fra.me.prev;
3227 return;
3228 }
3229 void OC_native_interface___frontier___FrontierVisitor___compile_cached_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
3230 struct {struct stack_frame_t me;} fra;
3231 fun_t CREG[1];
3232 val_t tmp;
3233 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3234 fra.me.file = LOCATE_native_interface___frontier;
3235 fra.me.line = 0;
3236 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___compile_cached;
3237 fra.me.has_broke = 0;
3238 fra.me.REG_size = 1;
3239 fra.me.nitni_local_ref_head = NULL;
3240 fra.me.REG[0] = NIT_NULL;
3241 fra.me.closure_ctx = closctx_param;
3242 fra.me.closure_funs = CREG;
3243 fra.me.REG[0] = p0;
3244 CREG[0] = clos_fun0;
3245 CALL_native_interface___frontier___MMImportedCast___compile_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
3246 stack_frame_head = fra.me.prev;
3247 return;
3248 }
3249 static const char LOCATE_native_interface___frontier___FrontierVisitor___write_to_files[] = "frontier::FrontierVisitor::write_to_files";
3250 void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, val_t p1){
3251 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3252 val_t REGB0;
3253 val_t tmp;
3254 static val_t once_value_1; /* Once value */
3255 static val_t once_value_2; /* Once value */
3256 static val_t once_value_3; /* Once value */
3257 static val_t once_value_4; /* Once value */
3258 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3259 fra.me.file = LOCATE_native_interface___frontier;
3260 fra.me.line = 395;
3261 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___write_to_files;
3262 fra.me.has_broke = 0;
3263 fra.me.REG_size = 6;
3264 fra.me.nitni_local_ref_head = NULL;
3265 fra.me.REG[0] = NIT_NULL;
3266 fra.me.REG[1] = NIT_NULL;
3267 fra.me.REG[2] = NIT_NULL;
3268 fra.me.REG[3] = NIT_NULL;
3269 fra.me.REG[4] = NIT_NULL;
3270 fra.me.REG[5] = NIT_NULL;
3271 fra.me.REG[0] = p0;
3272 fra.me.REG[1] = p1;
3273 /* native_interface/frontier.nit:397 */
3274 REGB0 = TAG_Int(3);
3275 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3276 if (!once_value_1) {
3277 fra.me.REG[3] = BOX_NativeString("");
3278 REGB0 = TAG_Int(0);
3279 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3280 once_value_1 = fra.me.REG[3];
3281 register_static_object(&once_value_1);
3282 } else fra.me.REG[3] = once_value_1;
3283 fra.me.REG[3] = fra.me.REG[3];
3284 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3285 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3286 if (!once_value_2) {
3287 fra.me.REG[3] = BOX_NativeString("._nitni.h");
3288 REGB0 = TAG_Int(9);
3289 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3290 once_value_2 = fra.me.REG[3];
3291 register_static_object(&once_value_2);
3292 } else fra.me.REG[3] = once_value_2;
3293 fra.me.REG[3] = fra.me.REG[3];
3294 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3295 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3296 /* native_interface/frontier.nit:398 */
3297 fra.me.REG[3] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
3298 /* native_interface/frontier.nit:399 */
3299 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[0])(fra.me.REG[0]);
3300 CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3301 /* native_interface/frontier.nit:400 */
3302 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[0])(fra.me.REG[0]);
3303 CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3304 /* native_interface/frontier.nit:401 */
3305 CALL_standard___stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
3306 /* native_interface/frontier.nit:403 */
3307 REGB0 = TAG_Int(3);
3308 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3309 if (!once_value_3) {
3310 fra.me.REG[5] = BOX_NativeString("");
3311 REGB0 = TAG_Int(0);
3312 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3313 once_value_3 = fra.me.REG[5];
3314 register_static_object(&once_value_3);
3315 } else fra.me.REG[5] = once_value_3;
3316 fra.me.REG[5] = fra.me.REG[5];
3317 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3318 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
3319 if (!once_value_4) {
3320 fra.me.REG[1] = BOX_NativeString("._nitni.c");
3321 REGB0 = TAG_Int(9);
3322 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
3323 once_value_4 = fra.me.REG[1];
3324 register_static_object(&once_value_4);
3325 } else fra.me.REG[1] = once_value_4;
3326 fra.me.REG[1] = fra.me.REG[1];
3327 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
3328 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3329 fra.me.REG[2] = fra.me.REG[4];
3330 /* native_interface/frontier.nit:404 */
3331 fra.me.REG[2] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
3332 fra.me.REG[3] = fra.me.REG[2];
3333 /* native_interface/frontier.nit:405 */
3334 fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[0])(fra.me.REG[0]);
3335 CALL_compiling_writer___Writer___write_to_stream(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3336 /* native_interface/frontier.nit:406 */
3337 CALL_standard___stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
3338 stack_frame_head = fra.me.prev;
3339 return;
3340 }
3341 static const char LOCATE_native_interface___frontier___FrontierVisitor___init[] = "frontier::FrontierVisitor::init";
3342 void native_interface___frontier___FrontierVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
3343 int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_native_interface___frontier___FrontierVisitor].i;
3344 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3345 val_t tmp;
3346 if (init_table[itpos4]) return;
3347 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3348 fra.me.file = LOCATE_native_interface___frontier;
3349 fra.me.line = 0;
3350 fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___init;
3351 fra.me.has_broke = 0;
3352 fra.me.REG_size = 3;
3353 fra.me.nitni_local_ref_head = NULL;
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[0] = p0;
3358 fra.me.REG[1] = p1;
3359 fra.me.REG[2] = p2;
3360 ATTR_native_interface___frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0]) = fra.me.REG[1];
3361 ATTR_native_interface___frontier___FrontierVisitor_____atcprogram(fra.me.REG[0]) = fra.me.REG[2];
3362 stack_frame_head = fra.me.prev;
3363 init_table[itpos4] = 1;
3364 return;
3365 }
3366 static const char LOCATE_native_interface___frontier___MMImportedCast___compile_to_frontier[] = "frontier::MMImportedCast::compile_to_frontier";
3367 void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0, val_t p1){
3368 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3369 val_t REGB0;
3370 val_t REGB1;
3371 val_t tmp;
3372 static val_t once_value_1; /* Once value */
3373 static val_t once_value_2; /* Once value */
3374 static val_t once_value_3; /* Once value */
3375 static val_t once_value_4; /* Once value */
3376 static val_t once_value_5; /* Once value */
3377 static val_t once_value_6; /* Once value */
3378 static val_t once_value_7; /* Once value */
3379 static val_t once_value_8; /* Once value */
3380 static val_t once_value_9; /* Once value */
3381 static val_t once_value_10; /* Once value */
3382 static val_t once_value_11; /* Once value */
3383 static val_t once_value_12; /* Once value */
3384 static val_t once_value_13; /* Once value */
3385 static val_t once_value_14; /* Once value */
3386 static val_t once_value_15; /* Once value */
3387 static val_t once_value_16; /* Once value */
3388 static val_t once_value_17; /* Once value */
3389 static val_t once_value_18; /* Once value */
3390 static val_t once_value_19; /* Once value */
3391 static val_t once_value_20; /* Once value */
3392 static val_t once_value_21; /* Once value */
3393 static val_t once_value_22; /* Once value */
3394 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3395 fra.me.file = LOCATE_native_interface___frontier;
3396 fra.me.line = 411;
3397 fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_to_frontier;
3398 fra.me.has_broke = 0;
3399 fra.me.REG_size = 5;
3400 fra.me.nitni_local_ref_head = NULL;
3401 fra.me.REG[0] = NIT_NULL;
3402 fra.me.REG[1] = NIT_NULL;
3403 fra.me.REG[2] = NIT_NULL;
3404 fra.me.REG[3] = NIT_NULL;
3405 fra.me.REG[4] = NIT_NULL;
3406 fra.me.REG[0] = p0;
3407 fra.me.REG[1] = p1;
3408 /* native_interface/frontier.nit:415 */
3409 REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
3410 if (UNTAG_Bool(REGB0)) {
3411 REGB0 = CALL_metamodel___static_type___MMImportedCast___is_not_null_to_nullable(fra.me.REG[0])(fra.me.REG[0]);
3412 } else {
3413 REGB1 = TAG_Bool(0);
3414 REGB0 = REGB1;
3415 }
3416 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3417 if (UNTAG_Bool(REGB0)) {
3418 /* native_interface/frontier.nit:416 */
3419 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3420 REGB0 = TAG_Int(5);
3421 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3422 if (!once_value_1) {
3423 fra.me.REG[4] = BOX_NativeString("\n/* Type check for ");
3424 REGB0 = TAG_Int(19);
3425 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3426 once_value_1 = fra.me.REG[4];
3427 register_static_object(&once_value_1);
3428 } else fra.me.REG[4] = once_value_1;
3429 fra.me.REG[4] = fra.me.REG[4];
3430 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3431 fra.me.REG[4] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3432 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3433 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3434 if (!once_value_2) {
3435 fra.me.REG[4] = BOX_NativeString(" with ");
3436 REGB0 = TAG_Int(6);
3437 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3438 once_value_2 = fra.me.REG[4];
3439 register_static_object(&once_value_2);
3440 } else fra.me.REG[4] = once_value_2;
3441 fra.me.REG[4] = fra.me.REG[4];
3442 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3443 fra.me.REG[4] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3444 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3445 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3446 if (!once_value_3) {
3447 fra.me.REG[4] = BOX_NativeString(" */\n");
3448 REGB0 = TAG_Int(4);
3449 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3450 once_value_3 = fra.me.REG[4];
3451 register_static_object(&once_value_3);
3452 } else fra.me.REG[4] = once_value_3;
3453 fra.me.REG[4] = fra.me.REG[4];
3454 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3455 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3456 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3457 /* native_interface/frontier.nit:417 */
3458 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3459 REGB0 = TAG_Int(3);
3460 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3461 if (!once_value_4) {
3462 fra.me.REG[4] = BOX_NativeString("");
3463 REGB0 = TAG_Int(0);
3464 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3465 once_value_4 = fra.me.REG[4];
3466 register_static_object(&once_value_4);
3467 } else fra.me.REG[4] = once_value_4;
3468 fra.me.REG[4] = fra.me.REG[4];
3469 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3470 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3471 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
3472 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3473 if (!once_value_5) {
3474 fra.me.REG[4] = BOX_NativeString(";\n");
3475 REGB0 = TAG_Int(2);
3476 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3477 once_value_5 = fra.me.REG[4];
3478 register_static_object(&once_value_5);
3479 } else fra.me.REG[4] = once_value_5;
3480 fra.me.REG[4] = fra.me.REG[4];
3481 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3482 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3483 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3484 /* native_interface/frontier.nit:419 */
3485 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3486 REGB0 = TAG_Int(3);
3487 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3488 if (!once_value_6) {
3489 fra.me.REG[4] = BOX_NativeString("#ifndef ");
3490 REGB0 = TAG_Int(8);
3491 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3492 once_value_6 = fra.me.REG[4];
3493 register_static_object(&once_value_6);
3494 } else fra.me.REG[4] = once_value_6;
3495 fra.me.REG[4] = fra.me.REG[4];
3496 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3497 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
3498 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3499 if (!once_value_7) {
3500 fra.me.REG[4] = BOX_NativeString("\n");
3501 REGB0 = TAG_Int(1);
3502 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3503 once_value_7 = fra.me.REG[4];
3504 register_static_object(&once_value_7);
3505 } else fra.me.REG[4] = once_value_7;
3506 fra.me.REG[4] = fra.me.REG[4];
3507 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3508 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3509 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3510 /* native_interface/frontier.nit:420 */
3511 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3512 REGB0 = TAG_Int(5);
3513 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3514 if (!once_value_8) {
3515 fra.me.REG[4] = BOX_NativeString("#define ");
3516 REGB0 = TAG_Int(8);
3517 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3518 once_value_8 = fra.me.REG[4];
3519 register_static_object(&once_value_8);
3520 } else fra.me.REG[4] = once_value_8;
3521 fra.me.REG[4] = fra.me.REG[4];
3522 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3523 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
3524 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3525 if (!once_value_9) {
3526 fra.me.REG[4] = BOX_NativeString(" ");
3527 REGB0 = TAG_Int(1);
3528 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3529 once_value_9 = fra.me.REG[4];
3530 register_static_object(&once_value_9);
3531 } else fra.me.REG[4] = once_value_9;
3532 fra.me.REG[4] = fra.me.REG[4];
3533 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3534 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3535 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
3536 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3537 if (!once_value_10) {
3538 fra.me.REG[4] = BOX_NativeString("\n");
3539 REGB0 = TAG_Int(1);
3540 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3541 once_value_10 = fra.me.REG[4];
3542 register_static_object(&once_value_10);
3543 } else fra.me.REG[4] = once_value_10;
3544 fra.me.REG[4] = fra.me.REG[4];
3545 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3546 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3547 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3548 /* native_interface/frontier.nit:421 */
3549 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3550 if (!once_value_11) {
3551 fra.me.REG[3] = BOX_NativeString("#endif\n");
3552 REGB0 = TAG_Int(7);
3553 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3554 once_value_11 = fra.me.REG[3];
3555 register_static_object(&once_value_11);
3556 } else fra.me.REG[3] = once_value_11;
3557 fra.me.REG[3] = fra.me.REG[3];
3558 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3559 /* native_interface/frontier.nit:423 */
3560 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3561 fra.me.REG[3] = CALL_native_interface___frontier___MMImportedCast___compile_is(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3562 /* native_interface/frontier.nit:424 */
3563 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
3564 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[3])(fra.me.REG[3]);
3565 CALL_compiling_writer___Writer___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3566 }
3567 /* native_interface/frontier.nit:428 */
3568 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3569 REGB0 = TAG_Int(5);
3570 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3571 if (!once_value_12) {
3572 fra.me.REG[4] = BOX_NativeString("\n/* Cast for ");
3573 REGB0 = TAG_Int(13);
3574 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3575 once_value_12 = fra.me.REG[4];
3576 register_static_object(&once_value_12);
3577 } else fra.me.REG[4] = once_value_12;
3578 fra.me.REG[4] = fra.me.REG[4];
3579 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3580 fra.me.REG[4] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3581 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3582 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3583 if (!once_value_13) {
3584 fra.me.REG[4] = BOX_NativeString(" to ");
3585 REGB0 = TAG_Int(4);
3586 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3587 once_value_13 = fra.me.REG[4];
3588 register_static_object(&once_value_13);
3589 } else fra.me.REG[4] = once_value_13;
3590 fra.me.REG[4] = fra.me.REG[4];
3591 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3592 fra.me.REG[4] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3593 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3594 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3595 if (!once_value_14) {
3596 fra.me.REG[4] = BOX_NativeString(" */\n");
3597 REGB0 = TAG_Int(4);
3598 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3599 once_value_14 = fra.me.REG[4];
3600 register_static_object(&once_value_14);
3601 } else fra.me.REG[4] = once_value_14;
3602 fra.me.REG[4] = fra.me.REG[4];
3603 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3604 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3605 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3606 /* native_interface/frontier.nit:429 */
3607 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3608 REGB0 = TAG_Int(3);
3609 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3610 if (!once_value_15) {
3611 fra.me.REG[4] = BOX_NativeString("");
3612 REGB0 = TAG_Int(0);
3613 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3614 once_value_15 = fra.me.REG[4];
3615 register_static_object(&once_value_15);
3616 } else fra.me.REG[4] = once_value_15;
3617 fra.me.REG[4] = fra.me.REG[4];
3618 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3619 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3620 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___as_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
3621 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3622 if (!once_value_16) {
3623 fra.me.REG[4] = BOX_NativeString(";\n");
3624 REGB0 = TAG_Int(2);
3625 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3626 once_value_16 = fra.me.REG[4];
3627 register_static_object(&once_value_16);
3628 } else fra.me.REG[4] = once_value_16;
3629 fra.me.REG[4] = fra.me.REG[4];
3630 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3631 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3632 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3633 /* native_interface/frontier.nit:431 */
3634 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3635 REGB0 = TAG_Int(3);
3636 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3637 if (!once_value_17) {
3638 fra.me.REG[4] = BOX_NativeString("#ifndef ");
3639 REGB0 = TAG_Int(8);
3640 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3641 once_value_17 = fra.me.REG[4];
3642 register_static_object(&once_value_17);
3643 } else fra.me.REG[4] = once_value_17;
3644 fra.me.REG[4] = fra.me.REG[4];
3645 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3646 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
3647 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3648 if (!once_value_18) {
3649 fra.me.REG[4] = BOX_NativeString("\n");
3650 REGB0 = TAG_Int(1);
3651 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3652 once_value_18 = fra.me.REG[4];
3653 register_static_object(&once_value_18);
3654 } else fra.me.REG[4] = once_value_18;
3655 fra.me.REG[4] = fra.me.REG[4];
3656 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3657 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3658 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3659 /* native_interface/frontier.nit:432 */
3660 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3661 REGB0 = TAG_Int(5);
3662 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3663 if (!once_value_19) {
3664 fra.me.REG[4] = BOX_NativeString("#define ");
3665 REGB0 = TAG_Int(8);
3666 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3667 once_value_19 = fra.me.REG[4];
3668 register_static_object(&once_value_19);
3669 } else fra.me.REG[4] = once_value_19;
3670 fra.me.REG[4] = fra.me.REG[4];
3671 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3672 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
3673 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3674 if (!once_value_20) {
3675 fra.me.REG[4] = BOX_NativeString(" ");
3676 REGB0 = TAG_Int(1);
3677 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3678 once_value_20 = fra.me.REG[4];
3679 register_static_object(&once_value_20);
3680 } else fra.me.REG[4] = once_value_20;
3681 fra.me.REG[4] = fra.me.REG[4];
3682 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3683 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3684 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMImportedCast___as_local_cname(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
3685 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3686 if (!once_value_21) {
3687 fra.me.REG[4] = BOX_NativeString("\n");
3688 REGB0 = TAG_Int(1);
3689 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3690 once_value_21 = fra.me.REG[4];
3691 register_static_object(&once_value_21);
3692 } else fra.me.REG[4] = once_value_21;
3693 fra.me.REG[4] = fra.me.REG[4];
3694 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3695 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3696 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3697 /* native_interface/frontier.nit:433 */
3698 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
3699 if (!once_value_22) {
3700 fra.me.REG[2] = BOX_NativeString("#endif\n");
3701 REGB0 = TAG_Int(7);
3702 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
3703 once_value_22 = fra.me.REG[2];
3704 register_static_object(&once_value_22);
3705 } else fra.me.REG[2] = once_value_22;
3706 fra.me.REG[2] = fra.me.REG[2];
3707 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3708 /* native_interface/frontier.nit:435 */
3709 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3710 fra.me.REG[2] = CALL_native_interface___frontier___MMImportedCast___compile_as(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3711 /* native_interface/frontier.nit:436 */
3712 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
3713 fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[2])(fra.me.REG[2]);
3714 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3715 stack_frame_head = fra.me.prev;
3716 return;
3717 }
3718 static const char LOCATE_native_interface___frontier___MMImportedCast___compile_as[] = "frontier::MMImportedCast::compile_as";
3719 val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t p1){
3720 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
3721 val_t REGB0;
3722 val_t tmp;
3723 static val_t once_value_1; /* Once value */
3724 static val_t once_value_2; /* Once value */
3725 static val_t once_value_3; /* Once value */
3726 static val_t once_value_4; /* Once value */
3727 static val_t once_value_5; /* Once value */
3728 static val_t once_value_6; /* Once value */
3729 static val_t once_value_7; /* Once value */
3730 static val_t once_value_8; /* Once value */
3731 static val_t once_value_9; /* Once value */
3732 static val_t once_value_10; /* Once value */
3733 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3734 fra.me.file = LOCATE_native_interface___frontier;
3735 fra.me.line = 439;
3736 fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_as;
3737 fra.me.has_broke = 0;
3738 fra.me.REG_size = 8;
3739 fra.me.nitni_local_ref_head = NULL;
3740 fra.me.REG[0] = NIT_NULL;
3741 fra.me.REG[1] = NIT_NULL;
3742 fra.me.REG[2] = NIT_NULL;
3743 fra.me.REG[3] = NIT_NULL;
3744 fra.me.REG[4] = NIT_NULL;
3745 fra.me.REG[5] = NIT_NULL;
3746 fra.me.REG[6] = NIT_NULL;
3747 fra.me.REG[7] = NIT_NULL;
3748 fra.me.REG[0] = p0;
3749 fra.me.REG[1] = p1;
3750 /* native_interface/frontier.nit:443 */
3751 fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMImportedCast___as_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3752 fra.me.REG[1] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[1]);
3753 /* native_interface/frontier.nit:445 */
3754 if (!once_value_1) {
3755 fra.me.REG[2] = BOX_NativeString("out");
3756 REGB0 = TAG_Int(3);
3757 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
3758 once_value_1 = fra.me.REG[2];
3759 register_static_object(&once_value_1);
3760 } else fra.me.REG[2] = once_value_1;
3761 fra.me.REG[2] = fra.me.REG[2];
3762 /* native_interface/frontier.nit:446 */
3763 if (!once_value_2) {
3764 fra.me.REG[3] = BOX_NativeString("temp");
3765 REGB0 = TAG_Int(4);
3766 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3767 once_value_2 = fra.me.REG[3];
3768 register_static_object(&once_value_2);
3769 } else fra.me.REG[3] = once_value_2;
3770 fra.me.REG[3] = fra.me.REG[3];
3771 /* native_interface/frontier.nit:448 */
3772 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
3773 REGB0 = TAG_Int(3);
3774 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3775 if (!once_value_3) {
3776 fra.me.REG[6] = BOX_NativeString("val_t ");
3777 REGB0 = TAG_Int(6);
3778 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
3779 once_value_3 = fra.me.REG[6];
3780 register_static_object(&once_value_3);
3781 } else fra.me.REG[6] = once_value_3;
3782 fra.me.REG[6] = fra.me.REG[6];
3783 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3784 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3785 if (!once_value_4) {
3786 fra.me.REG[6] = BOX_NativeString(";\n");
3787 REGB0 = TAG_Int(2);
3788 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
3789 once_value_4 = fra.me.REG[6];
3790 register_static_object(&once_value_4);
3791 } else fra.me.REG[6] = once_value_4;
3792 fra.me.REG[6] = fra.me.REG[6];
3793 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3794 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
3795 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3796 /* native_interface/frontier.nit:449 */
3797 fra.me.REG[5] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3798 REGB0 = TAG_Bool(1);
3799 CALL_native_interface___frontier___MMType___compile_new_local_ref(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2], fra.me.REG[1], REGB0);
3800 /* native_interface/frontier.nit:451 */
3801 fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3802 REGB0 = TAG_Int(3);
3803 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3804 if (!once_value_5) {
3805 fra.me.REG[6] = BOX_NativeString("");
3806 REGB0 = TAG_Int(0);
3807 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
3808 once_value_5 = fra.me.REG[6];
3809 register_static_object(&once_value_5);
3810 } else fra.me.REG[6] = once_value_5;
3811 fra.me.REG[6] = fra.me.REG[6];
3812 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
3813 fra.me.REG[6] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3814 fra.me.REG[7] = CALL_native_interface___ni_metamodel___MMImportedCast___in_name(fra.me.REG[0])(fra.me.REG[0]);
3815 fra.me.REG[7] = CALL_native_interface___ni_metamodel___MMType___assign_from_friendly(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[7]);
3816 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
3817 if (!once_value_6) {
3818 fra.me.REG[7] = BOX_NativeString(";\n");
3819 REGB0 = TAG_Int(2);
3820 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3821 once_value_6 = fra.me.REG[7];
3822 register_static_object(&once_value_6);
3823 } else fra.me.REG[7] = once_value_6;
3824 fra.me.REG[7] = fra.me.REG[7];
3825 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
3826 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3827 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3828 /* native_interface/frontier.nit:454 */
3829 fra.me.REG[4] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3830 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
3831 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3832 if (UNTAG_Bool(REGB0)) {
3833 /* native_interface/frontier.nit:455 */
3834 CALL_native_interface___frontier___MMImportedCast___compile_check_is_not_null(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
3835 }
3836 /* native_interface/frontier.nit:459 */
3837 REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
3838 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3839 if (UNTAG_Bool(REGB0)) {
3840 /* native_interface/frontier.nit:460 */
3841 fra.me.REG[4] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3842 CALL_native_interface___frontier___MMType___compile_check_isa(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[3]);
3843 }
3844 /* native_interface/frontier.nit:463 */
3845 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3846 REGB0 = TAG_Int(3);
3847 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3848 if (!once_value_7) {
3849 fra.me.REG[7] = BOX_NativeString("");
3850 REGB0 = TAG_Int(0);
3851 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3852 once_value_7 = fra.me.REG[7];
3853 register_static_object(&once_value_7);
3854 } else fra.me.REG[7] = once_value_7;
3855 fra.me.REG[7] = fra.me.REG[7];
3856 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
3857 fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
3858 fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
3859 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3860 if (!once_value_8) {
3861 fra.me.REG[3] = BOX_NativeString(";\n");
3862 REGB0 = TAG_Int(2);
3863 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3864 once_value_8 = fra.me.REG[3];
3865 register_static_object(&once_value_8);
3866 } else fra.me.REG[3] = once_value_8;
3867 fra.me.REG[3] = fra.me.REG[3];
3868 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3869 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
3870 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3871 /* native_interface/frontier.nit:465 */
3872 fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3873 REGB0 = TAG_Int(3);
3874 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3875 if (!once_value_9) {
3876 fra.me.REG[3] = BOX_NativeString("return ");
3877 REGB0 = TAG_Int(7);
3878 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3879 once_value_9 = fra.me.REG[3];
3880 register_static_object(&once_value_9);
3881 } else fra.me.REG[3] = once_value_9;
3882 fra.me.REG[3] = fra.me.REG[3];
3883 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3884 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3885 if (!once_value_10) {
3886 fra.me.REG[2] = BOX_NativeString(";\n");
3887 REGB0 = TAG_Int(2);
3888 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
3889 once_value_10 = fra.me.REG[2];
3890 register_static_object(&once_value_10);
3891 } else fra.me.REG[2] = once_value_10;
3892 fra.me.REG[2] = fra.me.REG[2];
3893 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3894 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3895 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3896 /* native_interface/frontier.nit:467 */
3897 goto label11;
3898 label11: while(0);
3899 stack_frame_head = fra.me.prev;
3900 return fra.me.REG[1];
3901 }
3902 static const char LOCATE_native_interface___frontier___MMImportedCast___compile_is[] = "frontier::MMImportedCast::compile_is";
3903 val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t p1){
3904 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3905 val_t REGB0;
3906 val_t tmp;
3907 static val_t once_value_1; /* Once value */
3908 static val_t once_value_2; /* Once value */
3909 static val_t once_value_3; /* Once value */
3910 static val_t once_value_4; /* Once value */
3911 static val_t once_value_5; /* Once value */
3912 static val_t once_value_6; /* Once value */
3913 static val_t once_value_7; /* Once value */
3914 static val_t once_value_8; /* Once value */
3915 static val_t once_value_9; /* Once value */
3916 static val_t once_value_10; /* Once value */
3917 static val_t once_value_11; /* Once value */
3918 static val_t once_value_12; /* Once value */
3919 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3920 fra.me.file = LOCATE_native_interface___frontier;
3921 fra.me.line = 470;
3922 fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_is;
3923 fra.me.has_broke = 0;
3924 fra.me.REG_size = 7;
3925 fra.me.nitni_local_ref_head = NULL;
3926 fra.me.REG[0] = NIT_NULL;
3927 fra.me.REG[1] = NIT_NULL;
3928 fra.me.REG[2] = NIT_NULL;
3929 fra.me.REG[3] = NIT_NULL;
3930 fra.me.REG[4] = NIT_NULL;
3931 fra.me.REG[5] = NIT_NULL;
3932 fra.me.REG[6] = NIT_NULL;
3933 fra.me.REG[0] = p0;
3934 fra.me.REG[1] = p1;
3935 /* native_interface/frontier.nit:474 */
3936 fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3937 fra.me.REG[1] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[1]);
3938 /* native_interface/frontier.nit:476 */
3939 if (!once_value_1) {
3940 fra.me.REG[2] = BOX_NativeString("temp");
3941 REGB0 = TAG_Int(4);
3942 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
3943 once_value_1 = fra.me.REG[2];
3944 register_static_object(&once_value_1);
3945 } else fra.me.REG[2] = once_value_1;
3946 fra.me.REG[2] = fra.me.REG[2];
3947 /* native_interface/frontier.nit:477 */
3948 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
3949 REGB0 = TAG_Int(3);
3950 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3951 if (!once_value_2) {
3952 fra.me.REG[5] = BOX_NativeString("val_t ");
3953 REGB0 = TAG_Int(6);
3954 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3955 once_value_2 = fra.me.REG[5];
3956 register_static_object(&once_value_2);
3957 } else fra.me.REG[5] = once_value_2;
3958 fra.me.REG[5] = fra.me.REG[5];
3959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3960 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3961 if (!once_value_3) {
3962 fra.me.REG[5] = BOX_NativeString(";\n");
3963 REGB0 = TAG_Int(2);
3964 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3965 once_value_3 = fra.me.REG[5];
3966 register_static_object(&once_value_3);
3967 } else fra.me.REG[5] = once_value_3;
3968 fra.me.REG[5] = fra.me.REG[5];
3969 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3970 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3971 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3972 /* native_interface/frontier.nit:479 */
3973 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
3974 REGB0 = TAG_Int(3);
3975 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3976 if (!once_value_4) {
3977 fra.me.REG[5] = BOX_NativeString("");
3978 REGB0 = TAG_Int(0);
3979 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3980 once_value_4 = fra.me.REG[5];
3981 register_static_object(&once_value_4);
3982 } else fra.me.REG[5] = once_value_4;
3983 fra.me.REG[5] = fra.me.REG[5];
3984 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3985 fra.me.REG[5] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
3986 fra.me.REG[6] = CALL_native_interface___ni_metamodel___MMImportedCast___in_name(fra.me.REG[0])(fra.me.REG[0]);
3987 fra.me.REG[6] = CALL_native_interface___ni_metamodel___MMType___assign_from_friendly(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2], fra.me.REG[6]);
3988 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3989 if (!once_value_5) {
3990 fra.me.REG[6] = BOX_NativeString(";\n");
3991 REGB0 = TAG_Int(2);
3992 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
3993 once_value_5 = fra.me.REG[6];
3994 register_static_object(&once_value_5);
3995 } else fra.me.REG[6] = once_value_5;
3996 fra.me.REG[6] = fra.me.REG[6];
3997 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3998 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3999 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4000 /* native_interface/frontier.nit:481 */
4001 REGB0 = CALL_metamodel___static_type___MMImportedCast___is_nullable_to_not_null(fra.me.REG[0])(fra.me.REG[0]);
4002 if (UNTAG_Bool(REGB0)) {
4003 /* native_interface/frontier.nit:482 */
4004 REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
4005 if (UNTAG_Bool(REGB0)) {
4006 /* native_interface/frontier.nit:483 */
4007 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4008 REGB0 = TAG_Int(3);
4009 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4010 if (!once_value_6) {
4011 fra.me.REG[6] = BOX_NativeString("if ( ! ISNULL(");
4012 REGB0 = TAG_Int(14);
4013 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4014 once_value_6 = fra.me.REG[6];
4015 register_static_object(&once_value_6);
4016 } else fra.me.REG[6] = once_value_6;
4017 fra.me.REG[6] = fra.me.REG[6];
4018 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
4019 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4020 if (!once_value_7) {
4021 fra.me.REG[6] = BOX_NativeString(") ) return 0;\n");
4022 REGB0 = TAG_Int(14);
4023 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4024 once_value_7 = fra.me.REG[6];
4025 register_static_object(&once_value_7);
4026 } else fra.me.REG[6] = once_value_7;
4027 fra.me.REG[6] = fra.me.REG[6];
4028 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
4029 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4030 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4031 } else {
4032 /* native_interface/frontier.nit:485 */
4033 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4034 REGB0 = TAG_Int(3);
4035 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4036 if (!once_value_8) {
4037 fra.me.REG[6] = BOX_NativeString("if ( ISNULL(");
4038 REGB0 = TAG_Int(12);
4039 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4040 once_value_8 = fra.me.REG[6];
4041 register_static_object(&once_value_8);
4042 } else fra.me.REG[6] = once_value_8;
4043 fra.me.REG[6] = fra.me.REG[6];
4044 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4045 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4046 if (!once_value_9) {
4047 fra.me.REG[6] = BOX_NativeString(") ) return 0;\n");
4048 REGB0 = TAG_Int(14);
4049 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4050 once_value_9 = fra.me.REG[6];
4051 register_static_object(&once_value_9);
4052 } else fra.me.REG[6] = once_value_9;
4053 fra.me.REG[6] = fra.me.REG[6];
4054 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4055 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4056 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4057 }
4058 }
4059 /* native_interface/frontier.nit:489 */
4060 REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
4061 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4062 if (UNTAG_Bool(REGB0)) {
4063 /* native_interface/frontier.nit:490 */
4064 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4065 REGB0 = TAG_Int(3);
4066 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4067 if (!once_value_10) {
4068 fra.me.REG[6] = BOX_NativeString("if ( ! ");
4069 REGB0 = TAG_Int(7);
4070 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4071 once_value_10 = fra.me.REG[6];
4072 register_static_object(&once_value_10);
4073 } else fra.me.REG[6] = once_value_10;
4074 fra.me.REG[6] = fra.me.REG[6];
4075 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
4076 fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
4077 fra.me.REG[2] = CALL_native_interface___frontier___MMType___compile_condition_isa(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
4078 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4079 if (!once_value_11) {
4080 fra.me.REG[2] = BOX_NativeString(" ) return 0;\n");
4081 REGB0 = TAG_Int(13);
4082 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4083 once_value_11 = fra.me.REG[2];
4084 register_static_object(&once_value_11);
4085 } else fra.me.REG[2] = once_value_11;
4086 fra.me.REG[2] = fra.me.REG[2];
4087 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4088 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4089 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4090 }
4091 /* native_interface/frontier.nit:493 */
4092 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4093 if (!once_value_12) {
4094 fra.me.REG[3] = BOX_NativeString("return 1;\n");
4095 REGB0 = TAG_Int(10);
4096 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4097 once_value_12 = fra.me.REG[3];
4098 register_static_object(&once_value_12);
4099 } else fra.me.REG[3] = once_value_12;
4100 fra.me.REG[3] = fra.me.REG[3];
4101 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4102 /* native_interface/frontier.nit:495 */
4103 goto label13;
4104 label13: while(0);
4105 stack_frame_head = fra.me.prev;
4106 return fra.me.REG[1];
4107 }
4108 static const char LOCATE_native_interface___frontier___MMImportedCast___compile_check_is_not_null[] = "frontier::MMImportedCast::compile_check_is_not_null";
4109 void native_interface___frontier___MMImportedCast___compile_check_is_not_null(val_t p0, val_t p1, val_t p2){
4110 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4111 val_t REGB0;
4112 val_t tmp;
4113 static val_t once_value_1; /* Once value */
4114 static val_t once_value_2; /* Once value */
4115 static val_t once_value_3; /* Once value */
4116 static val_t once_value_4; /* Once value */
4117 static val_t once_value_5; /* Once value */
4118 static val_t once_value_6; /* Once value */
4119 static val_t once_value_7; /* Once value */
4120 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4121 fra.me.file = LOCATE_native_interface___frontier;
4122 fra.me.line = 498;
4123 fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_check_is_not_null;
4124 fra.me.has_broke = 0;
4125 fra.me.REG_size = 6;
4126 fra.me.nitni_local_ref_head = NULL;
4127 fra.me.REG[0] = NIT_NULL;
4128 fra.me.REG[1] = NIT_NULL;
4129 fra.me.REG[2] = NIT_NULL;
4130 fra.me.REG[3] = NIT_NULL;
4131 fra.me.REG[4] = NIT_NULL;
4132 fra.me.REG[5] = NIT_NULL;
4133 fra.me.REG[0] = p0;
4134 fra.me.REG[1] = p1;
4135 fra.me.REG[2] = p2;
4136 /* native_interface/frontier.nit:502 */
4137 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4138 REGB0 = TAG_Int(3);
4139 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4140 if (!once_value_1) {
4141 fra.me.REG[5] = BOX_NativeString("if ( ISNULL(");
4142 REGB0 = TAG_Int(12);
4143 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4144 once_value_1 = fra.me.REG[5];
4145 register_static_object(&once_value_1);
4146 } else fra.me.REG[5] = once_value_1;
4147 fra.me.REG[5] = fra.me.REG[5];
4148 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4149 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4150 if (!once_value_2) {
4151 fra.me.REG[2] = BOX_NativeString(") ){");
4152 REGB0 = TAG_Int(4);
4153 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4154 once_value_2 = fra.me.REG[2];
4155 register_static_object(&once_value_2);
4156 } else fra.me.REG[2] = once_value_2;
4157 fra.me.REG[2] = fra.me.REG[2];
4158 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4159 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4160 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4161 /* native_interface/frontier.nit:503 */
4162 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4163 REGB0 = TAG_Int(5);
4164 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4165 if (!once_value_3) {
4166 fra.me.REG[2] = BOX_NativeString("\tfprintf( stderr, \"Casting from ");
4167 REGB0 = TAG_Int(32);
4168 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4169 once_value_3 = fra.me.REG[2];
4170 register_static_object(&once_value_3);
4171 } else fra.me.REG[2] = once_value_3;
4172 fra.me.REG[2] = fra.me.REG[2];
4173 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4174 fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
4175 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4176 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4177 if (!once_value_4) {
4178 fra.me.REG[2] = BOX_NativeString(" to ");
4179 REGB0 = TAG_Int(4);
4180 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4181 once_value_4 = fra.me.REG[2];
4182 register_static_object(&once_value_4);
4183 } else fra.me.REG[2] = once_value_4;
4184 fra.me.REG[2] = fra.me.REG[2];
4185 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4186 fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
4187 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
4188 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4189 if (!once_value_5) {
4190 fra.me.REG[0] = BOX_NativeString(" failed because value is null.\" );\n");
4191 REGB0 = TAG_Int(35);
4192 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4193 once_value_5 = fra.me.REG[0];
4194 register_static_object(&once_value_5);
4195 } else fra.me.REG[0] = once_value_5;
4196 fra.me.REG[0] = fra.me.REG[0];
4197 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4198 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4199 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4200 /* native_interface/frontier.nit:504 */
4201 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4202 if (!once_value_6) {
4203 fra.me.REG[4] = BOX_NativeString("\tabort();\n");
4204 REGB0 = TAG_Int(10);
4205 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4206 once_value_6 = fra.me.REG[4];
4207 register_static_object(&once_value_6);
4208 } else fra.me.REG[4] = once_value_6;
4209 fra.me.REG[4] = fra.me.REG[4];
4210 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4211 /* native_interface/frontier.nit:505 */
4212 fra.me.REG[1] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4213 if (!once_value_7) {
4214 fra.me.REG[4] = BOX_NativeString("}");
4215 REGB0 = TAG_Int(1);
4216 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4217 once_value_7 = fra.me.REG[4];
4218 register_static_object(&once_value_7);
4219 } else fra.me.REG[4] = once_value_7;
4220 fra.me.REG[4] = fra.me.REG[4];
4221 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4222 stack_frame_head = fra.me.prev;
4223 return;
4224 }
4225 static const char LOCATE_native_interface___frontier___MMImportedCast_____eqeq[] = "frontier::MMImportedCast::(kernel::Object::==)";
4226 val_t native_interface___frontier___MMImportedCast_____eqeq(val_t p0, val_t p1){
4227 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4228 val_t REGB0;
4229 val_t REGB1;
4230 val_t tmp;
4231 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4232 fra.me.file = LOCATE_native_interface___frontier;
4233 fra.me.line = 508;
4234 fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast_____eqeq;
4235 fra.me.has_broke = 0;
4236 fra.me.REG_size = 4;
4237 fra.me.nitni_local_ref_head = NULL;
4238 fra.me.REG[0] = NIT_NULL;
4239 fra.me.REG[1] = NIT_NULL;
4240 fra.me.REG[2] = NIT_NULL;
4241 fra.me.REG[3] = NIT_NULL;
4242 fra.me.REG[0] = p0;
4243 fra.me.REG[1] = p1;
4244 /* native_interface/frontier.nit:510 */
4245 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMImportedCast, ID_metamodel___static_type___MMImportedCast)) /*cast MMImportedCast*/;
4246 if (UNTAG_Bool(REGB0)) {
4247 /* native_interface/frontier.nit:511 */
4248 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
4249 if (UNTAG_Bool(REGB0)) {
4250 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 511);
4251 }
4252 fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[1])(fra.me.REG[1]);
4253 fra.me.REG[3] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
4254 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
4255 if (UNTAG_Bool(REGB0)) {
4256 } else {
4257 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4258 REGB0 = REGB1;
4259 }
4260 } else {
4261 /* native_interface/frontier.nit:510 */
4262 REGB1 = TAG_Bool(0);
4263 REGB0 = REGB1;
4264 }
4265 if (UNTAG_Bool(REGB0)) {
4266 /* native_interface/frontier.nit:511 */
4267 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
4268 if (UNTAG_Bool(REGB0)) {
4269 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 511);
4270 }
4271 fra.me.REG[1] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[1])(fra.me.REG[1]);
4272 fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
4273 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
4274 if (UNTAG_Bool(REGB0)) {
4275 } else {
4276 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4277 REGB0 = REGB1;
4278 }
4279 } else {
4280 /* native_interface/frontier.nit:510 */
4281 REGB1 = TAG_Bool(0);
4282 REGB0 = REGB1;
4283 }
4284 goto label1;
4285 label1: while(0);
4286 stack_frame_head = fra.me.prev;
4287 return REGB0;
4288 }
4289 static const char LOCATE_native_interface___frontier___MMImportedCast___hash[] = "frontier::MMImportedCast::(hash::Object::hash)";
4290 val_t native_interface___frontier___MMImportedCast___hash(val_t p0){
4291 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4292 val_t REGB0;
4293 val_t REGB1;
4294 val_t tmp;
4295 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4296 fra.me.file = LOCATE_native_interface___frontier;
4297 fra.me.line = 513;
4298 fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___hash;
4299 fra.me.has_broke = 0;
4300 fra.me.REG_size = 2;
4301 fra.me.nitni_local_ref_head = NULL;
4302 fra.me.REG[0] = NIT_NULL;
4303 fra.me.REG[1] = NIT_NULL;
4304 fra.me.REG[0] = p0;
4305 /* native_interface/frontier.nit:515 */
4306 fra.me.REG[1] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
4307 REGB0 = CALL_standard___hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
4308 fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
4309 REGB1 = CALL_standard___hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
4310 /* ../lib/standard/kernel.nit:238 */
4311 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
4312 /* native_interface/frontier.nit:515 */
4313 goto label1;
4314 label1: while(0);
4315 stack_frame_head = fra.me.prev;
4316 return REGB1;
4317 }
4318 static const char LOCATE_native_interface___frontier___MMType___compile_check_isa[] = "frontier::MMType::compile_check_isa";
4319 void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1, val_t p2){
4320 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4321 val_t REGB0;
4322 val_t tmp;
4323 static val_t once_value_1; /* Once value */
4324 static val_t once_value_2; /* Once value */
4325 static val_t once_value_3; /* Once value */
4326 static val_t once_value_4; /* Once value */
4327 static val_t once_value_5; /* Once value */
4328 static val_t once_value_6; /* Once value */
4329 static val_t once_value_7; /* Once value */
4330 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4331 fra.me.file = LOCATE_native_interface___frontier;
4332 fra.me.line = 520;
4333 fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_check_isa;
4334 fra.me.has_broke = 0;
4335 fra.me.REG_size = 6;
4336 fra.me.nitni_local_ref_head = NULL;
4337 fra.me.REG[0] = NIT_NULL;
4338 fra.me.REG[1] = NIT_NULL;
4339 fra.me.REG[2] = NIT_NULL;
4340 fra.me.REG[3] = NIT_NULL;
4341 fra.me.REG[4] = NIT_NULL;
4342 fra.me.REG[5] = NIT_NULL;
4343 fra.me.REG[0] = p0;
4344 fra.me.REG[1] = p1;
4345 fra.me.REG[2] = p2;
4346 /* native_interface/frontier.nit:526 */
4347 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4348 REGB0 = TAG_Int(3);
4349 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4350 if (!once_value_1) {
4351 fra.me.REG[5] = BOX_NativeString("if ( ! ");
4352 REGB0 = TAG_Int(7);
4353 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4354 once_value_1 = fra.me.REG[5];
4355 register_static_object(&once_value_1);
4356 } else fra.me.REG[5] = once_value_1;
4357 fra.me.REG[5] = fra.me.REG[5];
4358 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4359 fra.me.REG[2] = CALL_native_interface___frontier___MMType___compile_condition_isa(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
4360 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4361 if (!once_value_2) {
4362 fra.me.REG[2] = BOX_NativeString(" ){\n");
4363 REGB0 = TAG_Int(4);
4364 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4365 once_value_2 = fra.me.REG[2];
4366 register_static_object(&once_value_2);
4367 } else fra.me.REG[2] = once_value_2;
4368 fra.me.REG[2] = fra.me.REG[2];
4369 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4370 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4371 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4372 /* native_interface/frontier.nit:527 */
4373 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4374 REGB0 = TAG_Int(5);
4375 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4376 if (!once_value_3) {
4377 fra.me.REG[2] = BOX_NativeString("\tfprintf( stderr, \"Casting to ");
4378 REGB0 = TAG_Int(30);
4379 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4380 once_value_3 = fra.me.REG[2];
4381 register_static_object(&once_value_3);
4382 } else fra.me.REG[2] = once_value_3;
4383 fra.me.REG[2] = fra.me.REG[2];
4384 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4385 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
4386 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4387 if (!once_value_4) {
4388 fra.me.REG[2] = BOX_NativeString(" failed because value is not a ");
4389 REGB0 = TAG_Int(31);
4390 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4391 once_value_4 = fra.me.REG[2];
4392 register_static_object(&once_value_4);
4393 } else fra.me.REG[2] = once_value_4;
4394 fra.me.REG[2] = fra.me.REG[2];
4395 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4396 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
4397 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4398 if (!once_value_5) {
4399 fra.me.REG[0] = BOX_NativeString(".\" );\n");
4400 REGB0 = TAG_Int(6);
4401 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4402 once_value_5 = fra.me.REG[0];
4403 register_static_object(&once_value_5);
4404 } else fra.me.REG[0] = once_value_5;
4405 fra.me.REG[0] = fra.me.REG[0];
4406 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
4407 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4408 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4409 /* native_interface/frontier.nit:528 */
4410 fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4411 if (!once_value_6) {
4412 fra.me.REG[4] = BOX_NativeString("\tabort();\n");
4413 REGB0 = TAG_Int(10);
4414 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4415 once_value_6 = fra.me.REG[4];
4416 register_static_object(&once_value_6);
4417 } else fra.me.REG[4] = once_value_6;
4418 fra.me.REG[4] = fra.me.REG[4];
4419 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4420 /* native_interface/frontier.nit:529 */
4421 fra.me.REG[1] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
4422 if (!once_value_7) {
4423 fra.me.REG[4] = BOX_NativeString("}\n");
4424 REGB0 = TAG_Int(2);
4425 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4426 once_value_7 = fra.me.REG[4];
4427 register_static_object(&once_value_7);
4428 } else fra.me.REG[4] = once_value_7;
4429 fra.me.REG[4] = fra.me.REG[4];
4430 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4431 stack_frame_head = fra.me.prev;
4432 return;
4433 }
4434 static const char LOCATE_native_interface___frontier___MMType___compile_condition_isa[] = "frontier::MMType::compile_condition_isa";
4435 val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val_t p1){
4436 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4437 val_t REGB0;
4438 val_t tmp;
4439 static val_t once_value_1; /* Once value */
4440 static val_t once_value_2; /* Once value */
4441 static val_t once_value_3; /* Once value */
4442 static val_t once_value_4; /* Once value */
4443 static val_t once_value_5; /* Once value */
4444 static val_t once_value_6; /* Once value */
4445 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4446 fra.me.file = LOCATE_native_interface___frontier;
4447 fra.me.line = 532;
4448 fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_condition_isa;
4449 fra.me.has_broke = 0;
4450 fra.me.REG_size = 4;
4451 fra.me.nitni_local_ref_head = NULL;
4452 fra.me.REG[0] = NIT_NULL;
4453 fra.me.REG[1] = NIT_NULL;
4454 fra.me.REG[2] = NIT_NULL;
4455 fra.me.REG[3] = NIT_NULL;
4456 fra.me.REG[0] = p0;
4457 fra.me.REG[1] = p1;
4458 /* native_interface/frontier.nit:536 */
4459 REGB0 = TAG_Int(11);
4460 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4461 if (!once_value_1) {
4462 fra.me.REG[3] = BOX_NativeString("( ISOBJ( ");
4463 REGB0 = TAG_Int(9);
4464 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4465 once_value_1 = fra.me.REG[3];
4466 register_static_object(&once_value_1);
4467 } else fra.me.REG[3] = once_value_1;
4468 fra.me.REG[3] = fra.me.REG[3];
4469 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4470 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
4471 if (!once_value_2) {
4472 fra.me.REG[3] = BOX_NativeString(" ) ? OBJISA( ");
4473 REGB0 = TAG_Int(13);
4474 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4475 once_value_2 = fra.me.REG[3];
4476 register_static_object(&once_value_2);
4477 } else fra.me.REG[3] = once_value_2;
4478 fra.me.REG[3] = fra.me.REG[3];
4479 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4480 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
4481 if (!once_value_3) {
4482 fra.me.REG[3] = BOX_NativeString(", ");
4483 REGB0 = TAG_Int(2);
4484 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4485 once_value_3 = fra.me.REG[3];
4486 register_static_object(&once_value_3);
4487 } else fra.me.REG[3] = once_value_3;
4488 fra.me.REG[3] = fra.me.REG[3];
4489 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4490 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
4491 fra.me.REG[3] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[3])(fra.me.REG[3]);
4492 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4493 if (!once_value_4) {
4494 fra.me.REG[3] = BOX_NativeString(" ): VALISA( ");
4495 REGB0 = TAG_Int(12);
4496 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4497 once_value_4 = fra.me.REG[3];
4498 register_static_object(&once_value_4);
4499 } else fra.me.REG[3] = once_value_4;
4500 fra.me.REG[3] = fra.me.REG[3];
4501 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4502 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
4503 if (!once_value_5) {
4504 fra.me.REG[1] = BOX_NativeString(", ");
4505 REGB0 = TAG_Int(2);
4506 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
4507 once_value_5 = fra.me.REG[1];
4508 register_static_object(&once_value_5);
4509 } else fra.me.REG[1] = once_value_5;
4510 fra.me.REG[1] = fra.me.REG[1];
4511 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
4512 fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
4513 fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
4514 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
4515 if (!once_value_6) {
4516 fra.me.REG[0] = BOX_NativeString(" ) )");
4517 REGB0 = TAG_Int(4);
4518 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4519 once_value_6 = fra.me.REG[0];
4520 register_static_object(&once_value_6);
4521 } else fra.me.REG[0] = once_value_6;
4522 fra.me.REG[0] = fra.me.REG[0];
4523 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
4524 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4525 goto label7;
4526 label7: while(0);
4527 stack_frame_head = fra.me.prev;
4528 return fra.me.REG[2];
4529 }
4530 static const char LOCATE_native_interface___frontier___MMType___compile_to_frontier[] = "frontier::MMType::compile_to_frontier";
4531 void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t p1){
4532 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
4533 val_t REGB0;
4534 val_t REGB1;
4535 val_t tmp;
4536 static val_t once_value_1; /* Once value */
4537 static val_t once_value_2; /* Once value */
4538 static val_t once_value_3; /* Once value */
4539 static val_t once_value_4; /* Once value */
4540 static val_t once_value_5; /* Once value */
4541 static val_t once_value_6; /* Once value */
4542 static val_t once_value_7; /* Once value */
4543 static val_t once_value_8; /* Once value */
4544 static val_t once_value_9; /* Once value */
4545 static val_t once_value_10; /* Once value */
4546 static val_t once_value_11; /* Once value */
4547 static val_t once_value_12; /* Once value */
4548 static val_t once_value_13; /* Once value */
4549 static val_t once_value_14; /* Once value */
4550 static val_t once_value_15; /* Once value */
4551 static val_t once_value_16; /* Once value */
4552 static val_t once_value_17; /* Once value */
4553 static val_t once_value_18; /* Once value */
4554 static val_t once_value_19; /* Once value */
4555 static val_t once_value_20; /* Once value */
4556 static val_t once_value_21; /* Once value */
4557 static val_t once_value_22; /* Once value */
4558 static val_t once_value_23; /* Once value */
4559 static val_t once_value_24; /* Once value */
4560 static val_t once_value_25; /* Once value */
4561 static val_t once_value_26; /* Once value */
4562 static val_t once_value_27; /* Once value */
4563 static val_t once_value_28; /* Once value */
4564 static val_t once_value_29; /* Once value */
4565 static val_t once_value_30; /* Once value */
4566 static val_t once_value_31; /* Once value */
4567 static val_t once_value_32; /* Once value */
4568 static val_t once_value_33; /* Once value */
4569 static val_t once_value_34; /* Once value */
4570 static val_t once_value_35; /* Once value */
4571 static val_t once_value_36; /* Once value */
4572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4573 fra.me.file = LOCATE_native_interface___frontier;
4574 fra.me.line = 539;
4575 fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_to_frontier;
4576 fra.me.has_broke = 0;
4577 fra.me.REG_size = 7;
4578 fra.me.nitni_local_ref_head = NULL;
4579 fra.me.REG[0] = NIT_NULL;
4580 fra.me.REG[1] = NIT_NULL;
4581 fra.me.REG[2] = NIT_NULL;
4582 fra.me.REG[3] = NIT_NULL;
4583 fra.me.REG[4] = NIT_NULL;
4584 fra.me.REG[5] = NIT_NULL;
4585 fra.me.REG[6] = NIT_NULL;
4586 fra.me.REG[0] = p0;
4587 fra.me.REG[1] = p1;
4588 /* native_interface/frontier.nit:543 */
4589 fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
4590 fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
4591 /* native_interface/frontier.nit:544 */
4592 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4593 if (UNTAG_Bool(REGB0)) {
4594 } else {
4595 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4596 if (UNTAG_Bool(REGB1)) {
4597 REGB1 = TAG_Bool(0);
4598 REGB0 = REGB1;
4599 } else {
4600 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4601 REGB0 = REGB1;
4602 }
4603 }
4604 if (UNTAG_Bool(REGB0)) {
4605 REGB0 = TAG_Bool(1);
4606 } else {
4607 REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
4608 REGB0 = REGB1;
4609 }
4610 if (UNTAG_Bool(REGB0)) {
4611 /* native_interface/frontier.nit:545 */
4612 fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
4613 /* native_interface/frontier.nit:546 */
4614 REGB0 = TAG_Int(3);
4615 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4616 if (!once_value_1) {
4617 fra.me.REG[4] = BOX_NativeString("");
4618 REGB0 = TAG_Int(0);
4619 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4620 once_value_1 = fra.me.REG[4];
4621 register_static_object(&once_value_1);
4622 } else fra.me.REG[4] = once_value_1;
4623 fra.me.REG[4] = fra.me.REG[4];
4624 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4625 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4626 fra.me.REG[4] = CALL_standard___string___AbstractString___to_upper(fra.me.REG[4])(fra.me.REG[4]);
4627 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4628 if (!once_value_2) {
4629 fra.me.REG[4] = BOX_NativeString("_TYPE");
4630 REGB0 = TAG_Int(5);
4631 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4632 once_value_2 = fra.me.REG[4];
4633 register_static_object(&once_value_2);
4634 } else fra.me.REG[4] = once_value_2;
4635 fra.me.REG[4] = fra.me.REG[4];
4636 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4637 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4638 /* native_interface/frontier.nit:549 */
4639 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4640 REGB0 = TAG_Int(3);
4641 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4642 if (!once_value_3) {
4643 fra.me.REG[6] = BOX_NativeString("#ifndef ");
4644 REGB0 = TAG_Int(8);
4645 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4646 once_value_3 = fra.me.REG[6];
4647 register_static_object(&once_value_3);
4648 } else fra.me.REG[6] = once_value_3;
4649 fra.me.REG[6] = fra.me.REG[6];
4650 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4651 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4652 if (!once_value_4) {
4653 fra.me.REG[6] = BOX_NativeString("\n");
4654 REGB0 = TAG_Int(1);
4655 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4656 once_value_4 = fra.me.REG[6];
4657 register_static_object(&once_value_4);
4658 } else fra.me.REG[6] = once_value_4;
4659 fra.me.REG[6] = fra.me.REG[6];
4660 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4661 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4662 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4663 /* native_interface/frontier.nit:550 */
4664 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4665 REGB0 = TAG_Int(3);
4666 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4667 if (!once_value_5) {
4668 fra.me.REG[6] = BOX_NativeString("#define ");
4669 REGB0 = TAG_Int(8);
4670 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4671 once_value_5 = fra.me.REG[6];
4672 register_static_object(&once_value_5);
4673 } else fra.me.REG[6] = once_value_5;
4674 fra.me.REG[6] = fra.me.REG[6];
4675 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
4676 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4677 if (!once_value_6) {
4678 fra.me.REG[3] = BOX_NativeString("\n");
4679 REGB0 = TAG_Int(1);
4680 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4681 once_value_6 = fra.me.REG[3];
4682 register_static_object(&once_value_6);
4683 } else fra.me.REG[3] = once_value_6;
4684 fra.me.REG[3] = fra.me.REG[3];
4685 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4686 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4687 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4688 /* native_interface/frontier.nit:551 */
4689 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4690 REGB0 = TAG_Int(3);
4691 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4692 if (!once_value_7) {
4693 fra.me.REG[3] = BOX_NativeString("struct s_");
4694 REGB0 = TAG_Int(9);
4695 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4696 once_value_7 = fra.me.REG[3];
4697 register_static_object(&once_value_7);
4698 } else fra.me.REG[3] = once_value_7;
4699 fra.me.REG[3] = fra.me.REG[3];
4700 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4701 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
4702 if (!once_value_8) {
4703 fra.me.REG[3] = BOX_NativeString("{\n");
4704 REGB0 = TAG_Int(2);
4705 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4706 once_value_8 = fra.me.REG[3];
4707 register_static_object(&once_value_8);
4708 } else fra.me.REG[3] = once_value_8;
4709 fra.me.REG[3] = fra.me.REG[3];
4710 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4711 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4712 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4713 /* native_interface/frontier.nit:552 */
4714 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4715 if (!once_value_9) {
4716 fra.me.REG[4] = BOX_NativeString("\t\tstruct nitni_ref ref; /* real ref struct, must be first */\n");
4717 REGB0 = TAG_Int(61);
4718 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4719 once_value_9 = fra.me.REG[4];
4720 register_static_object(&once_value_9);
4721 } else fra.me.REG[4] = once_value_9;
4722 fra.me.REG[4] = fra.me.REG[4];
4723 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4724 /* native_interface/frontier.nit:553 */
4725 fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4726 if (!once_value_10) {
4727 fra.me.REG[5] = BOX_NativeString("};\n");
4728 REGB0 = TAG_Int(3);
4729 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4730 once_value_10 = fra.me.REG[5];
4731 register_static_object(&once_value_10);
4732 } else fra.me.REG[5] = once_value_10;
4733 fra.me.REG[5] = fra.me.REG[5];
4734 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4735 /* native_interface/frontier.nit:554 */
4736 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4737 REGB0 = TAG_Int(5);
4738 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4739 if (!once_value_11) {
4740 fra.me.REG[3] = BOX_NativeString("typedef struct s_");
4741 REGB0 = TAG_Int(17);
4742 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4743 once_value_11 = fra.me.REG[3];
4744 register_static_object(&once_value_11);
4745 } else fra.me.REG[3] = once_value_11;
4746 fra.me.REG[3] = fra.me.REG[3];
4747 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4748 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4749 if (!once_value_12) {
4750 fra.me.REG[3] = BOX_NativeString(" *");
4751 REGB0 = TAG_Int(2);
4752 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4753 once_value_12 = fra.me.REG[3];
4754 register_static_object(&once_value_12);
4755 } else fra.me.REG[3] = once_value_12;
4756 fra.me.REG[3] = fra.me.REG[3];
4757 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4759 if (!once_value_13) {
4760 fra.me.REG[3] = BOX_NativeString(";\n");
4761 REGB0 = TAG_Int(2);
4762 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4763 once_value_13 = fra.me.REG[3];
4764 register_static_object(&once_value_13);
4765 } else fra.me.REG[3] = once_value_13;
4766 fra.me.REG[3] = fra.me.REG[3];
4767 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4768 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4769 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4770 /* native_interface/frontier.nit:557 */
4771 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
4772 if (UNTAG_Bool(REGB0)) {
4773 /* native_interface/frontier.nit:558 */
4774 fra.me.REG[4] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
4775 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMType___local_friendly_null_getter_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
4776 /* native_interface/frontier.nit:560 */
4777 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4778 REGB0 = TAG_Int(3);
4779 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4780 if (!once_value_14) {
4781 fra.me.REG[6] = BOX_NativeString("#ifndef ");
4782 REGB0 = TAG_Int(8);
4783 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4784 once_value_14 = fra.me.REG[6];
4785 register_static_object(&once_value_14);
4786 } else fra.me.REG[6] = once_value_14;
4787 fra.me.REG[6] = fra.me.REG[6];
4788 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4789 fra.me.REG[6] = CALL_native_interface___ni_metamodel___MMType___friendly_null_getter(fra.me.REG[0])(fra.me.REG[0]);
4790 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4791 if (!once_value_15) {
4792 fra.me.REG[6] = BOX_NativeString("\n");
4793 REGB0 = TAG_Int(1);
4794 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4795 once_value_15 = fra.me.REG[6];
4796 register_static_object(&once_value_15);
4797 } else fra.me.REG[6] = once_value_15;
4798 fra.me.REG[6] = fra.me.REG[6];
4799 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4800 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4801 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4802 /* native_interface/frontier.nit:561 */
4803 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4804 REGB0 = TAG_Int(5);
4805 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4806 if (!once_value_16) {
4807 fra.me.REG[6] = BOX_NativeString("#define ");
4808 REGB0 = TAG_Int(8);
4809 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4810 once_value_16 = fra.me.REG[6];
4811 register_static_object(&once_value_16);
4812 } else fra.me.REG[6] = once_value_16;
4813 fra.me.REG[6] = fra.me.REG[6];
4814 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4815 fra.me.REG[6] = CALL_native_interface___ni_metamodel___MMType___friendly_null_getter(fra.me.REG[0])(fra.me.REG[0]);
4816 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4817 if (!once_value_17) {
4818 fra.me.REG[6] = BOX_NativeString(" ");
4819 REGB0 = TAG_Int(1);
4820 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4821 once_value_17 = fra.me.REG[6];
4822 register_static_object(&once_value_17);
4823 } else fra.me.REG[6] = once_value_17;
4824 fra.me.REG[6] = fra.me.REG[6];
4825 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4826 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4827 if (!once_value_18) {
4828 fra.me.REG[6] = BOX_NativeString("\n");
4829 REGB0 = TAG_Int(1);
4830 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4831 once_value_18 = fra.me.REG[6];
4832 register_static_object(&once_value_18);
4833 } else fra.me.REG[6] = once_value_18;
4834 fra.me.REG[6] = fra.me.REG[6];
4835 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4836 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4837 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4838 /* native_interface/frontier.nit:562 */
4839 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4840 if (!once_value_19) {
4841 fra.me.REG[3] = BOX_NativeString("#endif\n");
4842 REGB0 = TAG_Int(7);
4843 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4844 once_value_19 = fra.me.REG[3];
4845 register_static_object(&once_value_19);
4846 } else fra.me.REG[3] = once_value_19;
4847 fra.me.REG[3] = fra.me.REG[3];
4848 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4849 /* native_interface/frontier.nit:564 */
4850 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4851 REGB0 = TAG_Int(5);
4852 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4853 if (!once_value_20) {
4854 fra.me.REG[6] = BOX_NativeString("");
4855 REGB0 = TAG_Int(0);
4856 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4857 once_value_20 = fra.me.REG[6];
4858 register_static_object(&once_value_20);
4859 } else fra.me.REG[6] = once_value_20;
4860 fra.me.REG[6] = fra.me.REG[6];
4861 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
4863 if (!once_value_21) {
4864 fra.me.REG[6] = BOX_NativeString(" ");
4865 REGB0 = TAG_Int(1);
4866 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4867 once_value_21 = fra.me.REG[6];
4868 register_static_object(&once_value_21);
4869 } else fra.me.REG[6] = once_value_21;
4870 fra.me.REG[6] = fra.me.REG[6];
4871 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4872 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4873 if (!once_value_22) {
4874 fra.me.REG[6] = BOX_NativeString("();\n");
4875 REGB0 = TAG_Int(4);
4876 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4877 once_value_22 = fra.me.REG[6];
4878 register_static_object(&once_value_22);
4879 } else fra.me.REG[6] = once_value_22;
4880 fra.me.REG[6] = fra.me.REG[6];
4881 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4882 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4883 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4884 /* native_interface/frontier.nit:566 */
4885 REGB0 = TAG_Int(5);
4886 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4887 if (!once_value_23) {
4888 fra.me.REG[3] = BOX_NativeString("");
4889 REGB0 = TAG_Int(0);
4890 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4891 once_value_23 = fra.me.REG[3];
4892 register_static_object(&once_value_23);
4893 } else fra.me.REG[3] = once_value_23;
4894 fra.me.REG[3] = fra.me.REG[3];
4895 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4896 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
4897 if (!once_value_24) {
4898 fra.me.REG[2] = BOX_NativeString(" ");
4899 REGB0 = TAG_Int(1);
4900 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4901 once_value_24 = fra.me.REG[2];
4902 register_static_object(&once_value_24);
4903 } else fra.me.REG[2] = once_value_24;
4904 fra.me.REG[2] = fra.me.REG[2];
4905 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
4906 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4907 if (!once_value_25) {
4908 fra.me.REG[4] = BOX_NativeString("()");
4909 REGB0 = TAG_Int(2);
4910 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4911 once_value_25 = fra.me.REG[4];
4912 register_static_object(&once_value_25);
4913 } else fra.me.REG[4] = once_value_25;
4914 fra.me.REG[4] = fra.me.REG[4];
4915 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4916 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4917 fra.me.REG[5] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[5]);
4918 /* native_interface/frontier.nit:567 */
4919 if (!once_value_26) {
4920 fra.me.REG[4] = BOX_NativeString("n");
4921 REGB0 = TAG_Int(1);
4922 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4923 once_value_26 = fra.me.REG[4];
4924 register_static_object(&once_value_26);
4925 } else fra.me.REG[4] = once_value_26;
4926 fra.me.REG[4] = fra.me.REG[4];
4927 REGB0 = TAG_Bool(1);
4928 CALL_native_interface___frontier___MMType___compile_new_local_ref(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5], REGB0);
4929 /* native_interface/frontier.nit:568 */
4930 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[5])(fra.me.REG[5]);
4931 if (!once_value_27) {
4932 fra.me.REG[2] = BOX_NativeString("return n;\n");
4933 REGB0 = TAG_Int(10);
4934 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4935 once_value_27 = fra.me.REG[2];
4936 register_static_object(&once_value_27);
4937 } else fra.me.REG[2] = once_value_27;
4938 fra.me.REG[2] = fra.me.REG[2];
4939 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4940 /* native_interface/frontier.nit:569 */
4941 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
4942 fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[5])(fra.me.REG[5]);
4943 CALL_compiling_writer___Writer___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
4944 }
4945 /* native_interface/frontier.nit:573 */
4946 REGB0 = TAG_Int(3);
4947 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4948 if (!once_value_28) {
4949 fra.me.REG[2] = BOX_NativeString("");
4950 REGB0 = TAG_Int(0);
4951 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4952 once_value_28 = fra.me.REG[2];
4953 register_static_object(&once_value_28);
4954 } else fra.me.REG[2] = once_value_28;
4955 fra.me.REG[2] = fra.me.REG[2];
4956 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
4957 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
4958 fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[2])(fra.me.REG[2]);
4959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
4960 if (!once_value_29) {
4961 fra.me.REG[2] = BOX_NativeString("_incr_ref");
4962 REGB0 = TAG_Int(9);
4963 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
4964 once_value_29 = fra.me.REG[2];
4965 register_static_object(&once_value_29);
4966 } else fra.me.REG[2] = once_value_29;
4967 fra.me.REG[2] = fra.me.REG[2];
4968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
4969 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4970 /* native_interface/frontier.nit:574 */
4971 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
4972 REGB0 = TAG_Int(3);
4973 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4974 if (!once_value_30) {
4975 fra.me.REG[3] = BOX_NativeString("#define ");
4976 REGB0 = TAG_Int(8);
4977 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
4978 once_value_30 = fra.me.REG[3];
4979 register_static_object(&once_value_30);
4980 } else fra.me.REG[3] = once_value_30;
4981 fra.me.REG[3] = fra.me.REG[3];
4982 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4983 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4984 if (!once_value_31) {
4985 fra.me.REG[5] = BOX_NativeString("( x ) nitni_global_ref_incr( (struct nitni_ref*)(x) )\n");
4986 REGB0 = TAG_Int(54);
4987 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4988 once_value_31 = fra.me.REG[5];
4989 register_static_object(&once_value_31);
4990 } else fra.me.REG[5] = once_value_31;
4991 fra.me.REG[5] = fra.me.REG[5];
4992 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4993 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4994 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4995 /* native_interface/frontier.nit:577 */
4996 REGB0 = TAG_Int(3);
4997 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4998 if (!once_value_32) {
4999 fra.me.REG[2] = BOX_NativeString("");
5000 REGB0 = TAG_Int(0);
5001 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
5002 once_value_32 = fra.me.REG[2];
5003 register_static_object(&once_value_32);
5004 } else fra.me.REG[2] = once_value_32;
5005 fra.me.REG[2] = fra.me.REG[2];
5006 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5007 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
5008 fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[0])(fra.me.REG[0]);
5009 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
5010 if (!once_value_33) {
5011 fra.me.REG[0] = BOX_NativeString("_decr_ref");
5012 REGB0 = TAG_Int(9);
5013 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5014 once_value_33 = fra.me.REG[0];
5015 register_static_object(&once_value_33);
5016 } else fra.me.REG[0] = once_value_33;
5017 fra.me.REG[0] = fra.me.REG[0];
5018 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
5019 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5020 /* native_interface/frontier.nit:578 */
5021 fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
5022 REGB0 = TAG_Int(3);
5023 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5024 if (!once_value_34) {
5025 fra.me.REG[5] = BOX_NativeString("#define ");
5026 REGB0 = TAG_Int(8);
5027 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5028 once_value_34 = fra.me.REG[5];
5029 register_static_object(&once_value_34);
5030 } else fra.me.REG[5] = once_value_34;
5031 fra.me.REG[5] = fra.me.REG[5];
5032 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5033 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5034 if (!once_value_35) {
5035 fra.me.REG[4] = BOX_NativeString("( x ) nitni_global_ref_decr( (struct nitni_ref*)(x) )\n");
5036 REGB0 = TAG_Int(54);
5037 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
5038 once_value_35 = fra.me.REG[4];
5039 register_static_object(&once_value_35);
5040 } else fra.me.REG[4] = once_value_35;
5041 fra.me.REG[4] = fra.me.REG[4];
5042 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5043 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5044 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
5045 /* native_interface/frontier.nit:580 */
5046 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
5047 if (!once_value_36) {
5048 fra.me.REG[2] = BOX_NativeString("#endif\n");
5049 REGB0 = TAG_Int(7);
5050 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
5051 once_value_36 = fra.me.REG[2];
5052 register_static_object(&once_value_36);
5053 } else fra.me.REG[2] = once_value_36;
5054 fra.me.REG[2] = fra.me.REG[2];
5055 CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5056 }
5057 stack_frame_head = fra.me.prev;
5058 return;
5059 }
5060 static const char LOCATE_native_interface___frontier___MMType___compile_new_local_ref[] = "frontier::MMType::compile_new_local_ref";
5061 void native_interface___frontier___MMType___compile_new_local_ref(val_t p0, val_t p1, val_t p2, val_t p3){
5062 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5063 val_t REGB0;
5064 val_t REGB1;
5065 val_t tmp;
5066 static val_t once_value_1; /* Once value */
5067 static val_t once_value_2; /* Once value */
5068 static val_t once_value_3; /* Once value */
5069 static val_t once_value_4; /* Once value */
5070 static val_t once_value_5; /* Once value */
5071 static val_t once_value_6; /* Once value */
5072 static val_t once_value_7; /* Once value */
5073 static val_t once_value_8; /* Once value */
5074 static val_t once_value_9; /* Once value */
5075 static val_t once_value_10; /* Once value */
5076 static val_t once_value_11; /* Once value */
5077 static val_t once_value_12; /* Once value */
5078 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5079 fra.me.file = LOCATE_native_interface___frontier;
5080 fra.me.line = 584;
5081 fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_new_local_ref;
5082 fra.me.has_broke = 0;
5083 fra.me.REG_size = 7;
5084 fra.me.nitni_local_ref_head = NULL;
5085 fra.me.REG[0] = NIT_NULL;
5086 fra.me.REG[1] = NIT_NULL;
5087 fra.me.REG[2] = NIT_NULL;
5088 fra.me.REG[3] = NIT_NULL;
5089 fra.me.REG[4] = NIT_NULL;
5090 fra.me.REG[5] = NIT_NULL;
5091 fra.me.REG[6] = NIT_NULL;
5092 fra.me.REG[0] = p0;
5093 fra.me.REG[1] = p1;
5094 fra.me.REG[2] = p2;
5095 REGB0 = p3;
5096 /* native_interface/frontier.nit:586 */
5097 fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
5098 /* native_interface/frontier.nit:588 */
5099 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
5100 REGB1 = TAG_Int(5);
5101 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
5102 if (!once_value_1) {
5103 fra.me.REG[6] = BOX_NativeString("");
5104 REGB1 = TAG_Int(0);
5105 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
5106 once_value_1 = fra.me.REG[6];
5107 register_static_object(&once_value_1);
5108 } else fra.me.REG[6] = once_value_1;
5109 fra.me.REG[6] = fra.me.REG[6];
5110 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5111 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5112 if (!once_value_2) {
5113 fra.me.REG[6] = BOX_NativeString(" ");
5114 REGB1 = TAG_Int(1);
5115 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
5116 once_value_2 = fra.me.REG[6];
5117 register_static_object(&once_value_2);
5118 } else fra.me.REG[6] = once_value_2;
5119 fra.me.REG[6] = fra.me.REG[6];
5120 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5121 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
5122 if (!once_value_3) {
5123 fra.me.REG[6] = BOX_NativeString(";\n");
5124 REGB1 = TAG_Int(2);
5125 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
5126 once_value_3 = fra.me.REG[6];
5127 register_static_object(&once_value_3);
5128 } else fra.me.REG[6] = once_value_3;
5129 fra.me.REG[6] = fra.me.REG[6];
5130 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5131 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5132 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5133 /* native_interface/frontier.nit:589 */
5134 REGB1 = CALL_native_interface___ni_metamodel___MMType___uses_nitni_ref(fra.me.REG[0])(fra.me.REG[0]);
5135 if (UNTAG_Bool(REGB1)) {
5136 /* native_interface/frontier.nit:590 */
5137 fra.me.REG[0] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
5138 REGB1 = TAG_Int(5);
5139 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
5140 if (!once_value_4) {
5141 fra.me.REG[4] = BOX_NativeString("");
5142 REGB1 = TAG_Int(0);
5143 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
5144 once_value_4 = fra.me.REG[4];
5145 register_static_object(&once_value_4);
5146 } else fra.me.REG[4] = once_value_4;
5147 fra.me.REG[4] = fra.me.REG[4];
5148 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5149 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
5150 if (!once_value_5) {
5151 fra.me.REG[4] = BOX_NativeString(" = malloc( sizeof( struct s_");
5152 REGB1 = TAG_Int(28);
5153 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
5154 once_value_5 = fra.me.REG[4];
5155 register_static_object(&once_value_5);
5156 } else fra.me.REG[4] = once_value_5;
5157 fra.me.REG[4] = fra.me.REG[4];
5158 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5159 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5160 if (!once_value_6) {
5161 fra.me.REG[3] = BOX_NativeString(" ) );\n");
5162 REGB1 = TAG_Int(6);
5163 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
5164 once_value_6 = fra.me.REG[3];
5165 register_static_object(&once_value_6);
5166 } else fra.me.REG[3] = once_value_6;
5167 fra.me.REG[3] = fra.me.REG[3];
5168 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5169 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5170 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
5171 /* native_interface/frontier.nit:591 */
5172 fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
5173 REGB1 = TAG_Int(3);
5174 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
5175 if (!once_value_7) {
5176 fra.me.REG[3] = BOX_NativeString("");
5177 REGB1 = TAG_Int(0);
5178 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
5179 once_value_7 = fra.me.REG[3];
5180 register_static_object(&once_value_7);
5181 } else fra.me.REG[3] = once_value_7;
5182 fra.me.REG[3] = fra.me.REG[3];
5183 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5184 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5185 if (!once_value_8) {
5186 fra.me.REG[3] = BOX_NativeString("->ref.val = NIT_NULL;\n");
5187 REGB1 = TAG_Int(22);
5188 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
5189 once_value_8 = fra.me.REG[3];
5190 register_static_object(&once_value_8);
5191 } else fra.me.REG[3] = once_value_8;
5192 fra.me.REG[3] = fra.me.REG[3];
5193 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5194 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
5195 CALL_compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
5196 /* native_interface/frontier.nit:592 */
5197 fra.me.REG[0] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
5198 REGB1 = TAG_Int(3);
5199 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
5200 if (!once_value_9) {
5201 fra.me.REG[3] = BOX_NativeString("");
5202 REGB1 = TAG_Int(0);
5203 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
5204 once_value_9 = fra.me.REG[3];
5205 register_static_object(&once_value_9);
5206 } else fra.me.REG[3] = once_value_9;
5207 fra.me.REG[3] = fra.me.REG[3];
5208 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5209 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
5210 if (!once_value_10) {
5211 fra.me.REG[3] = BOX_NativeString("->ref.count = 0;\n");
5212 REGB1 = TAG_Int(17);
5213 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
5214 once_value_10 = fra.me.REG[3];
5215 register_static_object(&once_value_10);
5216 } else fra.me.REG[3] = once_value_10;
5217 fra.me.REG[3] = fra.me.REG[3];
5218 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5219 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5220 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
5221 /* native_interface/frontier.nit:593 */
5222 if (UNTAG_Bool(REGB0)) {
5223 /* native_interface/frontier.nit:594 */
5224 fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
5225 REGB0 = TAG_Int(3);
5226 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5227 if (!once_value_11) {
5228 fra.me.REG[0] = BOX_NativeString("nitni_local_ref_add( (struct nitni_ref *)");
5229 REGB0 = TAG_Int(41);
5230 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5231 once_value_11 = fra.me.REG[0];
5232 register_static_object(&once_value_11);
5233 } else fra.me.REG[0] = once_value_11;
5234 fra.me.REG[0] = fra.me.REG[0];
5235 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
5236 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
5237 if (!once_value_12) {
5238 fra.me.REG[1] = BOX_NativeString(" );\n");
5239 REGB0 = TAG_Int(4);
5240 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
5241 once_value_12 = fra.me.REG[1];
5242 register_static_object(&once_value_12);
5243 } else fra.me.REG[1] = once_value_12;
5244 fra.me.REG[1] = fra.me.REG[1];
5245 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
5246 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5247 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5248 }
5249 }
5250 stack_frame_head = fra.me.prev;
5251 return;
5252 }
5253 static const char LOCATE_native_interface___frontier___MMType___compile_stub_local_ref[] = "frontier::MMType::compile_stub_local_ref";
5254 void native_interface___frontier___MMType___compile_stub_local_ref(val_t p0, val_t p1, val_t p2){
5255 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5256 val_t REGB0;
5257 val_t tmp;
5258 static val_t once_value_1; /* Once value */
5259 static val_t once_value_2; /* Once value */
5260 static val_t once_value_3; /* Once value */
5261 static val_t once_value_4; /* Once value */
5262 static val_t once_value_5; /* Once value */
5263 static val_t once_value_6; /* Once value */
5264 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5265 fra.me.file = LOCATE_native_interface___frontier;
5266 fra.me.line = 599;
5267 fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_stub_local_ref;
5268 fra.me.has_broke = 0;
5269 fra.me.REG_size = 7;
5270 fra.me.nitni_local_ref_head = NULL;
5271 fra.me.REG[0] = NIT_NULL;
5272 fra.me.REG[1] = NIT_NULL;
5273 fra.me.REG[2] = NIT_NULL;
5274 fra.me.REG[3] = NIT_NULL;
5275 fra.me.REG[4] = NIT_NULL;
5276 fra.me.REG[5] = NIT_NULL;
5277 fra.me.REG[6] = NIT_NULL;
5278 fra.me.REG[0] = p0;
5279 fra.me.REG[1] = p1;
5280 fra.me.REG[2] = p2;
5281 /* native_interface/frontier.nit:603 */
5282 fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
5283 /* native_interface/frontier.nit:604 */
5284 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
5285 REGB0 = TAG_Int(5);
5286 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5287 if (!once_value_1) {
5288 fra.me.REG[6] = BOX_NativeString("");
5289 REGB0 = TAG_Int(0);
5290 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5291 once_value_1 = fra.me.REG[6];
5292 register_static_object(&once_value_1);
5293 } else fra.me.REG[6] = once_value_1;
5294 fra.me.REG[6] = fra.me.REG[6];
5295 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5296 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5297 if (!once_value_2) {
5298 fra.me.REG[6] = BOX_NativeString(" ");
5299 REGB0 = TAG_Int(1);
5300 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5301 once_value_2 = fra.me.REG[6];
5302 register_static_object(&once_value_2);
5303 } else fra.me.REG[6] = once_value_2;
5304 fra.me.REG[6] = fra.me.REG[6];
5305 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5306 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
5307 if (!once_value_3) {
5308 fra.me.REG[6] = BOX_NativeString(";\n");
5309 REGB0 = TAG_Int(2);
5310 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5311 once_value_3 = fra.me.REG[6];
5312 register_static_object(&once_value_3);
5313 } else fra.me.REG[6] = once_value_3;
5314 fra.me.REG[6] = fra.me.REG[6];
5315 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5316 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5317 CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5318 /* native_interface/frontier.nit:605 */
5319 REGB0 = CALL_native_interface___ni_metamodel___MMType___uses_nitni_ref(fra.me.REG[0])(fra.me.REG[0]);
5320 if (UNTAG_Bool(REGB0)) {
5321 /* native_interface/frontier.nit:606 */
5322 fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
5323 REGB0 = TAG_Int(5);
5324 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5325 if (!once_value_4) {
5326 fra.me.REG[5] = BOX_NativeString("");
5327 REGB0 = TAG_Int(0);
5328 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5329 once_value_4 = fra.me.REG[5];
5330 register_static_object(&once_value_4);
5331 } else fra.me.REG[5] = once_value_4;
5332 fra.me.REG[5] = fra.me.REG[5];
5333 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
5334 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5335 if (!once_value_5) {
5336 fra.me.REG[1] = BOX_NativeString(" = (");
5337 REGB0 = TAG_Int(4);
5338 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
5339 once_value_5 = fra.me.REG[1];
5340 register_static_object(&once_value_5);
5341 } else fra.me.REG[1] = once_value_5;
5342 fra.me.REG[1] = fra.me.REG[1];
5343 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5344 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5345 if (!once_value_6) {
5346 fra.me.REG[3] = BOX_NativeString(")NULL;\n");
5347 REGB0 = TAG_Int(7);
5348 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5349 once_value_6 = fra.me.REG[3];
5350 register_static_object(&once_value_6);
5351 } else fra.me.REG[3] = once_value_6;
5352 fra.me.REG[3] = fra.me.REG[3];
5353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5354 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
5355 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
5356 }
5357 stack_frame_head = fra.me.prev;
5358 return;
5359 }
5360 static const char LOCATE_native_interface___frontier___MMExplicitImport___compile_friendly_to_frontier[] = "frontier::MMExplicitImport::compile_friendly_to_frontier";
5361 void native_interface___frontier___MMExplicitImport___compile_friendly_to_frontier(val_t p0, val_t p1){
5362 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
5363 val_t REGB0;
5364 val_t REGB1;
5365 val_t REGB2;
5366 val_t tmp;
5367 static val_t once_value_1; /* Once value */
5368 static val_t once_value_2; /* Once value */
5369 static val_t once_value_3; /* Once value */
5370 static val_t once_value_4; /* Once value */
5371 static val_t once_value_5; /* Once value */
5372 static val_t once_value_6; /* Once value */
5373 static val_t once_value_7; /* Once value */
5374 static val_t once_value_8; /* Once value */
5375 static val_t once_value_9; /* Once value */
5376 static val_t once_value_10; /* Once value */
5377 static val_t once_value_11; /* Once value */
5378 static val_t once_value_12; /* Once value */
5379 static val_t once_value_14; /* Once value */
5380 static val_t once_value_15; /* Once value */
5381 static val_t once_value_16; /* Once value */
5382 static val_t once_value_17; /* Once value */
5383 static val_t once_value_18; /* Once value */
5384 static val_t once_value_19; /* Once value */
5385 static val_t once_value_20; /* Once value */
5386 static val_t once_value_21; /* Once value */
5387 static val_t once_value_23; /* Once value */
5388 static val_t once_value_24; /* Once value */
5389 static val_t once_value_25; /* Once value */
5390 static val_t once_value_26; /* Once value */
5391 static val_t once_value_27; /* Once value */
5392 static val_t once_value_28; /* Once value */
5393 static val_t once_value_29; /* Once value */
5394 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5395 fra.me.file = LOCATE_native_interface___frontier;
5396 fra.me.line = 612;
5397 fra.me.meth = LOCATE_native_interface___frontier___MMExplicitImport___compile_friendly_to_frontier;
5398 fra.me.has_broke = 0;
5399 fra.me.REG_size = 8;
5400 fra.me.nitni_local_ref_head = NULL;
5401 fra.me.REG[0] = NIT_NULL;
5402 fra.me.REG[1] = NIT_NULL;
5403 fra.me.REG[2] = NIT_NULL;
5404 fra.me.REG[3] = NIT_NULL;
5405 fra.me.REG[4] = NIT_NULL;
5406 fra.me.REG[5] = NIT_NULL;
5407 fra.me.REG[6] = NIT_NULL;
5408 fra.me.REG[7] = NIT_NULL;
5409 fra.me.REG[0] = p0;
5410 fra.me.REG[1] = p1;
5411 /* native_interface/frontier.nit:615 */
5412 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
5413 REGB0 = TAG_Int(3);
5414 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5415 if (!once_value_1) {
5416 fra.me.REG[4] = BOX_NativeString("/* friendly for ");
5417 REGB0 = TAG_Int(16);
5418 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
5419 once_value_1 = fra.me.REG[4];
5420 register_static_object(&once_value_1);
5421 } else fra.me.REG[4] = once_value_1;
5422 fra.me.REG[4] = fra.me.REG[4];
5423 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5424 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5425 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
5426 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5427 if (!once_value_2) {
5428 fra.me.REG[4] = BOX_NativeString(" */\n");
5429 REGB0 = TAG_Int(4);
5430 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
5431 once_value_2 = fra.me.REG[4];
5432 register_static_object(&once_value_2);
5433 } else fra.me.REG[4] = once_value_2;
5434 fra.me.REG[4] = fra.me.REG[4];
5435 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5436 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5437 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5438 /* native_interface/frontier.nit:616 */
5439 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
5440 REGB0 = TAG_Int(3);
5441 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5442 if (!once_value_3) {
5443 fra.me.REG[4] = BOX_NativeString("");
5444 REGB0 = TAG_Int(0);
5445 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
5446 once_value_3 = fra.me.REG[4];
5447 register_static_object(&once_value_3);
5448 } else fra.me.REG[4] = once_value_3;
5449 fra.me.REG[4] = fra.me.REG[4];
5450 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5451 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5452 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5453 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5454 fra.me.REG[6] = CALL_native_interface___ni_metamodel___MMMethod___frontier_csignature_from(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
5455 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5456 if (!once_value_4) {
5457 fra.me.REG[6] = BOX_NativeString(";\n");
5458 REGB0 = TAG_Int(2);
5459 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5460 once_value_4 = fra.me.REG[6];
5461 register_static_object(&once_value_4);
5462 } else fra.me.REG[6] = once_value_4;
5463 fra.me.REG[6] = fra.me.REG[6];
5464 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5465 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5466 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5467 /* native_interface/frontier.nit:620 */
5468 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
5469 REGB0 = TAG_Int(3);
5470 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5471 if (!once_value_5) {
5472 fra.me.REG[6] = BOX_NativeString("#ifndef ");
5473 REGB0 = TAG_Int(8);
5474 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5475 once_value_5 = fra.me.REG[6];
5476 register_static_object(&once_value_5);
5477 } else fra.me.REG[6] = once_value_5;
5478 fra.me.REG[6] = fra.me.REG[6];
5479 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
5480 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5481 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5482 fra.me.REG[5] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
5483 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
5484 if (!once_value_6) {
5485 fra.me.REG[5] = BOX_NativeString("\n");
5486 REGB0 = TAG_Int(1);
5487 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5488 once_value_6 = fra.me.REG[5];
5489 register_static_object(&once_value_6);
5490 } else fra.me.REG[5] = once_value_6;
5491 fra.me.REG[5] = fra.me.REG[5];
5492 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
5493 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5494 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5495 /* native_interface/frontier.nit:621 */
5496 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
5497 REGB0 = TAG_Int(5);
5498 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5499 if (!once_value_7) {
5500 fra.me.REG[5] = BOX_NativeString("#define ");
5501 REGB0 = TAG_Int(8);
5502 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5503 once_value_7 = fra.me.REG[5];
5504 register_static_object(&once_value_7);
5505 } else fra.me.REG[5] = once_value_7;
5506 fra.me.REG[5] = fra.me.REG[5];
5507 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5508 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5509 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5510 fra.me.REG[6] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5511 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5512 if (!once_value_8) {
5513 fra.me.REG[6] = BOX_NativeString(" ");
5514 REGB0 = TAG_Int(1);
5515 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5516 once_value_8 = fra.me.REG[6];
5517 register_static_object(&once_value_8);
5518 } else fra.me.REG[6] = once_value_8;
5519 fra.me.REG[6] = fra.me.REG[6];
5520 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5521 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5522 fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5523 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5524 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___local_friendly_name_from(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4]);
5525 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5526 if (!once_value_9) {
5527 fra.me.REG[4] = BOX_NativeString("\n");
5528 REGB0 = TAG_Int(1);
5529 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
5530 once_value_9 = fra.me.REG[4];
5531 register_static_object(&once_value_9);
5532 } else fra.me.REG[4] = once_value_9;
5533 fra.me.REG[4] = fra.me.REG[4];
5534 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5535 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5536 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5537 /* native_interface/frontier.nit:622 */
5538 fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
5539 if (!once_value_10) {
5540 fra.me.REG[3] = BOX_NativeString("#endif\n");
5541 REGB0 = TAG_Int(7);
5542 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5543 once_value_10 = fra.me.REG[3];
5544 register_static_object(&once_value_10);
5545 } else fra.me.REG[3] = once_value_10;
5546 fra.me.REG[3] = fra.me.REG[3];
5547 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5548 /* native_interface/frontier.nit:625 */
5549 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
5550 REGB0 = TAG_Int(3);
5551 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5552 if (!once_value_11) {
5553 fra.me.REG[4] = BOX_NativeString("/* friendly for ");
5554 REGB0 = TAG_Int(16);
5555 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
5556 once_value_11 = fra.me.REG[4];
5557 register_static_object(&once_value_11);
5558 } else fra.me.REG[4] = once_value_11;
5559 fra.me.REG[4] = fra.me.REG[4];
5560 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5561 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5562 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
5563 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5564 if (!once_value_12) {
5565 fra.me.REG[4] = BOX_NativeString(" */\n");
5566 REGB0 = TAG_Int(4);
5567 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
5568 once_value_12 = fra.me.REG[4];
5569 register_static_object(&once_value_12);
5570 } else fra.me.REG[4] = once_value_12;
5571 fra.me.REG[4] = fra.me.REG[4];
5572 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5573 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5574 CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5575 /* native_interface/frontier.nit:627 */
5576 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5577 fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5578 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5579 fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___frontier_csignature_from(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
5580 fra.me.REG[4] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[4]);
5581 /* native_interface/frontier.nit:630 */
5582 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
5583 /* native_interface/frontier.nit:631 */
5584 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5585 REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
5586 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5587 if (UNTAG_Bool(REGB0)) {
5588 fra.me.REG[2] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
5589 fra.me.REG[2] = CALL_native_interface___frontier___MMSignature___recv_ni_variable(fra.me.REG[2])(fra.me.REG[2]);
5590 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5591 }
5592 /* native_interface/frontier.nit:632 */
5593 fra.me.REG[2] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
5594 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[2])(fra.me.REG[2]);
5595 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5596 /* ../lib/standard/collection/array.nit:266 */
5597 fra.me.REG[2] = fra.me.REG[3];
5598 /* ../lib/standard/collection/array.nit:269 */
5599 REGB0 = TAG_Int(0);
5600 /* ../lib/standard/collection/array.nit:270 */
5601 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5602 if (UNTAG_Bool(REGB1)) {
5603 } else {
5604 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
5605 }
5606 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
5607 /* ../lib/standard/collection/array.nit:271 */
5608 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
5609 /* ../lib/standard/collection/array.nit:272 */
5610 while(1) {
5611 /* ../lib/standard/collection/array.nit:24 */
5612 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5613 if (UNTAG_Bool(REGB1)) {
5614 } else {
5615 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
5616 }
5617 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
5618 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
5619 if (UNTAG_Bool(REGB2)) {
5620 } else {
5621 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5622 }
5623 /* ../lib/standard/kernel.nit:235 */
5624 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5625 /* ../lib/standard/collection/array.nit:272 */
5626 if (UNTAG_Bool(REGB1)) {
5627 /* ../lib/standard/collection/array.nit:273 */
5628 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5629 if (UNTAG_Bool(REGB1)) {
5630 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
5631 }
5632 /* ../lib/standard/collection/array.nit:718 */
5633 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5634 /* native_interface/frontier.nit:634 */
5635 CALL_native_interface___frontier___NiVariable___prepare_for_nit(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
5636 /* ../lib/standard/collection/array.nit:274 */
5637 REGB1 = TAG_Int(1);
5638 /* ../lib/standard/kernel.nit:238 */
5639 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5640 /* ../lib/standard/collection/array.nit:274 */
5641 REGB0 = REGB1;
5642 } else {
5643 /* ../lib/standard/collection/array.nit:272 */
5644 goto label13;
5645 }
5646 }
5647 label13: while(0);
5648 /* native_interface/frontier.nit:637 */
5649 fra.me.REG[5] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
5650 fra.me.REG[5] = CALL_native_interface___frontier___MMSignature___return_ni_variable(fra.me.REG[5])(fra.me.REG[5]);
5651 /* native_interface/frontier.nit:638 */
5652 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5653 if (UNTAG_Bool(REGB0)) {
5654 } else {
5655 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5656 if (UNTAG_Bool(REGB1)) {
5657 REGB1 = TAG_Bool(0);
5658 REGB0 = REGB1;
5659 } else {
5660 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5661 REGB0 = REGB1;
5662 }
5663 }
5664 if (UNTAG_Bool(REGB0)) {
5665 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5666 REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
5667 } else {
5668 REGB1 = TAG_Bool(0);
5669 REGB0 = REGB1;
5670 }
5671 if (UNTAG_Bool(REGB0)) {
5672 /* native_interface/frontier.nit:639 */
5673 fra.me.REG[2] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
5674 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[2])(fra.me.REG[2]);
5675 fra.me.REG[2] = NEW_ReturnVariable_native_interface___frontier___ReturnVariable___init(fra.me.REG[2]);
5676 fra.me.REG[5] = fra.me.REG[2];
5677 }
5678 /* native_interface/frontier.nit:641 */
5679 fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___init();
5680 /* native_interface/frontier.nit:642 */
5681 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5682 if (UNTAG_Bool(REGB0)) {
5683 } else {
5684 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5685 if (UNTAG_Bool(REGB1)) {
5686 REGB1 = TAG_Bool(0);
5687 REGB0 = REGB1;
5688 } else {
5689 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5690 REGB0 = REGB1;
5691 }
5692 }
5693 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5694 if (UNTAG_Bool(REGB0)) {
5695 /* native_interface/frontier.nit:643 */
5696 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5697 if (UNTAG_Bool(REGB0)) {
5698 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 643);
5699 }
5700 CALL_native_interface___frontier___NiVariable___prepare_for_c(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5701 /* native_interface/frontier.nit:644 */
5702 REGB0 = TAG_Int(3);
5703 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5704 if (!once_value_14) {
5705 fra.me.REG[7] = BOX_NativeString("");
5706 REGB0 = TAG_Int(0);
5707 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5708 once_value_14 = fra.me.REG[7];
5709 register_static_object(&once_value_14);
5710 } else fra.me.REG[7] = once_value_14;
5711 fra.me.REG[7] = fra.me.REG[7];
5712 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5713 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5714 if (UNTAG_Bool(REGB0)) {
5715 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 644);
5716 }
5717 fra.me.REG[7] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[5])(fra.me.REG[5]);
5718 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5719 if (!once_value_15) {
5720 fra.me.REG[7] = BOX_NativeString(" = ");
5721 REGB0 = TAG_Int(3);
5722 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5723 once_value_15 = fra.me.REG[7];
5724 register_static_object(&once_value_15);
5725 } else fra.me.REG[7] = once_value_15;
5726 fra.me.REG[7] = fra.me.REG[7];
5727 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5728 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5729 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5730 }
5731 /* native_interface/frontier.nit:648 */
5732 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5733 REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[6])(fra.me.REG[6]);
5734 if (UNTAG_Bool(REGB0)) {
5735 /* native_interface/frontier.nit:649 */
5736 REGB0 = TAG_Int(5);
5737 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5738 if (!once_value_16) {
5739 fra.me.REG[7] = BOX_NativeString("NEW_");
5740 REGB0 = TAG_Int(4);
5741 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5742 once_value_16 = fra.me.REG[7];
5743 register_static_object(&once_value_16);
5744 } else fra.me.REG[7] = once_value_16;
5745 fra.me.REG[7] = fra.me.REG[7];
5746 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5747 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
5748 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
5749 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5750 if (!once_value_17) {
5751 fra.me.REG[7] = BOX_NativeString("_");
5752 REGB0 = TAG_Int(1);
5753 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5754 once_value_17 = fra.me.REG[7];
5755 register_static_object(&once_value_17);
5756 } else fra.me.REG[7] = once_value_17;
5757 fra.me.REG[7] = fra.me.REG[7];
5758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5759 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5760 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
5761 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[7])(fra.me.REG[7]);
5762 fra.me.REG[7] = CALL_compiling___compiling_base___MMLocalProperty___cname(fra.me.REG[7])(fra.me.REG[7]);
5763 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5764 if (!once_value_18) {
5765 fra.me.REG[7] = BOX_NativeString("");
5766 REGB0 = TAG_Int(0);
5767 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5768 once_value_18 = fra.me.REG[7];
5769 register_static_object(&once_value_18);
5770 } else fra.me.REG[7] = once_value_18;
5771 fra.me.REG[7] = fra.me.REG[7];
5772 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5773 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5774 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5775 } else {
5776 /* native_interface/frontier.nit:651 */
5777 REGB0 = TAG_Int(5);
5778 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5779 if (!once_value_19) {
5780 fra.me.REG[7] = BOX_NativeString("");
5781 REGB0 = TAG_Int(0);
5782 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5783 once_value_19 = fra.me.REG[7];
5784 register_static_object(&once_value_19);
5785 } else fra.me.REG[7] = once_value_19;
5786 fra.me.REG[7] = fra.me.REG[7];
5787 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5788 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
5789 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
5790 fra.me.REG[7] = CALL_compiling___compiling_base___MMGlobalProperty___meth_call(fra.me.REG[7])(fra.me.REG[7]);
5791 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5792 if (!once_value_20) {
5793 fra.me.REG[7] = BOX_NativeString("( ");
5794 REGB0 = TAG_Int(2);
5795 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5796 once_value_20 = fra.me.REG[7];
5797 register_static_object(&once_value_20);
5798 } else fra.me.REG[7] = once_value_20;
5799 fra.me.REG[7] = fra.me.REG[7];
5800 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5801 fra.me.REG[0] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
5802 fra.me.REG[0] = CALL_native_interface___frontier___MMSignature___recv_ni_variable(fra.me.REG[0])(fra.me.REG[0]);
5803 fra.me.REG[0] = CALL_native_interface___frontier___NiVariable___as_arg_to_nit(fra.me.REG[0])(fra.me.REG[0]);
5804 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
5805 if (!once_value_21) {
5806 fra.me.REG[0] = BOX_NativeString(" )");
5807 REGB0 = TAG_Int(2);
5808 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5809 once_value_21 = fra.me.REG[0];
5810 register_static_object(&once_value_21);
5811 } else fra.me.REG[0] = once_value_21;
5812 fra.me.REG[0] = fra.me.REG[0];
5813 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
5814 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5815 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5816 }
5817 /* native_interface/frontier.nit:654 */
5818 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
5819 /* ../lib/standard/collection/array.nit:269 */
5820 REGB0 = TAG_Int(0);
5821 /* ../lib/standard/collection/array.nit:270 */
5822 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5823 if (UNTAG_Bool(REGB1)) {
5824 } else {
5825 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
5826 }
5827 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
5828 /* ../lib/standard/collection/array.nit:271 */
5829 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
5830 /* ../lib/standard/collection/array.nit:272 */
5831 while(1) {
5832 /* ../lib/standard/collection/array.nit:24 */
5833 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5834 if (UNTAG_Bool(REGB1)) {
5835 } else {
5836 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
5837 }
5838 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
5839 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
5840 if (UNTAG_Bool(REGB2)) {
5841 } else {
5842 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5843 }
5844 /* ../lib/standard/kernel.nit:235 */
5845 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5846 /* ../lib/standard/collection/array.nit:272 */
5847 if (UNTAG_Bool(REGB1)) {
5848 /* ../lib/standard/collection/array.nit:273 */
5849 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
5850 if (UNTAG_Bool(REGB1)) {
5851 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
5852 }
5853 /* ../lib/standard/collection/array.nit:718 */
5854 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
5855 /* native_interface/frontier.nit:655 */
5856 fra.me.REG[7] = CALL_native_interface___frontier___NiVariable___as_arg_to_nit(fra.me.REG[7])(fra.me.REG[7]);
5857 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5858 /* ../lib/standard/collection/array.nit:274 */
5859 REGB1 = TAG_Int(1);
5860 /* ../lib/standard/kernel.nit:238 */
5861 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5862 /* ../lib/standard/collection/array.nit:274 */
5863 REGB0 = REGB1;
5864 } else {
5865 /* ../lib/standard/collection/array.nit:272 */
5866 goto label22;
5867 }
5868 }
5869 label22: while(0);
5870 /* native_interface/frontier.nit:657 */
5871 REGB0 = TAG_Int(3);
5872 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5873 if (!once_value_23) {
5874 fra.me.REG[3] = BOX_NativeString("( ");
5875 REGB0 = TAG_Int(2);
5876 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5877 once_value_23 = fra.me.REG[3];
5878 register_static_object(&once_value_23);
5879 } else fra.me.REG[3] = once_value_23;
5880 fra.me.REG[3] = fra.me.REG[3];
5881 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5882 if (!once_value_24) {
5883 fra.me.REG[3] = BOX_NativeString(", ");
5884 REGB0 = TAG_Int(2);
5885 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5886 once_value_24 = fra.me.REG[3];
5887 register_static_object(&once_value_24);
5888 } else fra.me.REG[3] = once_value_24;
5889 fra.me.REG[3] = fra.me.REG[3];
5890 fra.me.REG[3] = CALL_standard___string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
5891 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5892 if (!once_value_25) {
5893 fra.me.REG[3] = BOX_NativeString(" );\n");
5894 REGB0 = TAG_Int(4);
5895 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5896 once_value_25 = fra.me.REG[3];
5897 register_static_object(&once_value_25);
5898 } else fra.me.REG[3] = once_value_25;
5899 fra.me.REG[3] = fra.me.REG[3];
5900 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5901 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
5902 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
5903 /* native_interface/frontier.nit:659 */
5904 fra.me.REG[0] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
5905 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5906 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
5907 /* native_interface/frontier.nit:662 */
5908 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5909 if (UNTAG_Bool(REGB0)) {
5910 } else {
5911 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5912 if (UNTAG_Bool(REGB1)) {
5913 REGB1 = TAG_Bool(0);
5914 REGB0 = REGB1;
5915 } else {
5916 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5917 REGB0 = REGB1;
5918 }
5919 }
5920 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5921 if (UNTAG_Bool(REGB0)) {
5922 /* native_interface/frontier.nit:663 */
5923 fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
5924 REGB0 = TAG_Int(3);
5925 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5926 if (!once_value_26) {
5927 fra.me.REG[3] = BOX_NativeString("");
5928 REGB0 = TAG_Int(0);
5929 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5930 once_value_26 = fra.me.REG[3];
5931 register_static_object(&once_value_26);
5932 } else fra.me.REG[3] = once_value_26;
5933 fra.me.REG[3] = fra.me.REG[3];
5934 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
5935 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5936 if (UNTAG_Bool(REGB0)) {
5937 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 663);
5938 }
5939 fra.me.REG[3] = CALL_native_interface___frontier___NiVariable___ni_type(fra.me.REG[5])(fra.me.REG[5]);
5940 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5941 if (UNTAG_Bool(REGB0)) {
5942 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 663);
5943 }
5944 fra.me.REG[6] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[5])(fra.me.REG[5]);
5945 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5946 if (UNTAG_Bool(REGB0)) {
5947 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 663);
5948 }
5949 fra.me.REG[7] = CALL_native_interface___frontier___NiVariable___ni_from_name(fra.me.REG[5])(fra.me.REG[5]);
5950 fra.me.REG[7] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6], fra.me.REG[7]);
5951 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
5952 if (!once_value_27) {
5953 fra.me.REG[7] = BOX_NativeString(";\n");
5954 REGB0 = TAG_Int(2);
5955 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5956 once_value_27 = fra.me.REG[7];
5957 register_static_object(&once_value_27);
5958 } else fra.me.REG[7] = once_value_27;
5959 fra.me.REG[7] = fra.me.REG[7];
5960 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
5961 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
5962 CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
5963 /* native_interface/frontier.nit:664 */
5964 fra.me.REG[0] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
5965 REGB0 = TAG_Int(3);
5966 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5967 if (!once_value_28) {
5968 fra.me.REG[7] = BOX_NativeString("return ");
5969 REGB0 = TAG_Int(7);
5970 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5971 once_value_28 = fra.me.REG[7];
5972 register_static_object(&once_value_28);
5973 } else fra.me.REG[7] = once_value_28;
5974 fra.me.REG[7] = fra.me.REG[7];
5975 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
5976 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5977 if (UNTAG_Bool(REGB0)) {
5978 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 664);
5979 }
5980 fra.me.REG[5] = CALL_native_interface___frontier___NiVariable___ni_to_name(fra.me.REG[5])(fra.me.REG[5]);
5981 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5982 if (!once_value_29) {
5983 fra.me.REG[5] = BOX_NativeString(";\n");
5984 REGB0 = TAG_Int(2);
5985 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5986 once_value_29 = fra.me.REG[5];
5987 register_static_object(&once_value_29);
5988 } else fra.me.REG[5] = once_value_29;
5989 fra.me.REG[5] = fra.me.REG[5];
5990 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5991 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5992 CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
5993 }
5994 /* native_interface/frontier.nit:667 */
5995 fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
5996 fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[4])(fra.me.REG[4]);
5997 CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5998 stack_frame_head = fra.me.prev;
5999 return;
6000 }
6001 static const char LOCATE_native_interface___frontier___MMExplicitImport___hash[] = "frontier::MMExplicitImport::(hash::Object::hash)";
6002 val_t native_interface___frontier___MMExplicitImport___hash(val_t p0){
6003 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6004 val_t REGB0;
6005 val_t REGB1;
6006 val_t tmp;
6007 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6008 fra.me.file = LOCATE_native_interface___frontier;
6009 fra.me.line = 670;
6010 fra.me.meth = LOCATE_native_interface___frontier___MMExplicitImport___hash;
6011 fra.me.has_broke = 0;
6012 fra.me.REG_size = 2;
6013 fra.me.nitni_local_ref_head = NULL;
6014 fra.me.REG[0] = NIT_NULL;
6015 fra.me.REG[1] = NIT_NULL;
6016 fra.me.REG[0] = p0;
6017 /* native_interface/frontier.nit:672 */
6018 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
6019 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
6020 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
6021 REGB0 = CALL_standard___hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
6022 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
6023 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
6024 REGB1 = CALL_standard___hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
6025 /* ../lib/standard/kernel.nit:238 */
6026 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6027 /* native_interface/frontier.nit:672 */
6028 goto label1;
6029 label1: while(0);
6030 stack_frame_head = fra.me.prev;
6031 return REGB1;
6032 }
6033 static const char LOCATE_native_interface___frontier___MMExplicitImport_____eqeq[] = "frontier::MMExplicitImport::(kernel::Object::==)";
6034 val_t native_interface___frontier___MMExplicitImport_____eqeq(val_t p0, val_t p1){
6035 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6036 val_t REGB0;
6037 val_t REGB1;
6038 val_t tmp;
6039 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6040 fra.me.file = LOCATE_native_interface___frontier;
6041 fra.me.line = 674;
6042 fra.me.meth = LOCATE_native_interface___frontier___MMExplicitImport_____eqeq;
6043 fra.me.has_broke = 0;
6044 fra.me.REG_size = 4;
6045 fra.me.nitni_local_ref_head = NULL;
6046 fra.me.REG[0] = NIT_NULL;
6047 fra.me.REG[1] = NIT_NULL;
6048 fra.me.REG[2] = NIT_NULL;
6049 fra.me.REG[3] = NIT_NULL;
6050 fra.me.REG[0] = p0;
6051 fra.me.REG[1] = p1;
6052 /* native_interface/frontier.nit:676 */
6053 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMExplicitImport, ID_metamodel___abstractmetamodel___MMExplicitImport)) /*cast MMExplicitImport*/;
6054 if (UNTAG_Bool(REGB0)) {
6055 /* native_interface/frontier.nit:677 */
6056 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
6057 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6058 if (UNTAG_Bool(REGB0)) {
6059 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 677);
6060 }
6061 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[1])(fra.me.REG[1]);
6062 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
6063 if (UNTAG_Bool(REGB0)) {
6064 } else {
6065 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6066 REGB0 = REGB1;
6067 }
6068 } else {
6069 /* native_interface/frontier.nit:676 */
6070 REGB1 = TAG_Bool(0);
6071 REGB0 = REGB1;
6072 }
6073 if (UNTAG_Bool(REGB0)) {
6074 /* native_interface/frontier.nit:677 */
6075 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
6076 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6077 if (UNTAG_Bool(REGB0)) {
6078 nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 677);
6079 }
6080 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[1])(fra.me.REG[1]);
6081 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[1]));
6082 if (UNTAG_Bool(REGB0)) {
6083 } else {
6084 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6085 REGB0 = REGB1;
6086 }
6087 } else {
6088 /* native_interface/frontier.nit:676 */
6089 REGB1 = TAG_Bool(0);
6090 REGB0 = REGB1;
6091 }
6092 goto label1;
6093 label1: while(0);
6094 stack_frame_head = fra.me.prev;
6095 return REGB0;
6096 }