update NOTICE and LICENSE
[nit.git] / c_src / dead_method_removal._sep.c
1 /* This C file is generated by NIT to compile module dead_method_removal. */
2 #include "dead_method_removal._sep.h"
3 val_t dead_method_removal___Program___nb_removed_iroutines(val_t p0){
4 struct {struct stack_frame_t me;} fra;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_dead_method_removal;
9 fra.me.line = 23;
10 fra.me.meth = LOCATE_dead_method_removal___Program___nb_removed_iroutines;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 /* ./analysis//dead_method_removal.nit:23 */
16 REGB0 = TAG_Bool(ATTR_dead_method_removal___Program____nb_removed_iroutines(fra.me.REG[0])!=NIT_NULL);
17 if (UNTAG_Bool(REGB0)) {
18 } else {
19 nit_abort("Uninitialized attribute %s", "_nb_removed_iroutines", LOCATE_dead_method_removal, 23);
20 }
21 REGB0 = ATTR_dead_method_removal___Program____nb_removed_iroutines(fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return REGB0;
24 }
25 val_t dead_method_removal___Program___nb_not_removed_iroutines(val_t p0){
26 struct {struct stack_frame_t me;} fra;
27 val_t REGB0;
28 val_t tmp;
29 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
30 fra.me.file = LOCATE_dead_method_removal;
31 fra.me.line = 24;
32 fra.me.meth = LOCATE_dead_method_removal___Program___nb_not_removed_iroutines;
33 fra.me.has_broke = 0;
34 fra.me.REG_size = 1;
35 fra.me.REG[0] = NIT_NULL;
36 fra.me.REG[0] = p0;
37 /* ./analysis//dead_method_removal.nit:24 */
38 REGB0 = TAG_Bool(ATTR_dead_method_removal___Program____nb_not_removed_iroutines(fra.me.REG[0])!=NIT_NULL);
39 if (UNTAG_Bool(REGB0)) {
40 } else {
41 nit_abort("Uninitialized attribute %s", "_nb_not_removed_iroutines", LOCATE_dead_method_removal, 24);
42 }
43 REGB0 = ATTR_dead_method_removal___Program____nb_not_removed_iroutines(fra.me.REG[0]);
44 stack_frame_head = fra.me.prev;
45 return REGB0;
46 }
47 void dead_method_removal___Program___optimize_dead_methods(val_t p0){
48 struct {struct stack_frame_t me;} fra;
49 val_t tmp;
50 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
51 fra.me.file = LOCATE_dead_method_removal;
52 fra.me.line = 26;
53 fra.me.meth = LOCATE_dead_method_removal___Program___optimize_dead_methods;
54 fra.me.has_broke = 0;
55 fra.me.REG_size = 1;
56 fra.me.REG[0] = NIT_NULL;
57 fra.me.REG[0] = p0;
58 CALL_program___Program___with_each_iroutines(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_dead_method_removal___Program___optimize_dead_methods_1));
59 stack_frame_head = fra.me.prev;
60 return;
61 }
62 void OC_dead_method_removal___Program___optimize_dead_methods_1(struct stack_frame_t *closctx, val_t p0, val_t p1){
63 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
64 val_t REGB0;
65 val_t REGB1;
66 val_t tmp;
67 /* ./analysis//dead_method_removal.nit:29 */
68 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
69 fra.me.file = LOCATE_dead_method_removal;
70 fra.me.line = 29;
71 fra.me.meth = LOCATE_dead_method_removal___Program___optimize_dead_methods;
72 fra.me.has_broke = 0;
73 fra.me.REG_size = 3;
74 fra.me.REG[0] = NIT_NULL;
75 fra.me.REG[1] = NIT_NULL;
76 fra.me.REG[2] = NIT_NULL;
77 fra.me.REG[0] = p0;
78 fra.me.REG[1] = p1;
79 /* ./analysis//dead_method_removal.nit:30 */
80 fra.me.REG[2] = CALL_reachable_method_analysis___Program___rma(closctx->REG[0])(closctx->REG[0]);
81 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
82 if (UNTAG_Bool(REGB0)) {
83 nit_abort("Reciever is null", NULL, LOCATE_dead_method_removal, 30);
84 }
85 REGB0 = CALL_reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
86 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
87 if (UNTAG_Bool(REGB0)) {
88 /* ./analysis//dead_method_removal.nit:31 */
89 CALL_dead_method_removal___IRoutine___set_not_reachable(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
90 /* ./analysis//dead_method_removal.nit:32 */
91 REGB0 = CALL_dead_method_removal___Program___nb_removed_iroutines(closctx->REG[0])(closctx->REG[0]);
92 REGB1 = TAG_Int(1);
93 /* ./../lib/standard//kernel.nit:215 */
94 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
95 /* ./analysis//dead_method_removal.nit:32 */
96 ATTR_dead_method_removal___Program____nb_removed_iroutines(closctx->REG[0]) = REGB1;
97 } else {
98 /* ./analysis//dead_method_removal.nit:34 */
99 REGB1 = CALL_dead_method_removal___Program___nb_not_removed_iroutines(closctx->REG[0])(closctx->REG[0]);
100 REGB0 = TAG_Int(1);
101 /* ./../lib/standard//kernel.nit:215 */
102 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
103 /* ./analysis//dead_method_removal.nit:34 */
104 ATTR_dead_method_removal___Program____nb_not_removed_iroutines(closctx->REG[0]) = REGB0;
105 }
106 stack_frame_head = fra.me.prev;
107 return;
108 }
109 void dead_method_removal___Program___dump_dead_method_optimization(val_t p0, val_t p1){
110 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
111 val_t REGB0;
112 val_t tmp;
113 static val_t once_value_1; /* Once value */
114 static val_t once_value_2; /* Once value */
115 static val_t once_value_3; /* Once value */
116 static val_t once_value_4; /* Once value */
117 static val_t once_value_5; /* Once value */
118 static val_t once_value_6; /* Once value */
119 static val_t once_value_7; /* Once value */
120 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
121 fra.me.file = LOCATE_dead_method_removal;
122 fra.me.line = 39;
123 fra.me.meth = LOCATE_dead_method_removal___Program___dump_dead_method_optimization;
124 fra.me.has_broke = 0;
125 fra.me.REG_size = 4;
126 fra.me.REG[0] = NIT_NULL;
127 fra.me.REG[1] = NIT_NULL;
128 fra.me.REG[2] = NIT_NULL;
129 fra.me.REG[3] = NIT_NULL;
130 fra.me.REG[0] = p0;
131 fra.me.REG[1] = p1;
132 /* ./analysis//dead_method_removal.nit:41 */
133 REGB0 = TAG_Int(5);
134 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
135 if (!once_value_1) {
136 fra.me.REG[3] = BOX_NativeString("");
137 REGB0 = TAG_Int(0);
138 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
139 once_value_1 = fra.me.REG[3];
140 register_static_object(&once_value_1);
141 } else fra.me.REG[3] = once_value_1;
142 fra.me.REG[3] = fra.me.REG[3];
143 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
144 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
145 if (!once_value_2) {
146 fra.me.REG[1] = BOX_NativeString("/");
147 REGB0 = TAG_Int(1);
148 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
149 once_value_2 = fra.me.REG[1];
150 register_static_object(&once_value_2);
151 } else fra.me.REG[1] = once_value_2;
152 fra.me.REG[1] = fra.me.REG[1];
153 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
154 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
155 fra.me.REG[1] = CALL_abstractmetamodel___MMModule___name(fra.me.REG[1])(fra.me.REG[1]);
156 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
157 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
158 if (!once_value_3) {
159 fra.me.REG[1] = BOX_NativeString(".dmr_opt.log");
160 REGB0 = TAG_Int(12);
161 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
162 once_value_3 = fra.me.REG[1];
163 register_static_object(&once_value_3);
164 } else fra.me.REG[1] = once_value_3;
165 fra.me.REG[1] = fra.me.REG[1];
166 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
167 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
168 fra.me.REG[2] = NEW_OFStream_file___OFStream___open(fra.me.REG[2]);
169 /* ./analysis//dead_method_removal.nit:43 */
170 REGB0 = TAG_Int(3);
171 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
172 if (!once_value_4) {
173 fra.me.REG[3] = BOX_NativeString("Nb. dead iroutines removed: ");
174 REGB0 = TAG_Int(28);
175 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
176 once_value_4 = fra.me.REG[3];
177 register_static_object(&once_value_4);
178 } else fra.me.REG[3] = once_value_4;
179 fra.me.REG[3] = fra.me.REG[3];
180 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
181 REGB0 = CALL_dead_method_removal___Program___nb_removed_iroutines(fra.me.REG[0])(fra.me.REG[0]);
182 fra.me.REG[3] = CALL_string___Object___to_s(REGB0)(REGB0);
183 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
184 if (!once_value_5) {
185 fra.me.REG[3] = BOX_NativeString("\n");
186 REGB0 = TAG_Int(1);
187 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
188 once_value_5 = fra.me.REG[3];
189 register_static_object(&once_value_5);
190 } else fra.me.REG[3] = once_value_5;
191 fra.me.REG[3] = fra.me.REG[3];
192 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
193 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
194 CALL_stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
195 /* ./analysis//dead_method_removal.nit:44 */
196 REGB0 = TAG_Int(3);
197 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
198 if (!once_value_6) {
199 fra.me.REG[3] = BOX_NativeString("Nb. live iroutines: ");
200 REGB0 = TAG_Int(20);
201 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
202 once_value_6 = fra.me.REG[3];
203 register_static_object(&once_value_6);
204 } else fra.me.REG[3] = once_value_6;
205 fra.me.REG[3] = fra.me.REG[3];
206 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
207 REGB0 = CALL_dead_method_removal___Program___nb_not_removed_iroutines(fra.me.REG[0])(fra.me.REG[0]);
208 fra.me.REG[0] = CALL_string___Object___to_s(REGB0)(REGB0);
209 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
210 if (!once_value_7) {
211 fra.me.REG[0] = BOX_NativeString("\n");
212 REGB0 = TAG_Int(1);
213 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
214 once_value_7 = fra.me.REG[0];
215 register_static_object(&once_value_7);
216 } else fra.me.REG[0] = once_value_7;
217 fra.me.REG[0] = fra.me.REG[0];
218 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
219 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
220 CALL_stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
221 /* ./analysis//dead_method_removal.nit:46 */
222 CALL_stream___IOS___close(fra.me.REG[2])(fra.me.REG[2]);
223 stack_frame_head = fra.me.prev;
224 return;
225 }
226 void dead_method_removal___IRoutine___set_not_reachable(val_t p0, val_t p1){
227 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
228 val_t REGB0;
229 val_t tmp;
230 static val_t once_value_1; /* Once value */
231 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
232 fra.me.file = LOCATE_dead_method_removal;
233 fra.me.line = 51;
234 fra.me.meth = LOCATE_dead_method_removal___IRoutine___set_not_reachable;
235 fra.me.has_broke = 0;
236 fra.me.REG_size = 3;
237 fra.me.REG[0] = NIT_NULL;
238 fra.me.REG[1] = NIT_NULL;
239 fra.me.REG[2] = NIT_NULL;
240 fra.me.REG[0] = p0;
241 fra.me.REG[1] = p1;
242 /* ./analysis//dead_method_removal.nit:53 */
243 fra.me.REG[0] = NEW_ICodeBuilder_icode_builder___ICodeBuilder___init(fra.me.REG[1], fra.me.REG[0]);
244 /* ./analysis//dead_method_removal.nit:54 */
245 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
246 fra.me.REG[1] = CALL_icode_base___ISeq___icodes(fra.me.REG[1])(fra.me.REG[1]);
247 CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[1])(fra.me.REG[1]);
248 /* ./analysis//dead_method_removal.nit:55 */
249 REGB0 = TAG_Int(0);
250 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
251 if (!once_value_1) {
252 fra.me.REG[2] = BOX_NativeString("This method should not be called !");
253 REGB0 = TAG_Int(34);
254 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
255 once_value_1 = fra.me.REG[2];
256 register_static_object(&once_value_1);
257 } else fra.me.REG[2] = once_value_1;
258 fra.me.REG[2] = fra.me.REG[2];
259 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
260 CALL_icode_builder___ICodeBuilder___add_abort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
261 stack_frame_head = fra.me.prev;
262 return;
263 }