1 /* This C file is generated by NIT to compile module reachable_method_analysis. */
2 #include "reachable_method_analysis._sep.h"
3 val_t
reachable_method_analysis___Program___rma(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_method_analysis
;
9 fra
.me
.meth
= LOCATE_reachable_method_analysis___Program___rma
;
12 fra
.me
.REG
[0] = NIT_NULL
;
14 /* ./analysis//reachable_method_analysis.nit:24 */
15 fra
.me
.REG
[0] = ATTR_reachable_method_analysis___Program____rma(fra
.me
.REG
[0]);
16 stack_frame_head
= fra
.me
.prev
;
19 void reachable_method_analysis___Program___rma__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_method_analysis
;
25 fra
.me
.meth
= LOCATE_reachable_method_analysis___Program___rma__eq
;
28 fra
.me
.REG
[0] = NIT_NULL
;
29 fra
.me
.REG
[1] = NIT_NULL
;
32 /* ./analysis//reachable_method_analysis.nit:24 */
33 ATTR_reachable_method_analysis___Program____rma(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
34 stack_frame_head
= fra
.me
.prev
;
37 void reachable_method_analysis___Program___dump_reachable_methods(val_t p0
, val_t p1
, val_t p2
){
38 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} 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 static val_t once_value_4
; /* Once value */
45 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
46 fra
.me
.file
= LOCATE_reachable_method_analysis
;
48 fra
.me
.meth
= LOCATE_reachable_method_analysis___Program___dump_reachable_methods
;
51 fra
.me
.REG
[0] = NIT_NULL
;
52 fra
.me
.REG
[1] = NIT_NULL
;
53 fra
.me
.REG
[2] = NIT_NULL
;
54 fra
.me
.REG
[3] = NIT_NULL
;
55 fra
.me
.REG
[4] = NIT_NULL
;
59 /* ./analysis//reachable_method_analysis.nit:29 */
61 fra
.me
.REG
[3] = NEW_Array_array___Array___with_capacity(REGB0
);
63 fra
.me
.REG
[4] = BOX_NativeString("");
65 fra
.me
.REG
[4] = NEW_String_string___String___with_native(fra
.me
.REG
[4], REGB0
);
66 once_value_1
= fra
.me
.REG
[4];
67 register_static_object(&once_value_1
);
68 } else fra
.me
.REG
[4] = once_value_1
;
69 fra
.me
.REG
[4] = fra
.me
.REG
[4];
70 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
71 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
73 fra
.me
.REG
[1] = BOX_NativeString("/");
75 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
76 once_value_2
= fra
.me
.REG
[1];
77 register_static_object(&once_value_2
);
78 } else fra
.me
.REG
[1] = once_value_2
;
79 fra
.me
.REG
[1] = fra
.me
.REG
[1];
80 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
81 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
82 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
83 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
84 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
86 fra
.me
.REG
[1] = BOX_NativeString(".reachable_methods.");
88 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
89 once_value_3
= fra
.me
.REG
[1];
90 register_static_object(&once_value_3
);
91 } else fra
.me
.REG
[1] = once_value_3
;
92 fra
.me
.REG
[1] = fra
.me
.REG
[1];
93 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
94 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
96 fra
.me
.REG
[2] = BOX_NativeString(".log");
98 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
99 once_value_4
= fra
.me
.REG
[2];
100 register_static_object(&once_value_4
);
101 } else fra
.me
.REG
[2] = once_value_4
;
102 fra
.me
.REG
[2] = fra
.me
.REG
[2];
103 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
104 fra
.me
.REG
[3] = CALL_string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
105 fra
.me
.REG
[3] = NEW_OFStream_file___OFStream___open(fra
.me
.REG
[3]);
106 CALL_program___Program___with_each_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_reachable_method_analysis___Program___dump_reachable_methods_5
));
107 /* ./analysis//reachable_method_analysis.nit:35 */
108 CALL_stream___IOS___close(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
109 stack_frame_head
= fra
.me
.prev
;
112 void OC_reachable_method_analysis___Program___dump_reachable_methods_5(struct stack_frame_t
*closctx
, val_t p0
){
113 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
116 static val_t once_value_6
; /* Once value */
117 static val_t once_value_7
; /* Once value */
118 /* ./analysis//reachable_method_analysis.nit:30 */
119 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
120 fra
.me
.file
= LOCATE_reachable_method_analysis
;
122 fra
.me
.meth
= LOCATE_reachable_method_analysis___Program___dump_reachable_methods
;
123 fra
.me
.has_broke
= 0;
125 fra
.me
.REG
[0] = NIT_NULL
;
126 fra
.me
.REG
[1] = NIT_NULL
;
127 fra
.me
.REG
[2] = NIT_NULL
;
129 /* ./analysis//reachable_method_analysis.nit:31 */
130 fra
.me
.REG
[1] = CALL_reachable_method_analysis___Program___rma(closctx
->REG
[0])(closctx
->REG
[0]);
131 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
132 if (UNTAG_Bool(REGB0
)) {
133 nit_abort("Reciever is null", NULL
, LOCATE_reachable_method_analysis
, 31);
135 REGB0
= CALL_reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
136 if (UNTAG_Bool(REGB0
)) {
137 /* ./analysis//reachable_method_analysis.nit:32 */
139 fra
.me
.REG
[1] = NEW_Array_array___Array___with_capacity(REGB0
);
141 fra
.me
.REG
[2] = BOX_NativeString("");
143 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
144 once_value_6
= fra
.me
.REG
[2];
145 register_static_object(&once_value_6
);
146 } else fra
.me
.REG
[2] = once_value_6
;
147 fra
.me
.REG
[2] = fra
.me
.REG
[2];
148 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
149 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
150 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
152 fra
.me
.REG
[0] = BOX_NativeString("\n");
154 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
155 once_value_7
= fra
.me
.REG
[0];
156 register_static_object(&once_value_7
);
157 } else fra
.me
.REG
[0] = once_value_7
;
158 fra
.me
.REG
[0] = fra
.me
.REG
[0];
159 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
160 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
161 CALL_stream___OStream___write(closctx
->REG
[3])(closctx
->REG
[3], fra
.me
.REG
[1]);
163 stack_frame_head
= fra
.me
.prev
;
166 void reachable_method_analysis___Program___dump_unreachable_methods(val_t p0
, val_t p1
, val_t p2
){
167 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
170 static val_t once_value_1
; /* Once value */
171 static val_t once_value_2
; /* Once value */
172 static val_t once_value_3
; /* Once value */
173 static val_t once_value_4
; /* Once value */
174 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
175 fra
.me
.file
= LOCATE_reachable_method_analysis
;
177 fra
.me
.meth
= LOCATE_reachable_method_analysis___Program___dump_unreachable_methods
;
178 fra
.me
.has_broke
= 0;
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
;
188 /* ./analysis//reachable_method_analysis.nit:40 */
190 fra
.me
.REG
[3] = NEW_Array_array___Array___with_capacity(REGB0
);
192 fra
.me
.REG
[4] = BOX_NativeString("");
194 fra
.me
.REG
[4] = NEW_String_string___String___with_native(fra
.me
.REG
[4], REGB0
);
195 once_value_1
= fra
.me
.REG
[4];
196 register_static_object(&once_value_1
);
197 } else fra
.me
.REG
[4] = once_value_1
;
198 fra
.me
.REG
[4] = fra
.me
.REG
[4];
199 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
200 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
202 fra
.me
.REG
[1] = BOX_NativeString("/");
204 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
205 once_value_2
= fra
.me
.REG
[1];
206 register_static_object(&once_value_2
);
207 } else fra
.me
.REG
[1] = once_value_2
;
208 fra
.me
.REG
[1] = fra
.me
.REG
[1];
209 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
210 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
211 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
212 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
213 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
215 fra
.me
.REG
[1] = BOX_NativeString(".unreachable_methods.");
217 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
218 once_value_3
= fra
.me
.REG
[1];
219 register_static_object(&once_value_3
);
220 } else fra
.me
.REG
[1] = once_value_3
;
221 fra
.me
.REG
[1] = fra
.me
.REG
[1];
222 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
223 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
225 fra
.me
.REG
[2] = BOX_NativeString(".log");
227 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
228 once_value_4
= fra
.me
.REG
[2];
229 register_static_object(&once_value_4
);
230 } else fra
.me
.REG
[2] = once_value_4
;
231 fra
.me
.REG
[2] = fra
.me
.REG
[2];
232 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
233 fra
.me
.REG
[3] = CALL_string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
234 fra
.me
.REG
[3] = NEW_OFStream_file___OFStream___open(fra
.me
.REG
[3]);
235 CALL_program___Program___with_each_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_reachable_method_analysis___Program___dump_unreachable_methods_5
));
236 /* ./analysis//reachable_method_analysis.nit:46 */
237 CALL_stream___IOS___close(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
238 stack_frame_head
= fra
.me
.prev
;
241 void OC_reachable_method_analysis___Program___dump_unreachable_methods_5(struct stack_frame_t
*closctx
, val_t p0
){
242 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
245 static val_t once_value_6
; /* Once value */
246 static val_t once_value_7
; /* Once value */
247 /* ./analysis//reachable_method_analysis.nit:41 */
248 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
249 fra
.me
.file
= LOCATE_reachable_method_analysis
;
251 fra
.me
.meth
= LOCATE_reachable_method_analysis___Program___dump_unreachable_methods
;
252 fra
.me
.has_broke
= 0;
254 fra
.me
.REG
[0] = NIT_NULL
;
255 fra
.me
.REG
[1] = NIT_NULL
;
256 fra
.me
.REG
[2] = NIT_NULL
;
258 /* ./analysis//reachable_method_analysis.nit:42 */
259 fra
.me
.REG
[1] = CALL_reachable_method_analysis___Program___rma(closctx
->REG
[0])(closctx
->REG
[0]);
260 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
261 if (UNTAG_Bool(REGB0
)) {
262 nit_abort("Reciever is null", NULL
, LOCATE_reachable_method_analysis
, 42);
264 REGB0
= CALL_reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
265 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
266 if (UNTAG_Bool(REGB0
)) {
267 /* ./analysis//reachable_method_analysis.nit:43 */
269 fra
.me
.REG
[1] = NEW_Array_array___Array___with_capacity(REGB0
);
271 fra
.me
.REG
[2] = BOX_NativeString("");
273 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
274 once_value_6
= fra
.me
.REG
[2];
275 register_static_object(&once_value_6
);
276 } else fra
.me
.REG
[2] = once_value_6
;
277 fra
.me
.REG
[2] = fra
.me
.REG
[2];
278 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
279 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
280 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
282 fra
.me
.REG
[0] = BOX_NativeString("\n");
284 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
285 once_value_7
= fra
.me
.REG
[0];
286 register_static_object(&once_value_7
);
287 } else fra
.me
.REG
[0] = once_value_7
;
288 fra
.me
.REG
[0] = fra
.me
.REG
[0];
289 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
290 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
291 CALL_stream___OStream___write(closctx
->REG
[3])(closctx
->REG
[3], fra
.me
.REG
[1]);
293 stack_frame_head
= fra
.me
.prev
;
296 val_t
reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(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_method_analysis
;
302 fra
.me
.meth
= LOCATE_reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable
;
303 fra
.me
.has_broke
= 0;
305 /* ./analysis//reachable_method_analysis.nit:54 */
306 nit_abort("Deferred method called", NULL
, LOCATE_reachable_method_analysis
, 54);
307 stack_frame_head
= fra
.me
.prev
;
310 val_t
reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(val_t p0
, val_t p1
){
311 struct {struct stack_frame_t me
;} fra
;
313 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
314 fra
.me
.file
= LOCATE_reachable_method_analysis
;
316 fra
.me
.meth
= LOCATE_reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable
;
317 fra
.me
.has_broke
= 0;
319 /* ./analysis//reachable_method_analysis.nit:55 */
320 nit_abort("Deferred method called", NULL
, LOCATE_reachable_method_analysis
, 55);
321 stack_frame_head
= fra
.me
.prev
;
324 void reachable_method_analysis___ReachableMethodAnalysis___init(val_t p0
, int* init_table
){
325 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ReachableMethodAnalysis
].i
;
326 struct {struct stack_frame_t me
;} fra
;
328 if (init_table
[itpos0
]) return;
329 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
330 fra
.me
.file
= LOCATE_reachable_method_analysis
;
332 fra
.me
.meth
= LOCATE_reachable_method_analysis___ReachableMethodAnalysis___init
;
333 fra
.me
.has_broke
= 0;
335 stack_frame_head
= fra
.me
.prev
;
336 init_table
[itpos0
] = 1;
339 val_t
reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable(val_t p0
, val_t p1
){
340 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
343 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
344 fra
.me
.file
= LOCATE_reachable_method_analysis
;
346 fra
.me
.meth
= LOCATE_reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable
;
347 fra
.me
.has_broke
= 0;
349 fra
.me
.REG
[0] = NIT_NULL
;
350 fra
.me
.REG
[1] = NIT_NULL
;
353 /* ./analysis//reachable_method_analysis.nit:61 */
354 REGB0
= TAG_Bool(true);
357 stack_frame_head
= fra
.me
.prev
;
360 val_t
reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable(val_t p0
, val_t p1
){
361 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
364 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
365 fra
.me
.file
= LOCATE_reachable_method_analysis
;
367 fra
.me
.meth
= LOCATE_reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable
;
368 fra
.me
.has_broke
= 0;
370 fra
.me
.REG
[0] = NIT_NULL
;
371 fra
.me
.REG
[1] = NIT_NULL
;
374 /* ./analysis//reachable_method_analysis.nit:62 */
375 REGB0
= TAG_Bool(true);
378 stack_frame_head
= fra
.me
.prev
;
381 void reachable_method_analysis___DefaultReachableMethodAnalysis___init(val_t p0
, int* init_table
){
382 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_DefaultReachableMethodAnalysis
].i
;
383 struct {struct stack_frame_t me
;} fra
;
385 if (init_table
[itpos1
]) return;
386 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
387 fra
.me
.file
= LOCATE_reachable_method_analysis
;
389 fra
.me
.meth
= LOCATE_reachable_method_analysis___DefaultReachableMethodAnalysis___init
;
390 fra
.me
.has_broke
= 0;
392 fra
.me
.REG
[0] = NIT_NULL
;
394 /* ./analysis//reachable_method_analysis.nit:64 */
395 CALL_reachable_method_analysis___ReachableMethodAnalysis___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
396 stack_frame_head
= fra
.me
.prev
;
397 init_table
[itpos1
] = 1;