1 /* This C file is generated by NIT to compile module reachable_as_init. */
2 #include "reachable_as_init._sep.h"
3 val_t
reachable_as_init___Program___rai(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_as_init
;
9 fra
.me
.meth
= LOCATE_reachable_as_init___Program___rai
;
12 fra
.me
.REG
[0] = NIT_NULL
;
14 /* ./analysis//reachable_as_init.nit:24 */
15 fra
.me
.REG
[0] = ATTR_reachable_as_init___Program____rai(fra
.me
.REG
[0]);
16 stack_frame_head
= fra
.me
.prev
;
19 void reachable_as_init___Program___rai__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_as_init
;
25 fra
.me
.meth
= LOCATE_reachable_as_init___Program___rai__eq
;
28 fra
.me
.REG
[0] = NIT_NULL
;
29 fra
.me
.REG
[1] = NIT_NULL
;
32 /* ./analysis//reachable_as_init.nit:24 */
33 ATTR_reachable_as_init___Program____rai(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
34 stack_frame_head
= fra
.me
.prev
;
37 void reachable_as_init___Program___dump_reachable_as_init_methods(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_as_init
;
47 fra
.me
.meth
= LOCATE_reachable_as_init___Program___dump_reachable_as_init_methods
;
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_as_init.nit:29 */
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_as_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_live_local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_reachable_as_init___Program___dump_reachable_as_init_methods_4
));
94 /* ./analysis//reachable_as_init.nit:40 */
95 CALL_stream___IOS___close(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
96 stack_frame_head
= fra
.me
.prev
;
99 void OC_reachable_as_init___Program___dump_reachable_as_init_methods_4(struct stack_frame_t
*closctx
, val_t p0
){
100 struct {struct stack_frame_t me
;} fra
;
102 /* ./analysis//reachable_as_init.nit:30 */
103 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
104 fra
.me
.file
= LOCATE_reachable_as_init
;
106 fra
.me
.meth
= LOCATE_reachable_as_init___Program___dump_reachable_as_init_methods
;
107 fra
.me
.has_broke
= 0;
109 fra
.me
.REG
[0] = NIT_NULL
;
111 closctx
->REG
[1] = fra
.me
.REG
[0];
112 /* ./analysis//reachable_as_init.nit:31 */
113 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[1])(closctx
->REG
[1]);
114 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_reachable_as_init___Program___dump_reachable_as_init_methods_5
));
115 stack_frame_head
= fra
.me
.prev
;
118 void OC_reachable_as_init___Program___dump_reachable_as_init_methods_5(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
119 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
123 static val_t once_value_7
; /* Once value */
124 static val_t once_value_8
; /* Once value */
125 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
126 fra
.me
.file
= LOCATE_reachable_as_init
;
128 fra
.me
.meth
= LOCATE_reachable_as_init___Program___dump_reachable_as_init_methods
;
129 fra
.me
.has_broke
= 0;
131 fra
.me
.REG
[0] = NIT_NULL
;
132 fra
.me
.REG
[1] = NIT_NULL
;
133 fra
.me
.REG
[2] = NIT_NULL
;
134 fra
.me
.closure_ctx
= closctx_param
;
135 fra
.me
.closure_funs
= CREG
;
138 /* ./analysis//reachable_as_init.nit:32 */
139 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
140 /* ./analysis//reachable_as_init.nit:33 */
141 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
142 REGB0
= CALL_abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
->REG
[1]);
143 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
144 if (UNTAG_Bool(REGB0
)) {
147 /* ./analysis//reachable_as_init.nit:34 */
148 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
149 if (UNTAG_Bool(REGB0
)) {
151 nit_abort("Assert failed", NULL
, LOCATE_reachable_as_init
, 34);
153 /* ./analysis//reachable_as_init.nit:35 */
154 fra
.me
.REG
[1] = CALL_reachable_as_init___Program___rai(closctx
->REG
[0])(closctx
->REG
[0]);
155 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
156 if (UNTAG_Bool(REGB0
)) {
157 nit_abort("Reciever is null", NULL
, LOCATE_reachable_as_init
, 35);
159 REGB0
= CALL_reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], closctx
->REG
[1]);
160 if (UNTAG_Bool(REGB0
)) {
161 /* ./analysis//reachable_as_init.nit:36 */
163 fra
.me
.REG
[1] = NEW_Array_array___Array___with_capacity(REGB0
);
165 fra
.me
.REG
[2] = BOX_NativeString("");
167 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
168 once_value_7
= fra
.me
.REG
[2];
169 register_static_object(&once_value_7
);
170 } else fra
.me
.REG
[2] = once_value_7
;
171 fra
.me
.REG
[2] = fra
.me
.REG
[2];
172 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
173 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
174 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
176 fra
.me
.REG
[0] = BOX_NativeString("\n");
178 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
179 once_value_8
= fra
.me
.REG
[0];
180 register_static_object(&once_value_8
);
181 } else fra
.me
.REG
[0] = once_value_8
;
182 fra
.me
.REG
[0] = fra
.me
.REG
[0];
183 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
184 fra
.me
.REG
[1] = CALL_string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
185 CALL_stream___OStream___write(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[1]);
188 stack_frame_head
= fra
.me
.prev
;
191 val_t
reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init(val_t p0
, val_t p1
, val_t p2
){
192 struct {struct stack_frame_t me
;} fra
;
194 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
195 fra
.me
.file
= LOCATE_reachable_as_init
;
197 fra
.me
.meth
= LOCATE_reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init
;
198 fra
.me
.has_broke
= 0;
200 /* ./analysis//reachable_as_init.nit:49 */
201 nit_abort("Deferred method called", NULL
, LOCATE_reachable_as_init
, 49);
202 stack_frame_head
= fra
.me
.prev
;
205 void reachable_as_init___ReachableAsInitAnalysis___init(val_t p0
, int* init_table
){
206 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ReachableAsInitAnalysis
].i
;
207 struct {struct stack_frame_t me
;} fra
;
209 if (init_table
[itpos0
]) return;
210 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
211 fra
.me
.file
= LOCATE_reachable_as_init
;
213 fra
.me
.meth
= LOCATE_reachable_as_init___ReachableAsInitAnalysis___init
;
214 fra
.me
.has_broke
= 0;
216 stack_frame_head
= fra
.me
.prev
;
217 init_table
[itpos0
] = 1;
220 val_t
reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init(val_t p0
, val_t p1
, val_t p2
){
221 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
225 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
226 fra
.me
.file
= LOCATE_reachable_as_init
;
228 fra
.me
.meth
= LOCATE_reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init
;
229 fra
.me
.has_broke
= 0;
231 fra
.me
.REG
[0] = NIT_NULL
;
232 fra
.me
.REG
[1] = NIT_NULL
;
233 fra
.me
.REG
[2] = NIT_NULL
;
237 /* ./analysis//reachable_as_init.nit:56 */
238 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
239 REGB0
= CALL_abstractmetamodel___MMGlobalProperty___is_init(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
240 if (UNTAG_Bool(REGB0
)) {
241 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
242 REGB0
= CALL_abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
244 REGB1
= TAG_Bool(false);
247 if (UNTAG_Bool(REGB0
)) {
248 REGB0
= TAG_Bool(true);
251 /* ./analysis//reachable_as_init.nit:57 */
252 REGB1
= TAG_Bool(false);
256 stack_frame_head
= fra
.me
.prev
;
259 void reachable_as_init___DefaultReachableAsInitAnalysis___init(val_t p0
, int* init_table
){
260 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_DefaultReachableAsInitAnalysis
].i
;
261 struct {struct stack_frame_t me
;} fra
;
263 if (init_table
[itpos1
]) return;
264 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
265 fra
.me
.file
= LOCATE_reachable_as_init
;
267 fra
.me
.meth
= LOCATE_reachable_as_init___DefaultReachableAsInitAnalysis___init
;
268 fra
.me
.has_broke
= 0;
270 fra
.me
.REG
[0] = NIT_NULL
;
272 /* ./analysis//reachable_as_init.nit:60 */
273 CALL_reachable_as_init___ReachableAsInitAnalysis___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
274 stack_frame_head
= fra
.me
.prev
;
275 init_table
[itpos1
] = 1;