1 /* This C file is generated by NIT to compile module global___reachable_as_init. */
2 #include "global___reachable_as_init._sep.h"
3 static const char LOCATE_global___reachable_as_init___Program___rai
[] = "reachable_as_init::Program::rai";
4 val_t
global___reachable_as_init___Program___rai(val_t p0
){
5 struct {struct stack_frame_t me
;} fra
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_global___reachable_as_init
;
10 fra
.me
.meth
= LOCATE_global___reachable_as_init___Program___rai
;
13 fra
.me
.nitni_local_ref_head
= NULL
;
14 fra
.me
.REG
[0] = NIT_NULL
;
16 /* global/reachable_as_init.nit:24 */
17 fra
.me
.REG
[0] = ATTR_global___reachable_as_init___Program____rai(fra
.me
.REG
[0]);
18 stack_frame_head
= fra
.me
.prev
;
21 static const char LOCATE_global___reachable_as_init___Program___rai__eq
[] = "reachable_as_init::Program::rai=";
22 void global___reachable_as_init___Program___rai__eq(val_t p0
, val_t p1
){
23 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
25 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
26 fra
.me
.file
= LOCATE_global___reachable_as_init
;
28 fra
.me
.meth
= LOCATE_global___reachable_as_init___Program___rai__eq
;
31 fra
.me
.nitni_local_ref_head
= NULL
;
32 fra
.me
.REG
[0] = NIT_NULL
;
33 fra
.me
.REG
[1] = NIT_NULL
;
36 /* global/reachable_as_init.nit:24 */
37 ATTR_global___reachable_as_init___Program____rai(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
38 stack_frame_head
= fra
.me
.prev
;
41 static const char LOCATE_global___reachable_as_init___Program___dump_reachable_as_init_methods
[] = "reachable_as_init::Program::dump_reachable_as_init_methods";
42 void global___reachable_as_init___Program___dump_reachable_as_init_methods(val_t p0
, val_t p1
){
43 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
46 static val_t once_value_1
; /* Once value */
47 static val_t once_value_2
; /* Once value */
48 static val_t once_value_3
; /* Once value */
49 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
50 fra
.me
.file
= LOCATE_global___reachable_as_init
;
52 fra
.me
.meth
= LOCATE_global___reachable_as_init___Program___dump_reachable_as_init_methods
;
55 fra
.me
.nitni_local_ref_head
= NULL
;
56 fra
.me
.REG
[0] = NIT_NULL
;
57 fra
.me
.REG
[1] = NIT_NULL
;
58 fra
.me
.REG
[2] = NIT_NULL
;
59 fra
.me
.REG
[3] = NIT_NULL
;
62 /* global/reachable_as_init.nit:29 */
64 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
66 fra
.me
.REG
[3] = BOX_NativeString("");
68 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
69 once_value_1
= fra
.me
.REG
[3];
70 register_static_object(&once_value_1
);
71 } else fra
.me
.REG
[3] = once_value_1
;
72 fra
.me
.REG
[3] = fra
.me
.REG
[3];
73 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
74 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], 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
[2])(fra
.me
.REG
[2], 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
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
89 fra
.me
.REG
[1] = BOX_NativeString(".reachable_methods_as_init.log");
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
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
97 fra
.me
.REG
[2] = CALL_standard___string___Object___to_s(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
98 fra
.me
.REG
[2] = NEW_OFStream_standard___file___OFStream___open(fra
.me
.REG
[2]);
99 CALL_program___Program___with_each_live_local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_global___reachable_as_init___Program___dump_reachable_as_init_methods_4
));
100 /* global/reachable_as_init.nit:40 */
101 CALL_standard___stream___IOS___close(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
102 stack_frame_head
= fra
.me
.prev
;
105 void OC_global___reachable_as_init___Program___dump_reachable_as_init_methods_4(struct stack_frame_t
*closctx
, val_t p0
){
106 struct {struct stack_frame_t me
;} fra
;
108 /* global/reachable_as_init.nit:30 */
109 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
110 fra
.me
.file
= LOCATE_global___reachable_as_init
;
112 fra
.me
.meth
= LOCATE_global___reachable_as_init___Program___dump_reachable_as_init_methods
;
113 fra
.me
.has_broke
= 0;
115 fra
.me
.nitni_local_ref_head
= NULL
;
116 fra
.me
.REG
[0] = NIT_NULL
;
118 closctx
->REG
[1] = fra
.me
.REG
[0];
119 /* global/reachable_as_init.nit:31 */
120 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[1])(closctx
->REG
[1]);
121 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_global___reachable_as_init___Program___dump_reachable_as_init_methods_5
));
122 stack_frame_head
= fra
.me
.prev
;
125 void OC_global___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
){
126 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
130 static val_t once_value_7
; /* Once value */
131 static val_t once_value_8
; /* Once value */
132 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
133 fra
.me
.file
= LOCATE_global___reachable_as_init
;
135 fra
.me
.meth
= LOCATE_global___reachable_as_init___Program___dump_reachable_as_init_methods
;
136 fra
.me
.has_broke
= 0;
138 fra
.me
.nitni_local_ref_head
= NULL
;
139 fra
.me
.REG
[0] = NIT_NULL
;
140 fra
.me
.REG
[1] = NIT_NULL
;
141 fra
.me
.REG
[2] = NIT_NULL
;
142 fra
.me
.closure_ctx
= closctx_param
;
143 fra
.me
.closure_funs
= CREG
;
146 /* global/reachable_as_init.nit:32 */
147 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
148 /* global/reachable_as_init.nit:33 */
149 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
150 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
->REG
[1]);
151 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
152 if (UNTAG_Bool(REGB0
)) {
155 /* global/reachable_as_init.nit:34 */
156 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
157 if (UNTAG_Bool(REGB0
)) {
159 nit_abort("Assert failed", NULL
, LOCATE_global___reachable_as_init
, 34);
161 /* global/reachable_as_init.nit:35 */
162 fra
.me
.REG
[1] = CALL_global___reachable_as_init___Program___rai(closctx
->REG
[0])(closctx
->REG
[0]);
163 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
164 if (UNTAG_Bool(REGB0
)) {
165 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_as_init
, 35);
167 REGB0
= CALL_global___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], closctx
->REG
[1]);
168 if (UNTAG_Bool(REGB0
)) {
169 /* global/reachable_as_init.nit:36 */
171 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
173 fra
.me
.REG
[2] = BOX_NativeString("");
175 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
176 once_value_7
= fra
.me
.REG
[2];
177 register_static_object(&once_value_7
);
178 } else fra
.me
.REG
[2] = once_value_7
;
179 fra
.me
.REG
[2] = fra
.me
.REG
[2];
180 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
181 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
182 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
184 fra
.me
.REG
[0] = BOX_NativeString("\n");
186 fra
.me
.REG
[0] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[0], REGB0
);
187 once_value_8
= fra
.me
.REG
[0];
188 register_static_object(&once_value_8
);
189 } else fra
.me
.REG
[0] = once_value_8
;
190 fra
.me
.REG
[0] = fra
.me
.REG
[0];
191 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
192 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
193 CALL_standard___stream___OStream___write(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[1]);
196 stack_frame_head
= fra
.me
.prev
;
199 static const char LOCATE_global___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init
[] = "reachable_as_init::ReachableAsInitAnalysis::is_method_reachable_as_init";
200 val_t
global___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init(val_t p0
, val_t p1
, val_t p2
){
201 struct {struct stack_frame_t me
;} fra
;
203 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
204 fra
.me
.file
= LOCATE_global___reachable_as_init
;
206 fra
.me
.meth
= LOCATE_global___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init
;
207 fra
.me
.has_broke
= 0;
209 fra
.me
.nitni_local_ref_head
= NULL
;
210 /* global/reachable_as_init.nit:49 */
211 nit_abort("Deferred method called", NULL
, LOCATE_global___reachable_as_init
, 49);
212 stack_frame_head
= fra
.me
.prev
;
215 static const char LOCATE_global___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init
[] = "reachable_as_init::DefaultReachableAsInitAnalysis::(reachable_as_init::ReachableAsInitAnalysis::is_method_reachable_as_init)";
216 val_t
global___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init(val_t p0
, val_t p1
, val_t p2
){
217 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
221 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
222 fra
.me
.file
= LOCATE_global___reachable_as_init
;
224 fra
.me
.meth
= LOCATE_global___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init
;
225 fra
.me
.has_broke
= 0;
227 fra
.me
.nitni_local_ref_head
= NULL
;
228 fra
.me
.REG
[0] = NIT_NULL
;
229 fra
.me
.REG
[1] = NIT_NULL
;
230 fra
.me
.REG
[2] = NIT_NULL
;
234 /* global/reachable_as_init.nit:56 */
235 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
236 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
237 if (UNTAG_Bool(REGB0
)) {
238 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
239 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
244 if (UNTAG_Bool(REGB0
)) {
248 /* global/reachable_as_init.nit:57 */
253 stack_frame_head
= fra
.me
.prev
;
256 static const char LOCATE_global___reachable_as_init___DefaultReachableAsInitAnalysis___init
[] = "reachable_as_init::DefaultReachableAsInitAnalysis::init";
257 void global___reachable_as_init___DefaultReachableAsInitAnalysis___init(val_t p0
, int* init_table
){
258 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___reachable_as_init___DefaultReachableAsInitAnalysis
].i
;
259 struct {struct stack_frame_t me
;} fra
;
261 if (init_table
[itpos0
]) return;
262 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
263 fra
.me
.file
= LOCATE_global___reachable_as_init
;
265 fra
.me
.meth
= LOCATE_global___reachable_as_init___DefaultReachableAsInitAnalysis___init
;
266 fra
.me
.has_broke
= 0;
268 fra
.me
.nitni_local_ref_head
= NULL
;
269 fra
.me
.REG
[0] = NIT_NULL
;
271 stack_frame_head
= fra
.me
.prev
;
272 init_table
[itpos0
] = 1;