1 /* This C file is generated by NIT to compile module global___reachable_method_analysis. */
2 #include "global___reachable_method_analysis._sep.h"
3 val_t
global___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_global___reachable_method_analysis
;
9 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___Program___rma
;
12 fra
.me
.nitni_local_ref_head
= NULL
;
13 fra
.me
.REG
[0] = NIT_NULL
;
15 /* global/reachable_method_analysis.nit:24 */
16 fra
.me
.REG
[0] = ATTR_global___reachable_method_analysis___Program____rma(fra
.me
.REG
[0]);
17 stack_frame_head
= fra
.me
.prev
;
20 void global___reachable_method_analysis___Program___rma__eq(val_t p0
, val_t p1
){
21 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
23 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
24 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
26 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___Program___rma__eq
;
29 fra
.me
.nitni_local_ref_head
= NULL
;
30 fra
.me
.REG
[0] = NIT_NULL
;
31 fra
.me
.REG
[1] = NIT_NULL
;
34 /* global/reachable_method_analysis.nit:24 */
35 ATTR_global___reachable_method_analysis___Program____rma(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
36 stack_frame_head
= fra
.me
.prev
;
39 void global___reachable_method_analysis___Program___dump_reachable_methods(val_t p0
, val_t p1
, val_t p2
){
40 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
43 static val_t once_value_1
; /* Once value */
44 static val_t once_value_2
; /* Once value */
45 static val_t once_value_3
; /* Once value */
46 static val_t once_value_4
; /* Once value */
47 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
48 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
50 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___Program___dump_reachable_methods
;
53 fra
.me
.nitni_local_ref_head
= NULL
;
54 fra
.me
.REG
[0] = NIT_NULL
;
55 fra
.me
.REG
[1] = NIT_NULL
;
56 fra
.me
.REG
[2] = NIT_NULL
;
57 fra
.me
.REG
[3] = NIT_NULL
;
58 fra
.me
.REG
[4] = NIT_NULL
;
62 /* global/reachable_method_analysis.nit:29 */
64 fra
.me
.REG
[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
66 fra
.me
.REG
[4] = BOX_NativeString("");
68 fra
.me
.REG
[4] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[4], REGB0
);
69 once_value_1
= fra
.me
.REG
[4];
70 register_static_object(&once_value_1
);
71 } else fra
.me
.REG
[4] = once_value_1
;
72 fra
.me
.REG
[4] = fra
.me
.REG
[4];
73 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
74 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
76 fra
.me
.REG
[1] = BOX_NativeString("/");
78 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
79 once_value_2
= fra
.me
.REG
[1];
80 register_static_object(&once_value_2
);
81 } else fra
.me
.REG
[1] = once_value_2
;
82 fra
.me
.REG
[1] = fra
.me
.REG
[1];
83 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
84 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
85 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
86 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
87 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
89 fra
.me
.REG
[1] = BOX_NativeString(".reachable_methods.");
91 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
92 once_value_3
= fra
.me
.REG
[1];
93 register_static_object(&once_value_3
);
94 } else fra
.me
.REG
[1] = once_value_3
;
95 fra
.me
.REG
[1] = fra
.me
.REG
[1];
96 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
97 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
99 fra
.me
.REG
[2] = BOX_NativeString(".log");
101 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
102 once_value_4
= fra
.me
.REG
[2];
103 register_static_object(&once_value_4
);
104 } else fra
.me
.REG
[2] = once_value_4
;
105 fra
.me
.REG
[2] = fra
.me
.REG
[2];
106 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
107 fra
.me
.REG
[3] = CALL_standard___string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
108 fra
.me
.REG
[3] = NEW_OFStream_standard___file___OFStream___open(fra
.me
.REG
[3]);
109 CALL_program___Program___with_each_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_global___reachable_method_analysis___Program___dump_reachable_methods_5
));
110 /* global/reachable_method_analysis.nit:35 */
111 CALL_standard___stream___IOS___close(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
112 stack_frame_head
= fra
.me
.prev
;
115 void OC_global___reachable_method_analysis___Program___dump_reachable_methods_5(struct stack_frame_t
*closctx
, val_t p0
){
116 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
119 static val_t once_value_6
; /* Once value */
120 static val_t once_value_7
; /* Once value */
121 /* global/reachable_method_analysis.nit:30 */
122 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
123 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
125 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___Program___dump_reachable_methods
;
126 fra
.me
.has_broke
= 0;
128 fra
.me
.nitni_local_ref_head
= NULL
;
129 fra
.me
.REG
[0] = NIT_NULL
;
130 fra
.me
.REG
[1] = NIT_NULL
;
131 fra
.me
.REG
[2] = NIT_NULL
;
133 /* global/reachable_method_analysis.nit:31 */
134 fra
.me
.REG
[1] = CALL_global___reachable_method_analysis___Program___rma(closctx
->REG
[0])(closctx
->REG
[0]);
135 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
136 if (UNTAG_Bool(REGB0
)) {
137 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_method_analysis
, 31);
139 REGB0
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
140 if (UNTAG_Bool(REGB0
)) {
141 /* global/reachable_method_analysis.nit:32 */
143 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
145 fra
.me
.REG
[2] = BOX_NativeString("");
147 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
148 once_value_6
= fra
.me
.REG
[2];
149 register_static_object(&once_value_6
);
150 } else fra
.me
.REG
[2] = once_value_6
;
151 fra
.me
.REG
[2] = fra
.me
.REG
[2];
152 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
153 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
154 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
156 fra
.me
.REG
[0] = BOX_NativeString("\n");
158 fra
.me
.REG
[0] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[0], REGB0
);
159 once_value_7
= fra
.me
.REG
[0];
160 register_static_object(&once_value_7
);
161 } else fra
.me
.REG
[0] = once_value_7
;
162 fra
.me
.REG
[0] = fra
.me
.REG
[0];
163 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
164 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
165 CALL_standard___stream___OStream___write(closctx
->REG
[3])(closctx
->REG
[3], fra
.me
.REG
[1]);
167 stack_frame_head
= fra
.me
.prev
;
170 void global___reachable_method_analysis___Program___dump_unreachable_methods(val_t p0
, val_t p1
, val_t p2
){
171 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
174 static val_t once_value_1
; /* Once value */
175 static val_t once_value_2
; /* Once value */
176 static val_t once_value_3
; /* Once value */
177 static val_t once_value_4
; /* Once value */
178 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
179 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
181 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___Program___dump_unreachable_methods
;
182 fra
.me
.has_broke
= 0;
184 fra
.me
.nitni_local_ref_head
= NULL
;
185 fra
.me
.REG
[0] = NIT_NULL
;
186 fra
.me
.REG
[1] = NIT_NULL
;
187 fra
.me
.REG
[2] = NIT_NULL
;
188 fra
.me
.REG
[3] = NIT_NULL
;
189 fra
.me
.REG
[4] = NIT_NULL
;
193 /* global/reachable_method_analysis.nit:40 */
195 fra
.me
.REG
[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
197 fra
.me
.REG
[4] = BOX_NativeString("");
199 fra
.me
.REG
[4] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[4], REGB0
);
200 once_value_1
= fra
.me
.REG
[4];
201 register_static_object(&once_value_1
);
202 } else fra
.me
.REG
[4] = once_value_1
;
203 fra
.me
.REG
[4] = fra
.me
.REG
[4];
204 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
205 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
207 fra
.me
.REG
[1] = BOX_NativeString("/");
209 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
210 once_value_2
= fra
.me
.REG
[1];
211 register_static_object(&once_value_2
);
212 } else fra
.me
.REG
[1] = once_value_2
;
213 fra
.me
.REG
[1] = fra
.me
.REG
[1];
214 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
215 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
216 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
217 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
218 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
220 fra
.me
.REG
[1] = BOX_NativeString(".unreachable_methods.");
222 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
223 once_value_3
= fra
.me
.REG
[1];
224 register_static_object(&once_value_3
);
225 } else fra
.me
.REG
[1] = once_value_3
;
226 fra
.me
.REG
[1] = fra
.me
.REG
[1];
227 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
228 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
230 fra
.me
.REG
[2] = BOX_NativeString(".log");
232 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
233 once_value_4
= fra
.me
.REG
[2];
234 register_static_object(&once_value_4
);
235 } else fra
.me
.REG
[2] = once_value_4
;
236 fra
.me
.REG
[2] = fra
.me
.REG
[2];
237 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
238 fra
.me
.REG
[3] = CALL_standard___string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
239 fra
.me
.REG
[3] = NEW_OFStream_standard___file___OFStream___open(fra
.me
.REG
[3]);
240 CALL_program___Program___with_each_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_global___reachable_method_analysis___Program___dump_unreachable_methods_5
));
241 /* global/reachable_method_analysis.nit:46 */
242 CALL_standard___stream___IOS___close(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
243 stack_frame_head
= fra
.me
.prev
;
246 void OC_global___reachable_method_analysis___Program___dump_unreachable_methods_5(struct stack_frame_t
*closctx
, val_t p0
){
247 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
250 static val_t once_value_6
; /* Once value */
251 static val_t once_value_7
; /* Once value */
252 /* global/reachable_method_analysis.nit:41 */
253 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
254 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
256 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___Program___dump_unreachable_methods
;
257 fra
.me
.has_broke
= 0;
259 fra
.me
.nitni_local_ref_head
= NULL
;
260 fra
.me
.REG
[0] = NIT_NULL
;
261 fra
.me
.REG
[1] = NIT_NULL
;
262 fra
.me
.REG
[2] = NIT_NULL
;
264 /* global/reachable_method_analysis.nit:42 */
265 fra
.me
.REG
[1] = CALL_global___reachable_method_analysis___Program___rma(closctx
->REG
[0])(closctx
->REG
[0]);
266 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
267 if (UNTAG_Bool(REGB0
)) {
268 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_method_analysis
, 42);
270 REGB0
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
271 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
272 if (UNTAG_Bool(REGB0
)) {
273 /* global/reachable_method_analysis.nit:43 */
275 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
277 fra
.me
.REG
[2] = BOX_NativeString("");
279 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
280 once_value_6
= fra
.me
.REG
[2];
281 register_static_object(&once_value_6
);
282 } else fra
.me
.REG
[2] = once_value_6
;
283 fra
.me
.REG
[2] = fra
.me
.REG
[2];
284 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
285 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
286 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
288 fra
.me
.REG
[0] = BOX_NativeString("\n");
290 fra
.me
.REG
[0] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[0], REGB0
);
291 once_value_7
= fra
.me
.REG
[0];
292 register_static_object(&once_value_7
);
293 } else fra
.me
.REG
[0] = once_value_7
;
294 fra
.me
.REG
[0] = fra
.me
.REG
[0];
295 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
296 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
297 CALL_standard___stream___OStream___write(closctx
->REG
[3])(closctx
->REG
[3], fra
.me
.REG
[1]);
299 stack_frame_head
= fra
.me
.prev
;
302 val_t
global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(val_t p0
, val_t p1
){
303 struct {struct stack_frame_t me
;} fra
;
305 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
306 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
308 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable
;
309 fra
.me
.has_broke
= 0;
311 fra
.me
.nitni_local_ref_head
= NULL
;
312 /* global/reachable_method_analysis.nit:54 */
313 nit_abort("Deferred method called", NULL
, LOCATE_global___reachable_method_analysis
, 54);
314 stack_frame_head
= fra
.me
.prev
;
317 val_t
global___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(val_t p0
, val_t p1
){
318 struct {struct stack_frame_t me
;} fra
;
320 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
321 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
323 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable
;
324 fra
.me
.has_broke
= 0;
326 fra
.me
.nitni_local_ref_head
= NULL
;
327 /* global/reachable_method_analysis.nit:55 */
328 nit_abort("Deferred method called", NULL
, LOCATE_global___reachable_method_analysis
, 55);
329 stack_frame_head
= fra
.me
.prev
;
332 val_t
global___reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable(val_t p0
, val_t p1
){
333 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
336 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
337 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
339 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable
;
340 fra
.me
.has_broke
= 0;
342 fra
.me
.nitni_local_ref_head
= NULL
;
343 fra
.me
.REG
[0] = NIT_NULL
;
344 fra
.me
.REG
[1] = NIT_NULL
;
347 /* global/reachable_method_analysis.nit:61 */
348 REGB0
= TAG_Bool(true);
351 stack_frame_head
= fra
.me
.prev
;
354 val_t
global___reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable(val_t p0
, val_t p1
){
355 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
358 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
359 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
361 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable
;
362 fra
.me
.has_broke
= 0;
364 fra
.me
.nitni_local_ref_head
= NULL
;
365 fra
.me
.REG
[0] = NIT_NULL
;
366 fra
.me
.REG
[1] = NIT_NULL
;
369 /* global/reachable_method_analysis.nit:62 */
370 REGB0
= TAG_Bool(true);
373 stack_frame_head
= fra
.me
.prev
;
376 void global___reachable_method_analysis___DefaultReachableMethodAnalysis___init(val_t p0
, int* init_table
){
377 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___reachable_method_analysis___DefaultReachableMethodAnalysis
].i
;
378 struct {struct stack_frame_t me
;} fra
;
380 if (init_table
[itpos0
]) return;
381 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
382 fra
.me
.file
= LOCATE_global___reachable_method_analysis
;
384 fra
.me
.meth
= LOCATE_global___reachable_method_analysis___DefaultReachableMethodAnalysis___init
;
385 fra
.me
.has_broke
= 0;
387 fra
.me
.nitni_local_ref_head
= NULL
;
388 fra
.me
.REG
[0] = NIT_NULL
;
390 stack_frame_head
= fra
.me
.prev
;
391 init_table
[itpos0
] = 1;