1 /* This C file is generated by NIT to compile module inline_get_and_set. */
2 #include "inline_get_and_set._sep.h"
3 void 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_inline_get_and_set
;
15 fra
.me
.meth
= LOCATE_inline_get_and_set___Program___dump_inline_get_set
;
18 fra
.me
.REG
[0] = NIT_NULL
;
19 fra
.me
.REG
[1] = NIT_NULL
;
20 fra
.me
.REG
[2] = NIT_NULL
;
21 fra
.me
.REG
[3] = NIT_NULL
;
24 /* ./analysis//inline_get_and_set.nit:30 */
26 fra
.me
.REG
[2] = NEW_Array_array___Array___with_capacity(REGB0
);
28 fra
.me
.REG
[3] = BOX_NativeString("");
30 fra
.me
.REG
[3] = NEW_String_string___String___with_native(fra
.me
.REG
[3], REGB0
);
31 once_value_1
= fra
.me
.REG
[3];
32 register_static_object(&once_value_1
);
33 } else fra
.me
.REG
[3] = once_value_1
;
34 fra
.me
.REG
[3] = fra
.me
.REG
[3];
35 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
36 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
38 fra
.me
.REG
[1] = BOX_NativeString("/");
40 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
41 once_value_2
= fra
.me
.REG
[1];
42 register_static_object(&once_value_2
);
43 } else fra
.me
.REG
[1] = once_value_2
;
44 fra
.me
.REG
[1] = fra
.me
.REG
[1];
45 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
46 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
47 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
48 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
49 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
51 fra
.me
.REG
[1] = BOX_NativeString(".inline_get_set.log");
53 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
54 once_value_3
= fra
.me
.REG
[1];
55 register_static_object(&once_value_3
);
56 } else fra
.me
.REG
[1] = once_value_3
;
57 fra
.me
.REG
[1] = fra
.me
.REG
[1];
58 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
59 fra
.me
.REG
[2] = CALL_string___Object___to_s(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
60 fra
.me
.REG
[2] = NEW_OFStream_file___OFStream___open(fra
.me
.REG
[2]);
61 /* ./analysis//inline_get_and_set.nit:32 */
63 fra
.me
.REG
[1] = NEW_Array_array___Array___with_capacity(REGB0
);
65 fra
.me
.REG
[3] = BOX_NativeString("Number of getters and setters inlined: ");
67 fra
.me
.REG
[3] = NEW_String_string___String___with_native(fra
.me
.REG
[3], REGB0
);
68 once_value_4
= fra
.me
.REG
[3];
69 register_static_object(&once_value_4
);
70 } else fra
.me
.REG
[3] = once_value_4
;
71 fra
.me
.REG
[3] = fra
.me
.REG
[3];
72 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
73 REGB0
= TAG_Bool(ATTR_inline_get_and_set___Program____number_getter_setter_inlined(fra
.me
.REG
[0])!=NIT_NULL
);
74 if (UNTAG_Bool(REGB0
)) {
76 nit_abort("Uninitialized attribute %s", "_number_getter_setter_inlined", LOCATE_inline_get_and_set
, 32);
78 REGB0
= ATTR_inline_get_and_set___Program____number_getter_setter_inlined(fra
.me
.REG
[0]);
79 fra
.me
.REG
[0] = CALL_string___Object___to_s(REGB0
)(REGB0
);
80 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
82 fra
.me
.REG
[0] = BOX_NativeString("\n");
84 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
85 once_value_5
= fra
.me
.REG
[0];
86 register_static_object(&once_value_5
);
87 } else fra
.me
.REG
[0] = once_value_5
;
88 fra
.me
.REG
[0] = fra
.me
.REG
[0];
89 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
90 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
91 CALL_stream___OStream___write(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
92 /* ./analysis//inline_get_and_set.nit:34 */
93 CALL_stream___IOS___close(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
94 stack_frame_head
= fra
.me
.prev
;
97 void inline_get_and_set___Program___inline_get_set(val_t p0
){
98 struct {struct stack_frame_t me
;} fra
;
100 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
101 fra
.me
.file
= LOCATE_inline_get_and_set
;
103 fra
.me
.meth
= LOCATE_inline_get_and_set___Program___inline_get_set
;
104 fra
.me
.has_broke
= 0;
106 fra
.me
.REG
[0] = NIT_NULL
;
108 CALL_program___Program___with_each_iroutines(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_inline_get_and_set___Program___inline_get_set_1
));
109 stack_frame_head
= fra
.me
.prev
;
112 void OC_inline_get_and_set___Program___inline_get_set_1(struct stack_frame_t
*closctx
, val_t p0
, val_t p1
){
113 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
117 /* ./analysis//inline_get_and_set.nit:38 */
118 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
119 fra
.me
.file
= LOCATE_inline_get_and_set
;
121 fra
.me
.meth
= LOCATE_inline_get_and_set___Program___inline_get_set
;
122 fra
.me
.has_broke
= 0;
124 fra
.me
.REG
[0] = NIT_NULL
;
125 fra
.me
.REG
[1] = NIT_NULL
;
128 /* ./analysis//inline_get_and_set.nit:39 */
129 fra
.me
.REG
[1] = NEW_InlineGetSetVisitor_inline_get_and_set___InlineGetSetVisitor___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
130 /* ./analysis//inline_get_and_set.nit:40 */
131 CALL_icode_tools___ICodeVisitor___visit_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
132 /* ./analysis//inline_get_and_set.nit:42 */
133 REGB0
= ATTR_inline_get_and_set___Program____number_getter_setter_inlined(closctx
->REG
[0]);
134 REGB1
= CALL_inline_get_and_set___InlineGetSetVisitor___number_inlined(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
135 /* ./../lib/standard//kernel.nit:215 */
136 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
137 /* ./analysis//inline_get_and_set.nit:42 */
138 ATTR_inline_get_and_set___Program____number_getter_setter_inlined(closctx
->REG
[0]) = REGB1
;
139 stack_frame_head
= fra
.me
.prev
;
142 val_t
inline_get_and_set___InlineGetSetVisitor___number_inlined(val_t p0
){
143 struct {struct stack_frame_t me
;} fra
;
146 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
147 fra
.me
.file
= LOCATE_inline_get_and_set
;
149 fra
.me
.meth
= LOCATE_inline_get_and_set___InlineGetSetVisitor___number_inlined
;
150 fra
.me
.has_broke
= 0;
152 fra
.me
.REG
[0] = NIT_NULL
;
154 /* ./analysis//inline_get_and_set.nit:50 */
155 REGB0
= TAG_Bool(ATTR_inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[0])!=NIT_NULL
);
156 if (UNTAG_Bool(REGB0
)) {
158 nit_abort("Uninitialized attribute %s", "_number_inlined", LOCATE_inline_get_and_set
, 50);
160 REGB0
= ATTR_inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[0]);
161 stack_frame_head
= fra
.me
.prev
;
164 void inline_get_and_set___InlineGetSetVisitor___visit_icode(val_t p0
, val_t p1
){
165 struct {struct stack_frame_t me
; val_t MORE_REG
[9];} fra
;
169 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
170 fra
.me
.file
= LOCATE_inline_get_and_set
;
172 fra
.me
.meth
= LOCATE_inline_get_and_set___InlineGetSetVisitor___visit_icode
;
173 fra
.me
.has_broke
= 0;
174 fra
.me
.REG_size
= 10;
175 fra
.me
.REG
[0] = NIT_NULL
;
176 fra
.me
.REG
[1] = NIT_NULL
;
177 fra
.me
.REG
[2] = NIT_NULL
;
178 fra
.me
.REG
[3] = NIT_NULL
;
179 fra
.me
.REG
[4] = NIT_NULL
;
180 fra
.me
.REG
[5] = NIT_NULL
;
181 fra
.me
.REG
[6] = NIT_NULL
;
182 fra
.me
.REG
[7] = NIT_NULL
;
183 fra
.me
.REG
[8] = NIT_NULL
;
184 fra
.me
.REG
[9] = NIT_NULL
;
187 /* ./analysis//inline_get_and_set.nit:52 */
188 fra
.me
.REG
[2] = fra
.me
.REG
[0];
189 fra
.me
.REG
[3] = fra
.me
.REG
[1];
190 /* ./analysis//inline_get_and_set.nit:55 */
191 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_ICall
, ID_ICall
)) /*cast ICall*/;
192 if (UNTAG_Bool(REGB0
)) {
193 /* ./analysis//inline_get_and_set.nit:56 */
194 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
195 if (UNTAG_Bool(REGB0
)) {
196 nit_abort("Reciever is null", NULL
, LOCATE_inline_get_and_set
, 56);
198 fra
.me
.REG
[4] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
199 /* ./analysis//inline_get_and_set.nit:57 */
200 fra
.me
.REG
[5] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
201 /* ./analysis//inline_get_and_set.nit:58 */
202 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
203 if (UNTAG_Bool(REGB0
)) {
205 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
206 if (UNTAG_Bool(REGB1
)) {
207 REGB1
= TAG_Bool(false);
210 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
214 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
215 if (UNTAG_Bool(REGB0
)) {
216 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[4], COLOR_MMAttrImplementationMethod
, ID_MMAttrImplementationMethod
)) /*cast MMAttrImplementationMethod*/;
218 REGB1
= TAG_Bool(false);
221 if (UNTAG_Bool(REGB0
)) {
222 /* ./analysis//inline_get_and_set.nit:59 */
223 REGB0
= TAG_Bool(ATTR_inline_get_and_set___InlineGetSetVisitor____icb(fra
.me
.REG
[2])!=NIT_NULL
);
224 if (UNTAG_Bool(REGB0
)) {
226 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_inline_get_and_set
, 59);
228 fra
.me
.REG
[4] = ATTR_inline_get_and_set___InlineGetSetVisitor____icb(fra
.me
.REG
[2]);
229 /* ./analysis//inline_get_and_set.nit:60 */
230 fra
.me
.REG
[6] = NEW_ISeq_icode_base___ISeq___init();
231 /* ./analysis//inline_get_and_set.nit:61 */
232 fra
.me
.REG
[7] = CALL_icode_builder___ICodeBuilder___seq(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
233 /* ./analysis//inline_get_and_set.nit:62 */
234 CALL_icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6]);
235 /* ./analysis//inline_get_and_set.nit:63 */
236 fra
.me
.REG
[8] = CALL_icode_tools___ICodeVisitor___current_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
237 REGB0
= TAG_Bool(fra
.me
.REG
[8]==NIT_NULL
);
238 if (UNTAG_Bool(REGB0
)) {
239 nit_abort("Reciever is null", NULL
, LOCATE_inline_get_and_set
, 63);
241 CALL_list___ListIterator___insert_before(fra
.me
.REG
[8])(fra
.me
.REG
[8], fra
.me
.REG
[6]);
242 /* ./analysis//inline_get_and_set.nit:64 */
243 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
244 if (UNTAG_Bool(REGB0
)) {
245 nit_abort("Reciever is null", NULL
, LOCATE_inline_get_and_set
, 64);
247 fra
.me
.REG
[8] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
248 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
249 if (UNTAG_Bool(REGB0
)) {
250 nit_abort("Reciever is null", NULL
, LOCATE_inline_get_and_set
, 64);
252 fra
.me
.REG
[9] = CALL_icode_base___ICodeN___closure_defs(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
253 fra
.me
.REG
[9] = CALL_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]);
254 /* ./analysis//inline_get_and_set.nit:65 */
255 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
256 if (UNTAG_Bool(REGB0
)) {
257 nit_abort("Reciever is null", NULL
, LOCATE_inline_get_and_set
, 65);
259 fra
.me
.REG
[3] = CALL_icode_base___ICode___result(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
260 /* ./analysis//inline_get_and_set.nit:66 */
261 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
262 if (UNTAG_Bool(REGB0
)) {
264 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
265 if (UNTAG_Bool(REGB1
)) {
266 REGB1
= TAG_Bool(false);
269 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
273 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
274 if (UNTAG_Bool(REGB0
)) {
275 /* ./analysis//inline_get_and_set.nit:67 */
276 REGB0
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
277 if (UNTAG_Bool(REGB0
)) {
279 REGB1
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
280 if (UNTAG_Bool(REGB1
)) {
281 REGB1
= TAG_Bool(false);
284 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[9])(fra
.me
.REG
[9], NIT_NULL
);
288 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
289 if (UNTAG_Bool(REGB0
)) {
291 nit_abort("Assert failed", NULL
, LOCATE_inline_get_and_set
, 67);
293 /* ./analysis//inline_get_and_set.nit:68 */
294 fra
.me
.REG
[8] = CALL_icode_tools___ICodeVisitor___current_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
295 fra
.me
.REG
[9] = NEW_IMove_icode_base___IMove___init(fra
.me
.REG
[3], fra
.me
.REG
[9]);
296 REGB0
= TAG_Bool(fra
.me
.REG
[8]==NIT_NULL
);
297 if (UNTAG_Bool(REGB0
)) {
298 nit_abort("Reciever is null", NULL
, LOCATE_inline_get_and_set
, 68);
300 CALL_list___ListIterator___insert_before(fra
.me
.REG
[8])(fra
.me
.REG
[8], fra
.me
.REG
[9]);
302 /* ./analysis//inline_get_and_set.nit:70 */
303 fra
.me
.REG
[9] = CALL_icode_tools___ICodeVisitor___current_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
304 REGB0
= TAG_Bool(fra
.me
.REG
[9]==NIT_NULL
);
305 if (UNTAG_Bool(REGB0
)) {
306 nit_abort("Reciever is null", NULL
, LOCATE_inline_get_and_set
, 70);
308 CALL_list___ListIterator___delete(fra
.me
.REG
[9])(fra
.me
.REG
[9]);
309 /* ./analysis//inline_get_and_set.nit:71 */
310 CALL_icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[7]);
311 /* ./analysis//inline_get_and_set.nit:72 */
312 REGB0
= ATTR_inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[2]);
314 /* ./../lib/standard//kernel.nit:215 */
315 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
316 /* ./analysis//inline_get_and_set.nit:72 */
317 ATTR_inline_get_and_set___InlineGetSetVisitor____number_inlined(fra
.me
.REG
[2]) = REGB1
;
318 /* ./analysis//inline_get_and_set.nit:73 */
319 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[6]);
322 /* ./analysis//inline_get_and_set.nit:76 */
323 CALL_SUPER_inline_get_and_set___InlineGetSetVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
324 stack_frame_head
= fra
.me
.prev
;
327 void inline_get_and_set___InlineGetSetVisitor___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
328 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_InlineGetSetVisitor
].i
;
329 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
331 if (init_table
[itpos0
]) return;
332 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
333 fra
.me
.file
= LOCATE_inline_get_and_set
;
335 fra
.me
.meth
= LOCATE_inline_get_and_set___InlineGetSetVisitor___init
;
336 fra
.me
.has_broke
= 0;
338 fra
.me
.REG
[0] = NIT_NULL
;
339 fra
.me
.REG
[1] = NIT_NULL
;
340 fra
.me
.REG
[2] = NIT_NULL
;
341 fra
.me
.REG
[3] = NIT_NULL
;
345 /* ./analysis//inline_get_and_set.nit:79 */
346 fra
.me
.REG
[3] = fra
.me
.REG
[0];
347 CALL_icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
348 /* ./analysis//inline_get_and_set.nit:81 */
349 fra
.me
.REG
[2] = NEW_ICodeBuilder_icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
350 ATTR_inline_get_and_set___InlineGetSetVisitor____icb(fra
.me
.REG
[3]) = fra
.me
.REG
[2];
351 stack_frame_head
= fra
.me
.prev
;
352 init_table
[itpos0
] = 1;