1 /* This C file is generated by NIT to compile module reachable_from_init_method_analysis. */
2 #include "reachable_from_init_method_analysis._sep.h"
3 val_t
reachable_from_init_method_analysis___Program___rfima(val_t p0
){
4 struct {struct stack_frame_t me
;} fra
;
6 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
7 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
9 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___Program___rfima
;
12 fra
.me
.REG
[0] = NIT_NULL
;
14 /* ./analysis//reachable_from_init_method_analysis.nit:25 */
15 fra
.me
.REG
[0] = ATTR_reachable_from_init_method_analysis___Program____rfima(fra
.me
.REG
[0]);
16 stack_frame_head
= fra
.me
.prev
;
19 void reachable_from_init_method_analysis___Program___rfima__eq(val_t p0
, val_t p1
){
20 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
22 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
23 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
25 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___Program___rfima__eq
;
28 fra
.me
.REG
[0] = NIT_NULL
;
29 fra
.me
.REG
[1] = NIT_NULL
;
32 /* ./analysis//reachable_from_init_method_analysis.nit:25 */
33 ATTR_reachable_from_init_method_analysis___Program____rfima(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
34 stack_frame_head
= fra
.me
.prev
;
37 void reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init(val_t p0
, val_t p1
){
38 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
41 static val_t once_value_1
; /* Once value */
42 static val_t once_value_2
; /* Once value */
43 static val_t once_value_3
; /* Once value */
44 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
45 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
47 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init
;
50 fra
.me
.REG
[0] = NIT_NULL
;
51 fra
.me
.REG
[1] = NIT_NULL
;
52 fra
.me
.REG
[2] = NIT_NULL
;
53 fra
.me
.REG
[3] = NIT_NULL
;
56 /* ./analysis//reachable_from_init_method_analysis.nit:31 */
58 fra
.me
.REG
[2] = NEW_Array_array___Array___with_capacity(REGB0
);
60 fra
.me
.REG
[3] = BOX_NativeString("");
62 fra
.me
.REG
[3] = NEW_String_string___String___with_native(fra
.me
.REG
[3], REGB0
);
63 once_value_1
= fra
.me
.REG
[3];
64 register_static_object(&once_value_1
);
65 } else fra
.me
.REG
[3] = once_value_1
;
66 fra
.me
.REG
[3] = fra
.me
.REG
[3];
67 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
68 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
70 fra
.me
.REG
[1] = BOX_NativeString("/");
72 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
73 once_value_2
= fra
.me
.REG
[1];
74 register_static_object(&once_value_2
);
75 } else fra
.me
.REG
[1] = once_value_2
;
76 fra
.me
.REG
[1] = fra
.me
.REG
[1];
77 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
78 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
79 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
80 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
81 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
83 fra
.me
.REG
[1] = BOX_NativeString(".reachable_methods_from_init.log");
85 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
86 once_value_3
= fra
.me
.REG
[1];
87 register_static_object(&once_value_3
);
88 } else fra
.me
.REG
[1] = once_value_3
;
89 fra
.me
.REG
[1] = fra
.me
.REG
[1];
90 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
91 fra
.me
.REG
[2] = CALL_string___Object___to_s(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
92 fra
.me
.REG
[2] = NEW_OFStream_file___OFStream___open(fra
.me
.REG
[2]);
93 CALL_program___Program___with_each_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init_4
));
94 /* ./analysis//reachable_from_init_method_analysis.nit:37 */
95 CALL_stream___IOS___close(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
96 stack_frame_head
= fra
.me
.prev
;
99 void OC_reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init_4(struct stack_frame_t
*closctx
, val_t p0
){
100 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
103 static val_t once_value_5
; /* Once value */
104 static val_t once_value_6
; /* Once value */
105 /* ./analysis//reachable_from_init_method_analysis.nit:32 */
106 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
107 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
109 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init
;
110 fra
.me
.has_broke
= 0;
112 fra
.me
.REG
[0] = NIT_NULL
;
113 fra
.me
.REG
[1] = NIT_NULL
;
114 fra
.me
.REG
[2] = NIT_NULL
;
116 /* ./analysis//reachable_from_init_method_analysis.nit:33 */
117 fra
.me
.REG
[1] = CALL_reachable_from_init_method_analysis___Program___rfima(closctx
->REG
[0])(closctx
->REG
[0]);
118 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
119 if (UNTAG_Bool(REGB0
)) {
120 nit_abort("Reciever is null", NULL
, LOCATE_reachable_from_init_method_analysis
, 33);
122 REGB0
= CALL_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_method_reachable_from_init(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
123 if (UNTAG_Bool(REGB0
)) {
124 /* ./analysis//reachable_from_init_method_analysis.nit:34 */
126 fra
.me
.REG
[1] = NEW_Array_array___Array___with_capacity(REGB0
);
128 fra
.me
.REG
[2] = BOX_NativeString("");
130 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
131 once_value_5
= fra
.me
.REG
[2];
132 register_static_object(&once_value_5
);
133 } else fra
.me
.REG
[2] = once_value_5
;
134 fra
.me
.REG
[2] = fra
.me
.REG
[2];
135 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
136 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
137 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
139 fra
.me
.REG
[0] = BOX_NativeString("\n");
141 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
142 once_value_6
= fra
.me
.REG
[0];
143 register_static_object(&once_value_6
);
144 } else fra
.me
.REG
[0] = once_value_6
;
145 fra
.me
.REG
[0] = fra
.me
.REG
[0];
146 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
147 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
148 CALL_stream___OStream___write(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[1]);
150 stack_frame_head
= fra
.me
.prev
;
153 void reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init(val_t p0
, val_t p1
){
154 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
157 static val_t once_value_1
; /* Once value */
158 static val_t once_value_2
; /* Once value */
159 static val_t once_value_3
; /* Once value */
160 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
161 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
163 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init
;
164 fra
.me
.has_broke
= 0;
166 fra
.me
.REG
[0] = NIT_NULL
;
167 fra
.me
.REG
[1] = NIT_NULL
;
168 fra
.me
.REG
[2] = NIT_NULL
;
169 fra
.me
.REG
[3] = NIT_NULL
;
172 /* ./analysis//reachable_from_init_method_analysis.nit:43 */
174 fra
.me
.REG
[2] = NEW_Array_array___Array___with_capacity(REGB0
);
176 fra
.me
.REG
[3] = BOX_NativeString("");
178 fra
.me
.REG
[3] = NEW_String_string___String___with_native(fra
.me
.REG
[3], REGB0
);
179 once_value_1
= fra
.me
.REG
[3];
180 register_static_object(&once_value_1
);
181 } else fra
.me
.REG
[3] = once_value_1
;
182 fra
.me
.REG
[3] = fra
.me
.REG
[3];
183 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
184 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
186 fra
.me
.REG
[1] = BOX_NativeString("/");
188 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
189 once_value_2
= fra
.me
.REG
[1];
190 register_static_object(&once_value_2
);
191 } else fra
.me
.REG
[1] = once_value_2
;
192 fra
.me
.REG
[1] = fra
.me
.REG
[1];
193 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
194 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
195 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
196 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
197 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
199 fra
.me
.REG
[1] = BOX_NativeString(".unreachable_methods_from_init.log");
201 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
202 once_value_3
= fra
.me
.REG
[1];
203 register_static_object(&once_value_3
);
204 } else fra
.me
.REG
[1] = once_value_3
;
205 fra
.me
.REG
[1] = fra
.me
.REG
[1];
206 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
207 fra
.me
.REG
[2] = CALL_string___Object___to_s(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
208 fra
.me
.REG
[2] = NEW_OFStream_file___OFStream___open(fra
.me
.REG
[2]);
209 CALL_program___Program___with_each_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init_4
));
210 /* ./analysis//reachable_from_init_method_analysis.nit:49 */
211 CALL_stream___IOS___close(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
212 stack_frame_head
= fra
.me
.prev
;
215 void OC_reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init_4(struct stack_frame_t
*closctx
, val_t p0
){
216 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
220 static val_t once_value_5
; /* Once value */
221 static val_t once_value_6
; /* Once value */
222 /* ./analysis//reachable_from_init_method_analysis.nit:44 */
223 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
224 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
226 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init
;
227 fra
.me
.has_broke
= 0;
229 fra
.me
.REG
[0] = NIT_NULL
;
230 fra
.me
.REG
[1] = NIT_NULL
;
231 fra
.me
.REG
[2] = NIT_NULL
;
233 /* ./analysis//reachable_from_init_method_analysis.nit:45 */
234 fra
.me
.REG
[1] = CALL_reachable_from_init_method_analysis___Program___rfima(closctx
->REG
[0])(closctx
->REG
[0]);
235 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
236 if (UNTAG_Bool(REGB0
)) {
237 nit_abort("Reciever is null", NULL
, LOCATE_reachable_from_init_method_analysis
, 45);
239 REGB0
= CALL_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_method_reachable_from_init(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
240 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
241 if (UNTAG_Bool(REGB0
)) {
242 fra
.me
.REG
[1] = CALL_reachable_method_analysis___Program___rma(closctx
->REG
[0])(closctx
->REG
[0]);
243 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
244 if (UNTAG_Bool(REGB0
)) {
245 nit_abort("Reciever is null", NULL
, LOCATE_reachable_from_init_method_analysis
, 45);
247 REGB0
= CALL_reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
249 REGB1
= TAG_Bool(false);
252 if (UNTAG_Bool(REGB0
)) {
253 /* ./analysis//reachable_from_init_method_analysis.nit:46 */
255 fra
.me
.REG
[1] = NEW_Array_array___Array___with_capacity(REGB0
);
257 fra
.me
.REG
[2] = BOX_NativeString("");
259 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
260 once_value_5
= fra
.me
.REG
[2];
261 register_static_object(&once_value_5
);
262 } else fra
.me
.REG
[2] = once_value_5
;
263 fra
.me
.REG
[2] = fra
.me
.REG
[2];
264 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
265 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
266 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
268 fra
.me
.REG
[0] = BOX_NativeString("\n");
270 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
271 once_value_6
= fra
.me
.REG
[0];
272 register_static_object(&once_value_6
);
273 } else fra
.me
.REG
[0] = once_value_6
;
274 fra
.me
.REG
[0] = fra
.me
.REG
[0];
275 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
276 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
277 CALL_stream___OStream___write(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[1]);
279 stack_frame_head
= fra
.me
.prev
;
282 val_t
reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(val_t p0
, val_t p1
){
283 struct {struct stack_frame_t me
;} fra
;
285 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
286 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
288 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init
;
289 fra
.me
.has_broke
= 0;
291 /* ./analysis//reachable_from_init_method_analysis.nit:57 */
292 nit_abort("Deferred method called", NULL
, LOCATE_reachable_from_init_method_analysis
, 57);
293 stack_frame_head
= fra
.me
.prev
;
296 val_t
reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_method_reachable_from_init(val_t p0
, val_t p1
){
297 struct {struct stack_frame_t me
;} fra
;
299 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
300 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
302 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_method_reachable_from_init
;
303 fra
.me
.has_broke
= 0;
305 /* ./analysis//reachable_from_init_method_analysis.nit:58 */
306 nit_abort("Deferred method called", NULL
, LOCATE_reachable_from_init_method_analysis
, 58);
307 stack_frame_head
= fra
.me
.prev
;
310 void reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(val_t p0
, int* init_table
){
311 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ReachableFromInitMethodAnalysis
].i
;
312 struct {struct stack_frame_t me
;} fra
;
314 if (init_table
[itpos0
]) return;
315 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
316 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
318 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init
;
319 fra
.me
.has_broke
= 0;
321 stack_frame_head
= fra
.me
.prev
;
322 init_table
[itpos0
] = 1;
325 val_t
reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(val_t p0
, val_t p1
){
326 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
329 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
330 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
332 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init
;
333 fra
.me
.has_broke
= 0;
335 fra
.me
.REG
[0] = NIT_NULL
;
336 fra
.me
.REG
[1] = NIT_NULL
;
339 /* ./analysis//reachable_from_init_method_analysis.nit:65 */
340 REGB0
= TAG_Bool(true);
343 stack_frame_head
= fra
.me
.prev
;
346 val_t
reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_method_reachable_from_init(val_t p0
, val_t p1
){
347 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
350 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
351 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
353 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_method_reachable_from_init
;
354 fra
.me
.has_broke
= 0;
356 fra
.me
.REG
[0] = NIT_NULL
;
357 fra
.me
.REG
[1] = NIT_NULL
;
360 /* ./analysis//reachable_from_init_method_analysis.nit:66 */
361 REGB0
= TAG_Bool(true);
364 stack_frame_head
= fra
.me
.prev
;
367 void reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(val_t p0
, int* init_table
){
368 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_DefaultReachableFromInitMethodAnalysis
].i
;
369 struct {struct stack_frame_t me
;} fra
;
371 if (init_table
[itpos1
]) return;
372 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
373 fra
.me
.file
= LOCATE_reachable_from_init_method_analysis
;
375 fra
.me
.meth
= LOCATE_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init
;
376 fra
.me
.has_broke
= 0;
378 fra
.me
.REG
[0] = NIT_NULL
;
380 /* ./analysis//reachable_from_init_method_analysis.nit:68 */
381 CALL_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
382 stack_frame_head
= fra
.me
.prev
;
383 init_table
[itpos1
] = 1;