1 /* This C file is generated by NIT to compile module global___inline_get_and_set. */
2 #include "global___inline_get_and_set._sep.h"
3 void global___inline_get_and_set___Program___dump_inline_get_set(val_t p0
, val_t p1
){
4 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
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 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
13 fra
.me
.file
= LOCATE_global___inline_get_and_set
;
15 fra
.me
.meth
= LOCATE_global___inline_get_and_set___Program___dump_inline_get_set
;
18 fra
.me
.nitni_local_ref_head
= NULL
;
19 fra
.me
.REG
[0] = NIT_NULL
;
20 fra
.me
.REG
[1] = NIT_NULL
;
21 fra
.me
.REG
[2] = NIT_NULL
;
22 fra
.me
.REG
[3] = NIT_NULL
;
25 /* global/inline_get_and_set.nit:30 */
27 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
29 fra
.me
.REG
[3] = BOX_NativeString("");
31 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
32 once_value_1
= fra
.me
.REG
[3];
33 register_static_object(&once_value_1
);
34 } else fra
.me
.REG
[3] = once_value_1
;
35 fra
.me
.REG
[3] = fra
.me
.REG
[3];
36 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
37 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
39 fra
.me
.REG
[1] = BOX_NativeString("/");
41 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
42 once_value_2
= fra
.me
.REG
[1];
43 register_static_object(&once_value_2
);
44 } else fra
.me
.REG
[1] = once_value_2
;
45 fra
.me
.REG
[1] = fra
.me
.REG
[1];
46 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
47 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
48 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
49 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
50 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
52 fra
.me
.REG
[1] = BOX_NativeString(".inline_get_set.log");
54 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
55 once_value_3
= fra
.me
.REG
[1];
56 register_static_object(&once_value_3
);
57 } else fra
.me
.REG
[1] = once_value_3
;
58 fra
.me
.REG
[1] = fra
.me
.REG
[1];
59 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
60 fra
.me
.REG
[2] = CALL_standard___string___Object___to_s(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
61 fra
.me
.REG
[2] = NEW_OFStream_standard___file___OFStream___open(fra
.me
.REG
[2]);
62 /* global/inline_get_and_set.nit:32 */
64 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
66 fra
.me
.REG
[3] = BOX_NativeString("Number of getters and setters inlined: ");
68 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
69 once_value_4
= fra
.me
.REG
[3];
70 register_static_object(&once_value_4
);
71 } else fra
.me
.REG
[3] = once_value_4
;
72 fra
.me
.REG
[3] = fra
.me
.REG
[3];
73 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
74 REGB0
= TAG_Bool(ATTR_global___inline_get_and_set___Program____number_getter_setter_inlined(fra
.me
.REG
[0])!=NIT_NULL
);
75 if (UNTAG_Bool(REGB0
)) {
77 nit_abort("Uninitialized attribute %s", "_number_getter_setter_inlined", LOCATE_global___inline_get_and_set
, 32);
79 REGB0
= ATTR_global___inline_get_and_set___Program____number_getter_setter_inlined(fra
.me
.REG
[0]);
80 fra
.me
.REG
[0] = CALL_standard___string___Object___to_s(REGB0
)(REGB0
);
81 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
83 fra
.me
.REG
[0] = BOX_NativeString("\n");
85 fra
.me
.REG
[0] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[0], REGB0
);
86 once_value_5
= fra
.me
.REG
[0];
87 register_static_object(&once_value_5
);
88 } else fra
.me
.REG
[0] = once_value_5
;
89 fra
.me
.REG
[0] = fra
.me
.REG
[0];
90 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
91 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
92 CALL_standard___stream___OStream___write(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
93 /* global/inline_get_and_set.nit:34 */
94 CALL_standard___stream___IOS___close(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
95 stack_frame_head
= fra
.me
.prev
;
98 void global___inline_get_and_set___Program___inline_get_set(val_t p0
){
99 struct {struct stack_frame_t me
;} fra
;
101 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
102 fra
.me
.file
= LOCATE_global___inline_get_and_set
;
104 fra
.me
.meth
= LOCATE_global___inline_get_and_set___Program___inline_get_set
;
105 fra
.me
.has_broke
= 0;
107 fra
.me
.nitni_local_ref_head
= NULL
;
108 fra
.me
.REG
[0] = NIT_NULL
;
110 CALL_program___Program___with_each_iroutines(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_global___inline_get_and_set___Program___inline_get_set_1
));
111 stack_frame_head
= fra
.me
.prev
;
114 void OC_global___inline_get_and_set___Program___inline_get_set_1(struct stack_frame_t
*closctx
, val_t p0
, val_t p1
){
115 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
119 /* global/inline_get_and_set.nit:38 */
120 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
121 fra
.me
.file
= LOCATE_global___inline_get_and_set
;
123 fra
.me
.meth
= LOCATE_global___inline_get_and_set___Program___inline_get_set
;
124 fra
.me
.has_broke
= 0;
126 fra
.me
.nitni_local_ref_head
= NULL
;
127 fra
.me
.REG
[0] = NIT_NULL
;
128 fra
.me
.REG
[1] = NIT_NULL
;
131 /* global/inline_get_and_set.nit:39 */
132 fra
.me
.REG
[1] = NEW_InlineGetSetVisitor_global___inline_get_and_set___InlineGetSetVisitor___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
133 /* global/inline_get_and_set.nit:40 */
134 CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
135 /* global/inline_get_and_set.nit:42 */
136 REGB0
= ATTR_global___inline_get_and_set___Program____number_getter_setter_inlined(closctx
->REG
[0]);
137 REGB1
= CALL_global___inline_get_and_set___InlineGetSetVisitor___number_inlined(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
138 /* ../lib/standard/kernel.nit:235 */
139 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
140 /* global/inline_get_and_set.nit:42 */
141 ATTR_global___inline_get_and_set___Program____number_getter_setter_inlined(closctx
->REG
[0]) = REGB1
;
142 stack_frame_head
= fra
.me
.prev
;
145 val_t
global___inline_get_and_set___InlineGetSetVisitor___number_inlined(val_t p0
){
146 struct {struct stack_frame_t me
;} fra
;
149 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
150 fra
.me
.file
= LOCATE_global___inline_get_and_set
;
152 fra
.me
.meth
= LOCATE_global___inline_get_and_set___InlineGetSetVisitor___number_inlined
;
153 fra
.me
.has_broke
= 0;
155 fra
.me
.nitni_local_ref_head
= NULL
;
156 fra
.me
.REG
[0] = NIT_NULL
;
158 /* global/inline_get_and_set.nit:50 */
159 REGB0
= TAG_Bool(ATTR_global___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[0])!=NIT_NULL
);
160 if (UNTAG_Bool(REGB0
)) {
162 nit_abort("Uninitialized attribute %s", "_number_inlined", LOCATE_global___inline_get_and_set
, 50);
164 REGB0
= ATTR_global___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[0]);
165 stack_frame_head
= fra
.me
.prev
;
168 void global___inline_get_and_set___InlineGetSetVisitor___visit_icode(val_t p0
, val_t p1
){
169 struct {struct stack_frame_t me
; val_t MORE_REG
[9];} fra
;
173 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
174 fra
.me
.file
= LOCATE_global___inline_get_and_set
;
176 fra
.me
.meth
= LOCATE_global___inline_get_and_set___InlineGetSetVisitor___visit_icode
;
177 fra
.me
.has_broke
= 0;
178 fra
.me
.REG_size
= 10;
179 fra
.me
.nitni_local_ref_head
= NULL
;
180 fra
.me
.REG
[0] = NIT_NULL
;
181 fra
.me
.REG
[1] = NIT_NULL
;
182 fra
.me
.REG
[2] = NIT_NULL
;
183 fra
.me
.REG
[3] = NIT_NULL
;
184 fra
.me
.REG
[4] = NIT_NULL
;
185 fra
.me
.REG
[5] = NIT_NULL
;
186 fra
.me
.REG
[6] = NIT_NULL
;
187 fra
.me
.REG
[7] = NIT_NULL
;
188 fra
.me
.REG
[8] = NIT_NULL
;
189 fra
.me
.REG
[9] = NIT_NULL
;
192 /* global/inline_get_and_set.nit:52 */
193 fra
.me
.REG
[2] = fra
.me
.REG
[0];
194 fra
.me
.REG
[3] = fra
.me
.REG
[1];
195 /* global/inline_get_and_set.nit:55 */
196 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___ICall
, ID_icode___icode_base___ICall
)) /*cast ICall*/;
197 if (UNTAG_Bool(REGB0
)) {
198 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
199 if (UNTAG_Bool(REGB0
)) {
200 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 55);
202 REGB0
= CALL_icode___icode_base___IAbsCall___is_explicit_from_extern(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
203 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
205 REGB1
= TAG_Bool(false);
208 if (UNTAG_Bool(REGB0
)) {
209 /* global/inline_get_and_set.nit:56 */
210 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
211 if (UNTAG_Bool(REGB0
)) {
212 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 56);
214 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
215 /* global/inline_get_and_set.nit:57 */
216 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
217 /* global/inline_get_and_set.nit:58 */
218 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
219 if (UNTAG_Bool(REGB0
)) {
221 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
222 if (UNTAG_Bool(REGB1
)) {
223 REGB1
= TAG_Bool(false);
226 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
230 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
231 if (UNTAG_Bool(REGB0
)) {
232 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[4], COLOR_syntax___syntax_base___MMAttrImplementationMethod
, ID_syntax___syntax_base___MMAttrImplementationMethod
)) /*cast MMAttrImplementationMethod*/;
234 REGB1
= TAG_Bool(false);
237 if (UNTAG_Bool(REGB0
)) {
238 /* global/inline_get_and_set.nit:59 */
239 REGB0
= TAG_Bool(ATTR_global___inline_get_and_set___InlineGetSetVisitor____icb(fra
.me
.REG
[2])!=NIT_NULL
);
240 if (UNTAG_Bool(REGB0
)) {
242 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_global___inline_get_and_set
, 59);
244 fra
.me
.REG
[4] = ATTR_global___inline_get_and_set___InlineGetSetVisitor____icb(fra
.me
.REG
[2]);
245 /* global/inline_get_and_set.nit:60 */
246 fra
.me
.REG
[6] = NEW_ISeq_icode___icode_base___ISeq___init();
247 /* global/inline_get_and_set.nit:61 */
248 fra
.me
.REG
[7] = CALL_icode___icode_builder___ICodeBuilder___seq(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
249 /* global/inline_get_and_set.nit:62 */
250 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6]);
251 /* global/inline_get_and_set.nit:63 */
252 fra
.me
.REG
[8] = CALL_icode___icode_tools___ICodeVisitor___current_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
253 REGB0
= TAG_Bool(fra
.me
.REG
[8]==NIT_NULL
);
254 if (UNTAG_Bool(REGB0
)) {
255 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 63);
257 CALL_standard___collection___list___ListIterator___insert_before(fra
.me
.REG
[8])(fra
.me
.REG
[8], fra
.me
.REG
[6]);
258 /* global/inline_get_and_set.nit:64 */
259 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
260 if (UNTAG_Bool(REGB0
)) {
261 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 64);
263 fra
.me
.REG
[8] = CALL_icode___icode_base___ICodeN___exprs(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
264 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
265 if (UNTAG_Bool(REGB0
)) {
266 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 64);
268 fra
.me
.REG
[9] = CALL_icode___icode_base___ICodeN___closure_defs(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
269 fra
.me
.REG
[9] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[8], fra
.me
.REG
[9]);
270 /* global/inline_get_and_set.nit:65 */
271 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
272 if (UNTAG_Bool(REGB0
)) {
273 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 65);
275 fra
.me
.REG
[3] = CALL_icode___icode_base___ICode___result(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
276 /* global/inline_get_and_set.nit:66 */
277 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
278 if (UNTAG_Bool(REGB0
)) {
280 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
281 if (UNTAG_Bool(REGB1
)) {
282 REGB1
= TAG_Bool(false);
285 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
289 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
290 if (UNTAG_Bool(REGB0
)) {
291 /* global/inline_get_and_set.nit:67 */
292 REGB0
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
293 if (UNTAG_Bool(REGB0
)) {
295 REGB1
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
296 if (UNTAG_Bool(REGB1
)) {
297 REGB1
= TAG_Bool(false);
300 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[9])(fra
.me
.REG
[9], NIT_NULL
);
304 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
305 if (UNTAG_Bool(REGB0
)) {
307 nit_abort("Assert failed", NULL
, LOCATE_global___inline_get_and_set
, 67);
309 /* global/inline_get_and_set.nit:68 */
310 fra
.me
.REG
[8] = CALL_icode___icode_tools___ICodeVisitor___current_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
311 fra
.me
.REG
[9] = NEW_IMove_icode___icode_base___IMove___init(fra
.me
.REG
[3], fra
.me
.REG
[9]);
312 REGB0
= TAG_Bool(fra
.me
.REG
[8]==NIT_NULL
);
313 if (UNTAG_Bool(REGB0
)) {
314 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 68);
316 CALL_standard___collection___list___ListIterator___insert_before(fra
.me
.REG
[8])(fra
.me
.REG
[8], fra
.me
.REG
[9]);
318 /* global/inline_get_and_set.nit:70 */
319 fra
.me
.REG
[9] = CALL_icode___icode_tools___ICodeVisitor___current_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
320 REGB0
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
321 if (UNTAG_Bool(REGB0
)) {
322 nit_abort("Reciever is null", NULL
, LOCATE_global___inline_get_and_set
, 70);
324 CALL_standard___collection___list___ListIterator___delete(fra
.me
.REG
[9])(fra
.me
.REG
[9]);
325 /* global/inline_get_and_set.nit:71 */
326 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[7]);
327 /* global/inline_get_and_set.nit:72 */
328 REGB0
= ATTR_global___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[2]);
330 /* ../lib/standard/kernel.nit:235 */
331 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
332 /* global/inline_get_and_set.nit:72 */
333 ATTR_global___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[2]) = REGB1
;
334 /* global/inline_get_and_set.nit:73 */
335 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[6]);
338 /* global/inline_get_and_set.nit:76 */
339 CALL_SUPER_global___inline_get_and_set___InlineGetSetVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
340 stack_frame_head
= fra
.me
.prev
;
343 void global___inline_get_and_set___InlineGetSetVisitor___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
344 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___inline_get_and_set___InlineGetSetVisitor
].i
;
345 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
347 if (init_table
[itpos0
]) return;
348 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
349 fra
.me
.file
= LOCATE_global___inline_get_and_set
;
351 fra
.me
.meth
= LOCATE_global___inline_get_and_set___InlineGetSetVisitor___init
;
352 fra
.me
.has_broke
= 0;
354 fra
.me
.nitni_local_ref_head
= NULL
;
355 fra
.me
.REG
[0] = NIT_NULL
;
356 fra
.me
.REG
[1] = NIT_NULL
;
357 fra
.me
.REG
[2] = NIT_NULL
;
358 fra
.me
.REG
[3] = NIT_NULL
;
362 /* global/inline_get_and_set.nit:79 */
363 fra
.me
.REG
[3] = fra
.me
.REG
[0];
364 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
365 /* global/inline_get_and_set.nit:81 */
366 fra
.me
.REG
[2] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
367 ATTR_global___inline_get_and_set___InlineGetSetVisitor____icb(fra
.me
.REG
[3]) = fra
.me
.REG
[2];
368 stack_frame_head
= fra
.me
.prev
;
369 init_table
[itpos0
] = 1;