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