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